Skip to main content

It's The JVM, Stupid

Posted by ronhitchens on May 11, 2007 at 1:56 AM PDT

The theme I'm picking up from friends and associates, and from the sessions on the schedule, is that there seems to be a dearth of Java at JavaOne this year.

There is a lot of interest in scripting languages like Ruby, JavaScript and the new JavaFX running in the JVM. NetBeans is sprouting direct authoring support for a growing number of languages other than Java. There are so many language choices now that you can build a very sweet Java application without ever writing any actual Java code.

Is that a bad thing? Perhaps not.

The real value of the Java Platform has always been the Java Virtual Machine (JVM), not the specific syntax of the Java Language. Java (the language) truly was a big step forward for its time, addressing the perceived excesses of C++. It inspired huge numbers of programmers, both new and old, to write better OO code. But of the components making up the Java Platform, it wasn't the one that mattered the most.

It was the JVM that was the true enabler of the Java revolution. Compiling to a standardized intermediate byte code which can then be run in any compliant JVM was a huge innovation. It wasn't an original idea, nothing really is, it seems. But the Java VM was the first to become widely available on many hardware/OS combinations and thus the first to become ubiquitous.

Robert Tolksdorf maintains
a list of dozens and dozens of languages that compile to Java byte code, or otherwise target the JVM.

Java the language will be in use for many years to come. But it may also be the case that it's in the process of being supplanted by various other languages. Some of these languages are specialized, targeted at solving specific problems. Others bring different philosophies and world views as alternatives to Java's syntax. But they all have the JVM in common.

Personally, I'm interested in the new language
SCALA (there is a session by SCALA's inventor,
Martin Odersky, on Friday at 1:30). It is an interesting mix of object orientated, functional and concurrency features. The syntax is concise yet type-safe and is designed to mesh smoothly with Java and the standard libraries inside the JVM. In my day job I deal extensively with XQuery, a functional language designed for querying and manipulating XML. XML is a data type that's built into SCALA, which makes for a logical bridge between my two worlds.

It's the JVM that enables this goodness. Over the history of Java, the syntax of the language has evolved and the libraries have bulked up. But the JVM has remained remarkably constant. Over the course of more than a decade of general availability, the JVM's evolution has primarily been in terms of optimization, stability and tunability.

Long after Java the language has fallen from fashion and faded into antiquity, the JVM, looking very much like it does today, will still be going strong. You may not recognize the languages in use then, but peek underneath and you'll find byte codes running in a JVM not too different from today's.