Since their inception, computers have played an increasingly important role in today’s society. Advancements in technology have enabled computers to become faster and cheaper. Today, the majority of families own a home computer that is vastly more powerful than giant mainframes of years gone by. Computer hardware has been evolving rapidly with no end in sight, and with all of the advancements in computer hardware come advancements in computer software; gone are the days when FORTRAN and COBOL were the languages of choice. Today,vvv two hot new object oriented programming languages have entered the computer programming arena, Java and C++, this paper will examine the similarities and differences between these new languages.
Both Java and C++ are object oriented programming languages, but what does that mean? Object oriented programming (OOP) emphasizes data, instead of algorithms for solving problems. Instead of trying to fit a problem to the procedural approach of a language, OOP attempts to fit the language to the problem, in other words, OOP is structured to produce an answer without changing the question. Object oriented programming involves two separate parts, class and objects. Class is a specification that describes a new data form, it is a template that defines how an object will look and behave.(Kaj 1996, 8) An object is that particular data structure constructed using the parameters defined by class.(Prata 1995, 5)
The object oriented programming approach to program design is to first design classes that accurately represent those things with which the program deals. A drawing program, for example, might define classes to represent rectangles, lines, circles, brushes, pens, and the like. The class definitions, recall, include a descriptions of permissible options for each class, such as moving a circle or rotating a line.(Prata 1995, 5)
The main advantages of OOP, besides being able to create more complex software, and develop answers without changing the questions, are numerous. OOP facilitates creating reusable code, which can save a lot of work. Information can be hidden to safeguard data from improper access. Polymorphism lets the programmer create multiple definitions for operators and functions, with the programming context determining which definition is used, also Inheritance lets the programmer derive new classes from older ones. When using OOP, the programmer can focus on representing concepts, instead of concentrating on tasks. (Prata 1995, 6)
Java, although in many respects similar to C++, is actually just a more simplified version of the latter. Java has a C++ like syntax, but it is more purely object oriented, also, memory management, which can be a problem with C++, is no longer a factorwith Java, due to the fact that Java incorporates a built in garbage collector, which makes it unnecessary to explicitly free allocated memory.(Kaj 1996, 1) Another difference is that Java, unlike C++, does not contain pointers.(http://www.ftc.nrcs.usda.gov/devtools/java/java/noMoreC/index.html) (A pointer is a variable that tells a computer where data is placed.)(Prata 1995, 93) Java does not have an explicit pointer type, instead, it does passes all arrays (information entered into the program and stored in memory) and objects by reference,(http://www.ftc.nrcs.usda.gov/devtools/java/java/noMoreC/index.html) meaning that the objects or arrays in question have been defined elsewhere in the program, and the programmer does not have to keep pointing out wh
ere that information is stored. Since Java does not contain pointers, struct and union (two C++ favorites) are not part of the language because they rely on pointers to function.(http://www.ftc.nrcs.usda.gov/devtools/java/java/noMoreC/index.html)
Java differs from C++ in other ways too, command line arguments that are passed to a Java application are different in number and type than those passed to a C or C++ program. For example, when someone starts a C++ program, the system passes two parameters to it: argc- the number of arguments in the command line, and argv- a pointer to an array of strings that contain the arguments. When a Java application is started, the system passes only one parameter, args- an array of Strings (not a pointer to an array) that contain arguments.http://www.ftc.nrcs.usda.gov/devtools/java/java/noMoreC/index.html Speaking of strings, (A string is a series of characters, much like a sentence.)(Prata 1995, 8), they are different in Java. In C++, strings are stored in arrays, in Java strings are treated as their own objects, and do not have to be stored and recalled from a certain place.
Java and C++ each have their own advantages. C++ is viewed as a solid, mature, mainstream tool, and it has widespread industry support making it “good’ from a business perspective. There are countless numbers of companies and government sites that make use of C++, and the number of C++ developers doubles every year. From a business perspective, C++ has many benefits. First, it has a huge installed base, which means there will be multi vendor support for tools, environments, consulting services, etc. C++ is also becoming standardized, there are American and international groups working closely with each other to develop a standard C++ language.(http://www.ftc.nrcs.usda.gov/devtools/java/java/noMoreC/index.html)
Java, on the other hand is it’s own set of benefits. The purely object oriented nature of C++ has enabled the developers of Java to remove language features that can cause security problems or impose ambiguities in the code. One of the biggest benefits of Java is the fact that it is machine independent. Java is compiled into a machine independent byte
code. The byte code is then interpreted by a virtual machine running on the host computer. This is what makes Java so attractive for web authoring, browsers like Netscape can execute Java programs by interpreting the bytecode, regardless of what type of machine the browser is running on.
There is currently a large debate going on over whether Java is all that it is cracked up to be. Some say that Java is a wonder language that will eventually support it’s own platform and leave the Windows OS in the dust. There are others that say Java not nearly as good as everyone says it is, and besides some nifty web applets, Java is not very useful. These people should bear in mind that Java is relatively new, and not too many software developers have started using it. If Java can live up to it’s potential as a truly object oriented programming language, it could change the face of computing as we know it. C++, on the other hand, has been around for a little while and is currently very integrated into the computer community. Just about everyone agrees that C++ is useful and although it may not be the best object oriented programming language out there, it is certainly here to stay.
Bibliography
1. Prata, Stephen. C++ Primer Plus, second edition. Corte Madera, CA: The Waite Group, 1995.
2. Nygren, Kaj. “Java Course Notes.” Reading material for the 1996 MMS course, 1996 http://media.it.kth.se/mms/java/CourseDoc.html
3. “How C, C++, and Java Differ.” 1996 http://www.ftc.nrcs.usda.gov/devtools/java/java/noMoreC/index.html
4. http://www.surinam.net/java/java.html
5. Baer, David M. “Love it, C/C++, hate it: I love it’s portability.” Computerworld 23 October, 1995: 116-119.
6. Smalley Bowen, Ted. “Java’s for real.” Infoworld 4 November, 1996: 1-3.