A. Java is the perfect language I haven't really run across any Java programmers who hold to this view, really being an absurdity with all the well known problems in the language. There are some, however, who will argue that the tradeoffs of the language provide the right feature set with the least amount of complications.
B. Java lacks genericity Given that Java does not have generics, this is a well known proposition. Interestingly, Gosling did consider implementing generics early in the life of the project (prior to it becoming popular), but decided that the resource constraints prevent Sun from integrating generics into the language. Of course, generics would have been a whole lot easier to implement at that stage of the project than they are now, given the number of libraries and users.
C. Genericity is not important. It's not really a matter of generics being totally insignificant. It's a question of return on investment. Does introducing generics into the language solve a problem that absolutely has to be solved, and can it be done without cost and complications.
For my money, the most immediate benefit of generics is to be found in the collection classes (though they can be used in any number of places). Collections in Java are much harder to use and less featurefull than they are in languages such as Smalltalk and Python. Indeed, the dynamic OO languages are head and shoulders above the capabilities of static type checking in Java. The funny thing is that Java collections effectively have to downcast every time an Object is retrieved from a collection - thus eliminating the very advantage of compile time static type checking.
One thing of note, the Java Collections have already gone through one major rewrite - JDK 1.2 collections. I think some in the Java community have the feeling that we don't need to introduce generics into the language and then have the API drastically rewritten once again. I think this may be a large measure of the hesitancy involved in adopting the GJ solution.
|