View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Discussion 1 - Arwa Tyebkhan

Java and the Object-Oriented Paradigm:
Comparison and Evaluation


W. Al-Ahmad and E. Steegmans
Report CW 249, April 1997
Department of Computer Science, K.U.Leuven

Source: http://www.cs.kuleuven.ac.be/publicaties/rapporten/cw/CW249.ps.gz

This paper which I read investigates Java in respect to the Object-Oriented paradigm. The writers’ main purpose is to investigate whether the hype that Java has created in the computing world over the past decades is due to its OO features, or other features that it possesses. In order to do this, they compare the OO features offered by Java with other major OO languages- C++, Eiffel, Smalltalk and Beta.

The OO concepts that they compare include object and class, message, inheritance, and issues like encapsulation and polymorphism. The paper gives us an interesting summary in table format about the differences of these languages based on the above mentioned concepts.

These are a few big differences between the languages:

Object representation: In Java, simple types such as int, float etc. have value semantics while class types have reference semantics. Like Eiffel, Java has removed the pointer concept of C++. Also, Java, unlike C++, does not support global variables. This is considered as a plus point for Java as it is more objected-oriented.

Object Construction: Constructors in C++, Eiffel and Java are restricted to initialization of new objects. Only Smalltalk completely satisfies the purpose/meaning of constructors since instance creation methods are responsible for both, the creation and the initialization of new objects.

Inheritance: In Java, a subclass can change the access rights of a super-class's methods, but only if it provides more access. In C++, functions and data members can be changed from public to private or protected.

Abstract Class: Abstract classes in Java are more readable and neat than in C++, though there is overhead in repeating the keyword ‘abstract’.

The writers conclude, after comparing the various concepts of these particular languages, that the fame that Java has enjoyed over these years is not due to its OO features, as it has neither introduced new concepts that build on the OO framework, nor does it really expand on an existing one. It however is a good fusion of C++, Smalltalk and Eiffel. While Java stayed away from certain concepts from C++ such as multiple inheritance and genericity, it achieves what the other languages don’t – simplicity. Due to the strict OO nature of Java, the advantages that it gives its users/programmers, in addition to simplicity, is consistent integration of features. Also, as these is automatic garbage collection in Java (as compared to C++), they don't have to worry about memory leaks. Since there are no pointers in Java, it has an added sense of simplicity and ease of programming. Most of the differences stated above have added a sense of readability and simplicity to the language, which undoubtedly has had a great effect on the way that people program.

The paper that Hitesh Kanwathirtha talks about is extremely similar in the manner of comparison of the different object-oriented languages and the conclusions that they arrive at. They both take into consideration how well these languages support OO concepts, and give us a good understanding about the features that these different languages allow us to use, and their limitations.

Links to this Page