Where are all the JVM implementations?

January 10th, 2011 § 2 Comments

There is a glaring scarcity of JVM (Java Virtual Machine) implementations out there, and that’s quite paradoxical: One one hand the number of languages targeting the  JVM is exploding and on the other hand the number of JVM implementations is shrinking. Actually the most ambitious virtual machine implementation of late takes great care in avoiding the word “Java”! I am referring here to Dalvik, Google’s own vm that ships with Android. The wikipedia entry, under the section Architecture goes to great length to explain why this is not a JVM: “Unlike Java VMs, which are stack machines, the Dalvik VM is a register-based architecture.” They start the description of the Architecture by saying what the vm is not…

First let me quickly go over the opening statement:  The number of JVM languages is not only growing but the adoption of these languages is growing as well. The latest TIOBE Index attests to this with 4 languages in the top 50: Java (1), Python(5- I know, technically it’s not for the JVM, it runs on the JVM), Groovy(36), Scala(50) and let’s not forget Clojure, JRuby, Rhino, etc… The number of popular JVMs is dwindling: Kaffe has not released any code in 3 years, JRockit will probably be discontinued by Oracle, Microsoft discontinued its JVM in 2009 (a bad thing?), Blackdown Java did not make it past JDK 1.4, and the list goes on and on.

How can we explain this paradox and what does this means to people making strategic decisions about platform adoption? It is obvious that the HotSpot JVM is geared more than ever towards multi-language support, I think that one of the most convincing presentations was given by John Rose at JavaOne 2010 in a talk entitled One VM Many Languages. Take a look at slide #9 detailing all the JVM optimizations that can potentially benefit all the languages by simplifying the static compiler (which now “just” needs to create .class files) while the HotSpot optimizations can take place at run-time. The work involved in creating such a JVM is obviously daunting but the pool of  motivated developers should also increase: More languages and systems than ever before depend on the success of the JVM. The recent flurry of lawsuits by Oracle against Google is certainly not helping. Nor is the recent announcement by IBM that they will turn their attention to OpenJDK: OpenJDK is an SDK implementation competing with Apache Harmony’s SDK, not a JVM implementation per se, but in the spirit of dwindling implementations that’s one less JDK implementation…

People making strategic decisions about platform adoption have the right to worry, just as Java the language got us used to one spec/many implementations, the specification of the Java Virtual Machine should have led to a healthy number of viable  proprietary and open-source implementations. At the moment these premises are not being fulfilled but there is still hope. I think that a major player should step in, overlook the very short-term prospects for financial gains and sponsor a decent open-source JVM effort that would dare say its name: Java Virtual Machine implementation. IBM (J9), are you listening?

Where Am I?

You are currently viewing the archives for January, 2011 at Computing Thoughts by Roger Rached.

Follow

Get every new post delivered to your Inbox.