Why is it that developers love to develop with beta software if possible? I've notice when I've posted a couple of questions to the Apple Java help list that most people there answer the question from the point of view of Java 1.4, which is technically only available to developers that have agreed to an NDA and downloaded the pre-release version.

I don't know about other people, but I've been burned all too often with new versions of stuff that I tend to stay about a generation behind when it comes to what I use on a daily basis. Even Sun's Windows 1.4.1 JVM caused crashes on my new Gatewat/WinXP box. I don't have time for bug tests and reports; I just went right back to 1.3 (which was enough of a headache as it is). I'll get 1.4 again once I get more heavily into testing for the first update of my app, but for now 1.3 is plenty for the "home" box.

Even more importantly, your clients are almostly certainly not using the latest release of software, much less prerelease software, and some never will! It's awful easy to slap, "Requires Mac OS X 10.2.3 with JVM 1.4" on your application once 1.4 is released, but it's also awful lazy and presumptuous. Test on OS X 10.0, for heaven's sake. It's got Java 2 (which, strangely, is version 1.2 in Javaland), no matter how buggy, and shooting for that lowest common denominator will ensure much better results.

I haven't quite figured out what this means on Windows, which usually comes with Microsoft's VM that's around version 1.1.4 but you can't even quite count on that, much less something like Java 1.3 or 1.4. My app's going to have to ship with JVM runtimes in the installer, I suppose, but that increases the download heavily -- and do you force people to upgrade who have Java 1.2 installed already? Java 1.4 has key upgrades like mousewheel and enhanced "JVM-native" drag-and-drop support.

I say you don't do any such thing, and perhaps write a quick installer (in what? VB? Then you're distribin' the VB runtime as well on older boxes! *sigh* Java 1.1.4? Need to research the MS JVM) that checks for a JVM and only dl's if absolutely necessary. Then, of course, I have to *test* each one of these JVMs to be on the up and up.

At any rate, Java's nice, but it's certainly got its disadvantages, like everything else.