namely the triumph of junk through marketing over technical excellence. Java is a bunch of ideas taken from other languages cobbled together. Java was designed by people who had a very narrow viewpoint, namely C, C++, and Objective C. How could you design a language in the 1990's and not build in some form of Generic types? How could you build such a brain dead type system? Why primitive types? I could go one forever. Java 1.0 was absolutely useless. Here are some of the shortcomings that I can think of off the top of my head:

1. Idiotic event model (had to be changed in 1.1)
2. No reflection (had to be added in 1.1)
3. primitive types (which only gets worse when you add in reflection
(which doesn't work well with primitive types), collections, and
generics )see this link for a great paper on why primitive types are
so bad [link|http://www7.software.ibm.com/vad.nsf/Data/Document2712|http://www7.softwar...Document2712] )
4. No generics
5. No easy way to do proxies
6. no collections
7. No control over garbage collector (a little better now with Weak References)

Based on this Java 1.0 was basically useless and should have been stillborn. However, the marketing machine is king and it didn't matter.

Here is a great quote from one of the Java newsgroups:
"The Java-Language-Design Research Algorithm, Unleashed:

if (objective-C shows a way to do things better than C++)
\t do that;
else if (we really really hate this thing as C++ does it)
\t/* do nothing */;
else
\tc++.copy_from_slavishly_without_much_more_thought;
"

For just about every feature that Java has you can find a better idea somewhere else. Just like Windows dominates the desktop even though it is a piece of junk, Java is dominating the programming language space even though it is a piece of junk.

If I sound bitter it's because I am. I was a Smalltalk developer from 94-97 and absolutely loved the language, and now basically Java has killed Smalltalk. I have found many Java developers who would prefer to develop in another language (such as Smalltalk) if they could, I have not found any Smalltalk developers who prefer Java. It pains me greatly when I think of how much better things would be if Smalltalk had become the dominant language instead of Java.