Oracle ships with management tools built around Java 1.1.8, as far as I can tell. This is, for whatever it's worth, the same version you find on Mac OS 9-. At any rate, Oracle's clients install their own local version of a 1.1.8 JVM, and use it no matter what other JRE/JVM you might have installed elsewhere.

The interesting part is that the GUI, almost certainly in Swing, is pretty responsive -- right fast at times. That's not normally what you think about Java code (though I'd argue that, too, is a sterotype... and the rest of the blog will play into this a bit).

So let's take this example and take the thinking a bit too far based on n=1 and say that if people coded for Java 1.1.8 all around, we might very well have lots of fast, responsive, yet still complex desktop Java apps.

Now let's turn to Java 1.3-1.5. Netbeans is still pretty slow. Apps on OS X written in Java & Swing are noticibly much slower than similar apps written in Objective C. Java GUIs are slower in 1.3+ than on 1.1.x implementations, all other things equal, in my experience.

Now let's add that nearly every Windows desktop out there has a 1.1.4 JVM installed on it fresh from Dell, HP, or what-have-you.

Why aren't we seeing Java 1.1 apps?!!

Here's the quick answer -- People nearly always go after the latest and greatest regardless of the overall picture. It's really quite strange. I've seen emails go across the Apple Java Development mailing list saying things like, "Our boss says we *have* to have generics, so Macs and their 1.4.x JVM are right out for development."

What the heck?! These are things you've been happily *not* using for all of Java's existence, that older code still works in 1.5, yet you're moving the whole of your development over b/c you think a new, just out of beta feature is cool? Not only that, as the VM bloats, likewise does (I'll argue on the strength of what I've seen from Oracle, which is admittedly weak by itself) performance plummet. Sure, perhaps there are places where generics will help, but surely they're not rewriting current code to use the new feature, are they? "As if code rusted."

It really makes you wonder, but as Micheal Crichton's A Case of Need pointed out back in 1968, there's something distinctly American about always accepting bigger and newer as better. This problem is taken to the nth degree in computer programming, where you don't even have to hit the store to buy New & Improved Tide, you can download the alpha this minute.

(Yes, obviously newer versions of Java and other languages (.NET is such an improvement over VB6 I can't begin chronicling the improvement) have features and libraries that are awfully useful, but remember folks, they're all 0's and 1's. There's nothing you can do in Java 1.5 that you couldn't do [essentially] with 1.1.x if you put enough effort into it. And you'd be surprised how much you wouldn't bother copying.)