our production web services have been bedeviled with serious performance issues largely due to documented issues with NIO (we’re using Jetty for its http engine). As its a known JVM bug, our options are really limited to a) hacking Java and fix the bug ourselves, b) wait for a new release of Java and ‘hope’ they’ll finally fix this particular bug or c) look for a different JVM. I dont have the patience to do A. Considering that this bug was reported in 2006, option B may take a long time coming.. option C: an alternative JVM poses an interesting scenario as there’s really only 4 JVM implementations out there: Sun’s Java Implementation (the de facto of course), OpenJDK (same code base really as Sun’s), IBM’s implementation and BEA’s JRockit (bought by Oracle in ’08). IBMs implementation seems to be stuck at 1.5 version of the Java API and I cant find any new developments there so that leaves me with Oracle’s JRockit. Unfortunately, JRockit is not free (as in install anywhere to anybody’s production server) anymore, according to its FAQ:
“All Oracle JRockit products are free of charge for evaluation and development .”
So the question is.. now that Oracle has purchased Sun/Java/MySQL and they have their own money making JRockit/OracleDB what’s the incentive for them to continue on developing the erstwhile de facto Java implementation? Goodwill? its not far-fetched to imagine that one day the current Sun- Java implementation will have similar license terms.
On the other hand, Oracle can just be subtle about it and will just slowly starve the Sun-Java effort of development resources as Oracle peddles a ‘better’ (and paid) JVM in JRockit. This remains to be seen of course.. meanwhile I’m stuck with this bug.. option A looks attractive all of a sudden.