It started out with bugzilla reports for Apache Tomcat. Ran across a series of messages for this bug. This is of interest for me, as a few years back I wrote a JavaService.exe - a program that ran as a proper Win32 service, and followed all the documented Sun/Java behaviors for discovering and invoking a JVM. This meant a commercial product (what paid for my time) could run Tomcat, was perfectly and exactly isolated from generic Tomcat installations, and would do exactly the right thing across Java upgrades. I’d carefully crossed every “t” and dotted every “i”, in the expectation that future versions of Java would be consistent, and everything would work out as was meant.

Except it did not. The Sun folk changed the API. Again. (I ran the test. It failed.)

I do not know how to present this. Generally, I am an advocate for Java. But … the Sun folk do a terrific job on some aspects … sometimes. Now that Sun has open-sourced Java, I could contribute to the weaker bits … but only on my own (limited) time, as my current employer is not explicitly interested in Java. I do not like saying “someone else should do this”, unless I am willing to contribute something.


The documented API for invoking a JVM changed from Java 1.4 to 1.5, and (as it turns out) from 1.5 to Java 1.6. No reason for this - the capabilities did not change in any fundamental way - but it changed anyway. The JavaService.exe program I wrote a few years back .. guess what? It started failing for one customer for no obvious reason. Turns out the failure is due to careless Sun programmers that effectively changed the JVM invocation API in Java 1.6, and introduced a new failure mode.

There is an existing documented bug in Sun’s database for this issue, marked as “Closed, Not a Defect” … which is wrong. I could invest time in this, but no guarantee that any work I did would get picked up. Should I bother?