The Resurgence of Java the Platform
Since Java appeared, it has been clear that Java-the-language was, theoretically, just the preferred interface to the Java Virtual Machine, in the same way that C# is a preferred interface to the .NET Common Language Runtime. Yet, Sun, itself, has never chosen to emphasize this point. It's been left to an intrepid band of independent developers to work out ways to integrate other languages with the JVM.A quick search for "JVM languages" on Google turns up a number of interesting lists of languages running on the JVM such as:
Meanwhile, Cedric Beust, a developer at Google, in Mountain View, Calif., said of Sun's plans to add more support for dynamic languages: "I'm afraid it's too little—and probably too late as well. The only added support is one bytecode in the virtual machine that—while a big progress for scripting languages—still requires a lot of work from language developers interested in writing a JVM [Java virtual machine]-based scripting language."
program in scala using jms, hibernate , jta and a servlet engine
Joost de Vries
Java the language will not be able to incorporate nimbly new language features; there's simply to much code out there and the risk that a new feature will not be succesful is maybe too great.
But other languages on the JVM can try out new features by a process of evolutionary selection.
One would be able to use new language features on the one hand and be able to do anything and connect to anything in this world since there's this great world of software libraries and frameworks out there.
My favourite language at the moment would be Scala: type inferencing, multi methods, pattern matching, higher order functions, currying etc etc.
To me that's an exciting future for the JVM.
But I'm not sure the open-source community will go this way; on the one hand because the JVM is under Sun's control and on the other hand maybe because all this great software is already out there; it's hard to come up with something new and the low-hanging fruit has already been picked....
Another risk is that this will lead to even more fragmentation in the Java space. There's this economy of size; if you make sure your developers know Java your company can do a lot and you surely will be able to find Java developers because there are a lot out there. I'm not sure this will remain this way with lots of JVM compatible languages. On the other hand probably just about three languages will have a significant following.
So why hasn't this happened yet? In my experience it has been a rite of passage for Java developers to discover excitedly the linked page full of programming languages for the JVM by this Robert Tolksdorff... and not do anything with it. I think the page has been around since 1997.
Java the platform is being reborn
That's what brought me to JRuby. Ruby is certainly my favorite language now, a beautiful mix of syntax and features that enables not only powerful and simple code, but really fun and entertaining development as well. Ruby is without a doubt my favorite dyntyped language. By that same token, I still love Java; its design, rigidity, and extensive tool support make it an extremely powerful systems development language. By marrying the two together, we create an analog to the typical UNIX environment with your scripting language of choice: the nuts and bolts are written in a strict system language with most of the agile, useful work happening in a more dynamic and abstract language.
I've recently been pushing JRuby faster and faster, on performance, Ruby application compatibility and support, and extensibility. We've improved base performance by almost 1/4 in the past couple months, we have large scale refactoring and improvement efforts underway, and we continue to improve our compatibility with C Ruby. The lure of Rails or Rake or Mongrel on the JVM with all the Java platform has to offer is extremely attractive to me and to many others.
The bottom line is that Sun really does "get it" when it comes to the dyntyped language revolution, and the wheels are in motion to make good on their JavaOne promise that Java should be a "multilingual" platform.
Re: Java the platform is being reborn
By marrying the two together, we create an analog to the typical UNIX environment with your scripting language of choice: the nuts and bolts are written in a strict system language with most of the agile, useful work happening in a more dynamic and abstract language.Thanks for providing this update Charles. I love this metaphor as well. Indeed scripting languages came from shell scripting - scripting your underlying environment. Moving up the stack, the idea of scripting languages used to build applications by scripting Java infrastructure underneath is a compelling picture.
One thing I've been wondering about that emerging practice is - at what tier should java end and a scripting language begin? The domain model? The services layer? Or everything (ala Rails)?
Doesnt this mean Java is washed up?
Im glad line numbered Basic can run in the JVM, I really am. But I dont think that qualifies as a resurgence of the Java platform.
Either the folks doing Ruby in the cross platform Ruby interpreter are REALLY dumb or they dont need the VM. Are we guessing or betting that they will eventually see things like the Java folks do and learn to be like us?
I really dont see any Ruby developers clamouring for the JVM to run their stuff. What gives? This seems more like java developers clamouring for the Ruby guys to run their stuff on Java.
Maybe it will work but given the CLR joke, I dont think that its really that important. Why wasnt the Java VM built on top of the Smalltalk VM? It was far superior at the time.
Re: Doesnt this mean Java is washed up?
There was no "the" in Smalltalk.
Also, Smalltalk has some elegant design choices that unfortunately limit the options for runtime optimization, while Java (by and large) has a much clearer compilation (or byte code translation) to machine code.