Well, to provide a little defense on Java's side (since I'm somewhat of a Java advocate, since that's my expertise):

First, JavaWorld isn't known for it's usefullness (IMO) and good articles (they're typically directed at more junior developers).

The article was way off base in it's understanding of how and why Java became popular. The comparison to Smalltalk was just stupid. There are many reasons that Java became successful, but none of them had to do with a comparison to Smalltalk (that is, no one ever chose Java over Smalltalk....unfortunatley, Smalltalk was rarely ever thought of as an option). However, I think the patterns movement has been a positive for the industry, and Java has helped there (that's not to say that it couldn't have been done by a different language, though).

Many, if not most, of the Java developers I run into have little formal computer science background (theory-based background), and therefore don't know about that many different types of languages, etc. Of course, that goes for those that focus on a particular technology over any other (which is fairly standard, since that's what usually allows the expertise necessary to pay the bills in this industry, as unfortunate as that is).

All of that being said, and admitting that Java is in no way the best language or platform, it still fit a need in such as way as to be successful at it.

At the time (1996-97), most new development was done in C/C++ or VB (from a business applications perspective). Note that I said *new* development (obviously, there's probably still more COBOL code out there than anything else), though I should probably even go so far as to extend that to PC-based computers (and networks). So, any new language that was going to become popular would have to be based off of those (so developers could easily pick it up). I don't believe that Smalltalk fit that requirement very well, though Java did (again, I don't think very many people even bothered to look at the feasability of Smalltalk).

I also think that if the timing hadn't been so relatively perfect (the Internet becoming popular, for example), Java wouldn't have had that great of a chance (the portability of the bytecode over the Internet was, in addition to the C/C++ roots, probably the biggest reason for its popularity). The funny part of this is that Java failed rather miserably as a client-side, portable bytecode-based platform for Internet development. However, some of the language features (garbage collection, standardized API's, etc.) made it interesting on the server side, and has been popular there ever since (note that I didn't say appropriate or the best).

So, in defense of Java...it had the features and attributes that allowed it to become popular at the right time in history. Advocacy aside, if a couple of things had been slightly different in history, I think Smalltalk or another better or worse language would have been in its place, instead. However, and it's never ceases to amaze me...it's the marketing and the "good enough" that runs this industry.

Oh, and finally, I actually like Java and enjoy developing in it, even with all of its holes, bugs, etc. It's much more enjoyable than the C/C++ I was doing before.

Dan