Once upon a very long time ago in a universe called Sun Microsystems, James Gosling and a project named "Oak" emerged (1991). In 1995, Oak became Java and "write once, run everywhere" came upon us. Like virtual worlds - Java started with a big vision. More than a programming language. Like virtual worlds it became part of the idom of a networked world. It is now eleven years old and Java SE 6 is here. The journey to this point, is a parable for the likes of virtual worlds, perhaps...
In 1995 the idea of platform independence was infectious: why were computer programs so hard to write? Part of the problem was that for every machine, differences in the underlying operating system, devices, and hardware had to be reflected in the program and its preparation (compilation, deployment, etc.). That was a lot of bother (and expense) if one had many different machines.
What Java brought to the table was a streamlined object-oriented (OO) language, a network street-smarts, and a Java Virtual Machine (JVM). The idea behind the JVM was for you to write your program for this virtual machine rather than the underlying real machine: the JVM insulated your program from the vagaries of your "real world" computer (fn1.)
However, for this to work, there needs to be many different JVMs - one for every kind of host. Each JVM would look the the same to each program, yet each JVM would be created uniquely for an underlying real platform. Work still had to get done for your program to run on all these different real machines, but the beauty was that it would happen outside of your concern. By localizing the worry to those who implemented virtual machines, it meant that the (*much larger*) programming crowd that wrote programs for those virtual machines, well, didn't.
By and large I think the programming language and platform called Java made the world a better place. Though perhaps its success did not translate into the profits that Sun hoped for, nor certainly the technical home-run many of the early visionaries believed in. And yes, the purists still grumble.
Sure, browser-based applets turned to a retreat, but on the server Java did flourish. Yes, the poetry of "write once..." came to mean something more prosaic. And too, the simplicity of Java 1.0 grew into a forest of J2EE, J2ME, JSP, JNI, Java 3D, JAI, JDO, JDBC, JNDI... to name a few of the extras. Perhaps this is the price of an umbrella: you need a bigger one to fit more people beneath it.
Eleven years on there is greater maturity in the Java community and its role. It is more of a practical community than it was in 1995 (less evangelistic). These days we see a deeper self-governance in the Java community. There is a Java Specification Requests (JSRs) process. Furthermore, Sun has said there will be an Open Source Java SE later this year. Times have changed.
To a careful Terra Nova reader, this tale so far may appear as a metaphor for at least a few virtual worlds and some of their evolution. Perhaps the evolution of technology and its relationship to people whereever it occurs follows a common pattern.
There is one aspect I wanted to dawdle my last remaining cycles this evening. In Guess My Game (fn2.) I tried to cap a running discussion we've had over the last year or so as to the nature of virtual worlds relative to their representation in source code. A subtext has been whether scripting suits virtual worlds. Think of user-created content (Second Life) and user-modified UIs (World of Warcraft). Yes, games have had a long tradition with scripting for good engineering/business reasons: modding communities; managing the separation of concerns of programmers and level designers, etc. But do such hooks poke holes in a unified world view?
Java SE 6.0, interestingly, has scripting language support. From here you can see about two dozen or so scripting engines developed (so far). Thus, an interesting element of Java 6.0 lies not at its center, but at its edges. There is utility in an improved Java but utility is not necessarily excitement: there is excitement (for me) in the exotic mashups. Consider Jaskell.
If you think this sounds really arcane, you are right. But this brings me to my conclusion. In 1995 there was a tight vision about a streamlined language that could write once and run anywhere. At the end of 2006 I am salivating Jaskell.
Does a big umbrella suggest the maturity of a platform (fn3.)?
As I mentioned earlier, Java is apparently turning to Open Source. In fact, an announcement was made in Second Life (see here), of all places. The symbolism is rich, though I wonder the conclusion, eleven years from now. And yes, I wonder too of your virtual world.
fn1. /Ed 12.16. As some of the comments point out - it is worth noting the distinction beween different types of virtual machines. The JVM, by this taxonomy, would be considered an application level virtual machine.
fn2. See also "Tooling Around."
fn3. Btw, see the TIOBE Programming Community Index for December 2006: "...gives an indication of the popularity of programming languages."