The Evolution of Object-Oriented Languages, Page 3
Java is not compiled and linked into native code like C++ or VB6. Java is compiled into bytecodes and then interpreted by the JVM. Thus, any platform that has a JVM can run Java bytecodes. C# (all of .NET) has a model using a platform called the Common Language Runtime (CLR).
This claim is a bit more dubious than the others. Early on, the rap against Java was that it was slow. Performance has improved; however, sometimes programmers need to write code in another language for performance reasons. For example, you may need to write a routine in C++ to write to a specific device driver and call it from your Java code. However, this breaks the Java model, so you no longer have a pure Java application.
You also can take the Java code and use features like just-in-time compilers to transform the Java bytecodes into platform-dependent native code for efficiency purposes.
Multithreading allows one program to do more than one thing at a time. (This is not to be confused with multiprocessing.) Multithreading leads to more real-time responsiveness from an application. However, in many languages multithreading is very complicated. Java makes multithreading much easier to manage.
Classes in Java are loaded dynamically, not linked into executables. Thus, finding runtime information is much easier. It also facilitates the loading of classes over networks.
Java greatly benefited from the lessons learned by the designers of C++. It is easy to look at Java and marvel at its elegance, but C++ did not have Java's advantage of hindsight. In fact, one of the primary reasons that Java has gained the popularity that it has is a direct result of its lineage from C++. C and C++ programmers can use Java without having to learn a new syntax.
What language will be the next hot topic in the O-O arena? Of course, there is no way to predict the future. The market acceptance for Smalltalk, C++, Java, and .NET has thrust O-O development into the mainstream. Thus, there is sure to be more research in the areas of O-O technologies. Acceptance of a new language, whether O-O or not, is not a quick process. However, it will be interesting to see what new and improved language will give the current set of widely used languages a run for its money in the next 5 to 10 years.
Sun Microsystems: The Java Language: An Overview. java.sun.com/docs/overviews/java/java-overview-1.html.
Khoshafian, Setrag, and Razmik Abnous: Object Orientation. Wiley, 1995.
Stroustrup, Bjarne: The Design and Evolution of C++. Addison-Wesley, 1994.
About the Author
Matt Weisfeld is an Assistant Professor at Cuyahoga Community College (Tri-C) in Cleveland, Ohio. Matt is a part of the Information Technology department, teaching programming languages such as C++, Java, and C# .NET as well as various Web technologies. Prior to joining Tri-C, Matt spent 20 years in the information technology industry gaining experience in software development, project management, business development, corporate training, and part-time teaching. Matt holds an MS in computer science and an MBA in project management.
The material presented in these articles is based on material from the second edition of my book, The Object-Oriented Thought Process, 2nd edition. The Object-Oriented Thought Process is intended for anyone who needs to understand the basic object-oriented concepts before jumping into the code.