Overloading Operations

INTRODUCTION

The main objective of this small article is to provide an introduction about operators in Java, the possibility of overloading operators and method overloading.

OVERLOADING OPERATORS

Operators in programming languages are used to assign, and calculate a math expression, for instance. The usual Java operators are: + – * / for addition, subtraction, multiplication, and division. The Java language also offers also shortcuts like +=, for instance.

Actually Java does not support overloading with operators with objects. That means, you can’t use the following expression:

ademir1

Figure 1 Operator overloading in Java

The most close to an operator overloading is the possibility of using the + operator to concatenate Strings.

ademir2

Figure 2 String concatenation in Java

METHOD OVERLOADING

Method overloading is the possibility of two of more methods to have the same names in a class. In Java, you may specify the same name for methods, however using a different argument list, in terms of quantity of parameters or the type of the argument.

The method signature can be defined as The name of a method and the list of parameter types in the heading of the method definition is called the method signature.The signature of a method consists of the method name and the list of types for parameters that are listed in the heading of the method name”. (Savitch, 2013).The code below shows the overloading of the method setDate:

ademir5

Figure 3 Illustration of method overloading written using the Java Programming Language

CONCLUSION

I personally believe the possibility of String concatenation using the Java language is something trivial for a programming language and it is implemented as expected, however in Java, I don’t think the operand of concatenating objects would be a good resource in terms of the search for being semantically clean. The overriding method possibility is such a good resource in terms of producing APIs and the extensibility is such a good resource to be pointed.

REFERENCES

Savitch, W, 2013. Absolute Java. 5th ed. USA: Pearson.

Horstmann & Cornell, 2008. Core Java – Volume 1 fundamentals. 8th ed. California, USA: Sun Microsystems Press.

Continue reading Overloading Operations

Comparing Objects in Java

THE COMPARISON OPERATOR

The Java programming language offer some operators to assign, compare and execute math operations. Considering the object of study in this paper, the operator ”==’ is used in the Java language in order to compare only primitive objects. For instance, if you execute the procedure ‘2 == 2’ or ‘2d == 2d’, the result will be simply TRUE, because both of the operations use primitive types in Java. In the case of using object comparisons, the operator ‘==’ will not be a good resource to use, except if you are trying to compare whether the object references in the memory are the aspect in the comparison subject.

COMPARING OBJECTS IN JAVA

To compare objects in Java, the $object.equal method is available in all the java object classes, including Strings, which in Java , String is a class, not a primitive type. The String class is part the JSE library, and it is accessible by any Java program.

One very interesting thing in Java s about Strings. A good illustration, according to Horstman & Cornell, 2008:

String greeting = "Hello"; //initialize greeting to a string
 if (greeting == "Hello") . . .
 // probably true
 if (greeting.substring(0, 3) == "Hel") . . .
 // probably false

“If the virtual machine would always arrange for equal strings to be shared, then you could use the == operator for testing equality. But only string constants are shared, not strings that are the result of operations like + or substring” (SANCHEZ & CANTON, 2002).

CONCLUSION

In spite of Java to have its particularities, I personally believe the way the Strings and comparison in Java are a good and extensible way of implementing it. Programmers are able to override the equals method, in order to define what really is equality for their own objects and the language offers many ways and possibilities in order to provide good performance when using comparison between primitives and objects.

REFERENCES

Horstmann & Cornell, 2008. Core Java – Volume 1 fundamentals. 8th ed. California, USA: Sun Microsystems Press.

SANCHEZ & CANTON, 2002. Java programming for engineers. 1st ed. Florida, USA: CRC Press LLC.

Pointers in C++ vs References in Java

INTRODUCTION

The objective of this small article is to give an introduction about the pointers subject considering the C/C++ programming language, give an introduction how it is implemented with the Java programming language and a conclusion of why pointers are not implemented in Java as it is in c++.

THE COMPUTER MEMORY

According to Hubbard, 2000, the computer memory can be imagined as an object formed by cells, which can be compared to a large array of bytes. A computer with 256mb of RAM (random access memory) for instance, may be represented as the image below:

memory1

The image on the left illustrate a computer memory starting from 0 to 268,435,455, which is commonly represented as 0x00000000 to 0x0fffffff.

Considering the declaration of the variable ‘n’ as:

int n;

And supposing it is stored at the address of 0x0064fdf0, this can be illustrated as:

memory2

The variable will occupy 4 bytes of memory, considering 0x0064fdf0, 0x0064fdf1, 0x0064fdf2, and 0x0064fdf3 (considering in C++ int types occupies 4 bytes of memory).

Considering the variable n = 44, the representation looks like:

memory3

According to Prinz & Crawford, 2006, “a pointer is a reference to a data object or a function. Pointers have many uses: defining “call-by-reference” functions, and implementing dynamic data structures such as chained lists and trees, to name just two examples.”

Basically in C++ you can declare a pointer using the following syntax:

int *iPointer; // this line declares iPointer as a pointer to int

In declarations, the asterisk (*) means “pointer to.” (Prinz & Crawford, 2006).

What happens with a pointer, is that you may reference the same area of the memory to the address, and so you are able to use the same area of the memory with a different variable, or even passing the reference, which will simply means you are working with the same area of the memory.

If you want a pointer to point to another area of the memory, you just need to use the &, which means “reference to”

iPointer = &iVariable;

The code above give the instruction of the variable iPointer to reference the area of memory of &iVariable.

POINTERS IN JAVA

Java is intended for writing programs that must be reliable in a variety of ways. According to Horstmann and Cornell, 2008, “Java puts a lot of emphasis on early checking for possible problems, later dynamic (runtime) checking, and eliminating situations that are error-prone”. One of the big differences between Java and C++ is that Java has a pointer model that eliminates the possibility of overwriting memory and corrupting data, taking off the power of the programmer in making mistakes what results in a more security and efficient programming language.

That means you cannot explicitly point to another area of the memory in Java, on the other hand there are ways which you can reference objects in Java, taking advantage of the same instance in memory, however by using the language standards.

REFERENCES IN JAVA

Object instances in Java are stored in the memory of the Java Virtual Machine. For instance, when declaring the variable car below and making a new instance of the object, as seen below, a new reference in the memory will be allocated to store this object.

Car car = new Car();

In the case, of referencing the same object, as below:

Car car2 = car;

The reference to the car will be shared, and so, both car and car2 will point to the same area in the memory. This is the basically the way the Java programming language implements referencing.

CONCLUSION

Pointers are a powerful resource programmers may use to take advantage of many resources, however, the responsibility of dealing with the computer memory directly is not a resource a language which looks to be simple and security may implement. In my point of view, for languages such as C and C++, pointers and references are trivial. However, considering the kind of application Java looks to provide and implement, which are mostly Enterprise and final user applications, the resource of having direct access and control over the memory is not crucial and may lead to more secure and stable applications.

REFERENCES

Hubbard, J. R., 2000. Programming with C++. 2nd ed. USA: McGraw-Hill.

Prinz & Crawford, 2006. C in a Nutshell. 1st ed. California, USA: O’Reilly Media.

Horstmann & Cornell, 2008. Core Java – Volume 1 fundamentals. 8th ed. California, USA: Sun Microsystems Press.

The Java vs Ruby Programming Languages

INTRODUCTION

The main objective of this small article is to introduce the Java and Ruby programming languages, starting by a bit of history, the language characteristics, comparison between the two programming languages and to finish, a conclusion.

THE JAVA PROGRAMMING LANGUAGE

Java is a very similar language to C and C++, therefore with a huge difference: it was made to be platform independent (you may possibly heard of the slogan “write once, run anywhere”). The Java Technology project lead by James Gosling in the early 1990s, was a tech project which was looking to control electronic devices such as TV and cell phones. The first name was Oak, and after some years the name was changed to Green and afterward Java, the famous name which is kept until today. (Sanchez & Canton, 2002).

Computers just operate code inputs which are commands given to the machine to tell it what do do, so if you consider a machine just operate with codes, how does a computer operate? The answer is basically with programmed code, which is written in a specific language by a software developer or engineer. Java is a high-level programming language, which means it is closer to a natural language (such as English), different from the machine language which is noted with 0s and 1s, or if your prefer, the binary system. (Russell, J. P, 2001).

Some of the characteristics of the Java Programming Language are:

  • Platform-independent;

  • Object-oriented;

  • Multi-threaded;

  • It has no pointers;

  • Automatic memory management, also called Garbage Collector;

  • It doesn’t support multi-inheritance;

  • Exception handling.

THE RUBY PROGRAMMING LANGUAGE

Ruby is a multi-platform interpreted language, very similar to Pearl and Python. Its syntax at first sight may look like Pascal, and it is a pure object oriented language. The language was created by Yukihiro Matsumoto (a.k.a Matz), and it was first released in 1999 (Collingbourne, H., 2011).

Some of the characteristics of the Ruby Programming Language are:

  • Simple syntax;

  • Pure” Object-Oriented Language;

  • Operator overloading;

  • Exception handling;

  • Iterators and closures;

  • Garbage collection;

  • Multi-platform.

COMPARING JAVA VS RUBY

The table below show some of the features the Java Language has versus some of the features the Ruby language has. There it follows:

JAVA

RUBY

SIMPLE SINTAX

X

EXCEPTION HANLDING

X

X

MULTI-PLATFORM

X

X

COMPILED

X

GARBE COLLECTOR

X

X

STRONG TYPED

X

X

OPERATOR OVERLOADING

X

100% OBJECT ORIENTED

X

DYNAMIC TYPED

X

Table 1 Comparison of the Java and the Ruby Programming Languages.

CONCLUSION

I personally believe both Java and Ruby are both modern programming languages. In spite of Ruby appear to support more dynamic features and look simpler / modern, Java is still one of the most reliable technologies in terms of security, scalability and it widely known as a very robust technology. Today, billions of devices run Java though the Android platform and also millions of frameworks are available at the Java community in order to provide resources for developers to do not need to “reinvent the wheel”.

REFERENCES

SANCHEZ & CANTON, 2002. Java programming for engineers. 1st ed. Florida, USA: CRC Press LLC.

Russell, Joseph P., 2001. Java Programming for the absolute beginner. 1st ed. California, USA: Prima Tech.

Collingbourne, H, 2011. The book of Ruby : a hands-on guide for the adventurous. 1st ed. California, USA: Starch Press.

Bring your own Device

INTRODUCTION

The objective of this small article is to give an introduction about the BYOD – Bring Your Own Device concept, analyze advantages and disadvantages of using this model and my personal insight about the subject.

WHAT IS BYOD?

BYOD is an acronym for Bring Your Own Device, which is basically a new concept where the employee of a company bring their own devices to work. This is defined by IBM as “an IT policy where employees are allowed or encouraged to use their personal mobile devices—and, increasingly, notebook PCs—to access enterprise data and systems.” (IBM, 2016). This may be achieved by a company providing aid to the costs or the employee to provide their own resources.

ADVANTAGES OF BYOD

  • Employers may feel more comfortable and even more productive since he has a very nice feeling of comfort using their own devices;

  • Costs are reduced and machines are used;

DISADVANTAGES OF BYOD

  • Support is always a challenge, since many kinds of devices will need different approaches;

  • Security is the most challenging thing when using this (this is stated in the following section);

SECURITY CONCERNS IN BYOD

According to CRN.com, 2016, the 10 top security concerns using BYOD are:

  • Jail Braking are Rooted devices are threats to security;

  • Restrictions can be bypassed – Access to the corporation data;

  • Vulnerable software – Users may use outdated software;

  • Open access to wireless access points;

  • Open access to e-mail;

  • Adware and Spyware are threats to network and the company;

  • Too many permissions;

  • Cloud drives may lead to data leaks (Dropbox, OneDrive);

  • Android malware is rising and the platform is becoming more unsecure;

  • Devices can be lost or stolen;

CONCLUSION

Technology is changing, people are changing and one of the key things of BYOD is Green IT. I personally believe the use of resources must be optimized in such manner we have more sensibility for our natural resources and also the way the financial resources are spent in thousands of computers and the waste of resources. The subject of removing the responsibility of the company to provide devices for the users, is a bit more complicated, however if we think about resources optimization, this can be good strategy.

REFERENCES

IBM BYOD – Bring Your Own Devices. 2016. IBM. [ONLINE] Available at: http://www.ibm.com/mobilefirst/us/en/bring-your-own-device/byod.html. [Accessed 22 February 2016].

Top 10 BYOD Risks Facing The Enterprise. CRN. [ONLINE] Available at: http://www.crn.com/slide-shows/security/240157796/top-10-byod-risks-facing-the-enterprise.htm/. [Accessed 22 February 2016].

Security in Social Media

INTRODUCTION

The objective of this is small article is to reflect and give a point of view of who is responsible for the information from the social media, analyze who owns data, what people must me aware of sharing, implications and a conclusion for the subject and the reflections given.

WHO OWNS THE INFORMATION

Every day millions of people share their information in social network websites and the question that comes out is, who owns the information shared?

Instagram is a good example to use. This is stated that:

People in the Instagram community own their photos, period. On the platform, if someone feels that their copyright has been violated, they can report it to us and we will take appropriate action. Off the platform, content owners can enforce their legal rights.” (The Washington Post, 2015).

That means, it someone copy your pictures on the platform, you can ask support or rights, but if someone steal your pictures and use off the platform, Instagram not really can help you, and you should look for your rights on your own.

instagram-480x300

Figure 1 Instagram data exposed to an exhibition (The Washington Post, 2015)

SECURITY OF THIS INFORMATION

The question of data security in social networks is a point which needs to be cared carefully, specially because there are thousands of sensible data and this information is really valuable and sensible.

People just need to be aware that what is posted on the internet will be stored forever. One good example of that is the Internet Wayback Macine, which stores billions of internet pages over years and years (The Internet Wayback Machine, 2016).

google-480x300

Figure 1 Google WebPage in 1999 (The Internet Wayback Machine, 2016).

CONCLUSION

People need to be careful with what is shared on the internet. As the instagram examples given, there are uncountable amount of data which very relevant and important from users, and everyone need to be aware of what is happening on the internet today.

REFERENCES

A reminder that your Instagram photos aren’t really yours. 2016. The Washington Post. [ONLINE] Available at: https://www.washingtonpost.com/news/arts-and-entertainment/wp/2015/05/25/a-reminder-that-your-instagram-photos-arent-really-yours-someone-else-can-sell-them-for-90000/. [Accessed 21 February 2016].

Internet Archive: Wayback Machine. 2016. Internet Archive: Wayback Machine. [ONLINE] Available at: https://archive.org/web/. [Accessed 21 February 2016].

Personal Information and Privacy on the Internet today

INTRODUCTION

The main objective of this small article is to give my point of view on internet privacy and stolen information.

PERSONAL DATA AND INFORMATION

This is not new for a computer professional that conversations and information can be stolen on many ways which may be using technical flaws, the insecurity of the internet protocols, networks resources, and others.

The revelation of Edward Snowden of people being monitored by the CIA and NSA, brought up to the internet users, the alert of being aware of what is shared on the internet. Edward Snowden considered one of the most extraordinary delators of the History. Never before someone revealed such quantity of secret files of the more powerful intelligence institution of the world, in order to make it public. And that is what he did (Harding, 2014).

WAYS TO STORE DATA

Today, there are many ways of storing such big quantity of information about users and make it to use with business intelligence, data mining and many others techniques. The list below shows some of them:

  • Hadoop: It is an open-source software framework for storing data and running applications on clusters of commodity hardware. It provides massive storage for any kind of data, enormous processing power and the ability to handle virtually limitless concurrent tasks or jobs” (SAS, 2016).

  • NoSQL Databases: A new way of storing data in a document oriented, key/value or graphs models. This new database paradigm brings the possibility of storing high quantity of data and information using a horizontal approach in instead of verticalization, which is very common in relational databases (Sadalage, 2012).

WHO CAN AND HOW INFORMATION CAN BE ACCESSED

The confidentiality of stored user information and who can access it is very sensible. There are thousands of robots running on the internet today and getting many information from websites. You may one day received an unknown contact request on skype or facebook, I personally believe this is one way of the robots to access your personal information and store in pirate databases, which may be used for privilege of others.

In spite of sensible data to be guaranteed by big corporations such as Facebook and Google, for instance, there is always the possibility of this data to be stolen and published or kept with hackers and bad intentioned people.

CONCLUSION

Today, we need to be careful with what kind of data we share on the internet, be very careful with sensible information and beware of unknown contacts and relationships on the internet. I recommend people to usually change credit card numbers and do not make it available personal account data on untrusted websites.

REFERENCES

Harding, L., 2014. The Snowden Files. 1st ed. London: The Guardian Books.

What is Hadoop?. 2016. SAS. [ONLINE] Available at: http://www.sas.com/en_us/insights/big-data/hadoop.html. [Accessed 14 February 2016].

Sadalage, P. J., 2012. NoSQL Distilled. 1st ed. USA: Addison-Wesley.