The Source for Java Technology Collaboration
User: Password:
Register | Login help    

Search

Online Books:
java.net on MarkMail:


Will the JVM Outlive Java?

Posted by editor on August 5, 2009 at 8:34 AM PDT

I was talking with java.net former editor Chris Adamson this morning (via email), and our conversation got me thinking about the future of Java. Last week's poll, which asked "What's your view of the emerging JDK 7?", elicited an enormous volume of commentary. A fair amount of the debate was related to Scala. Scala is indeed receiving increasing attention, as the current Alexa graph for scala-lang.org shows:

scala-lang-alexa.png

Prior to this year's JavaOne, at a java.net Community Leader's breakfast I attended, someone said that java.net isn't really "about" Java -- rather, it's about the JVM, it's about anything that can run in the virtual machine. That statement stuck with me, though until now, a couple months later, and after chatting with Chris, I hadn't thought of anything to say about it.

In the early 2000s I was working for a small company as architect / lead engineer / project team leader for a Windows based high-volume document archive and retrieval product. Back then, .NET was just coming into being. It strikes me now that the underlying .NET concept is actually quite similar to what the JVM has become: you have a software platform that runs a certain kind of byte code, and you can develop code that will run on the platform using a variety of higher level languages, with the developed programs reduced by a compiler down to the appropriate byte code. Come to think of it, haven't we always had that? Doesn't everything get compiled down to some form of Assembly language, ultimately?

The Java concept, of course, is quite different from .NET, in that Java is a "write once, run anywhere" paradigm, while a big (secret) objective of .NET (IMO) was to facilitate the transitioning of hoards of Windows developers over to the "next big thing" in the Windows world. An easy path into .NET reduced the number of lead engineers, architects, and Development V.P.'s who might otherwise have said "Hey, if our team has to learn something entirely new anyway, why don't we just switch to Java and have our product work on all platforms?" C#, after all, is Java-ized C++, isn't it? I vividly remember thinking "wow, Microsoft is really scared of Java!" when I read the first preliminary 65 or so page C# specification.

Anyway, I titled this little essay "Will the JVM Outlive Java?" because it seems to me that languages, overall, are less durable than the platforms on which they run. Among developers, language preferences, it seems to me, are a bit like music preferences. Most people tend to consider whatever they entered adulthood with as clearly the best. Interestingly, at the time when they are learning their ultimately preferred language, that language/technology is always a hot, new, cool technology. Just as the music they ultimately consider best was new and different and cool when they were listening to it as high school and college students. Both the languages and the music may incite statements of dismissal or derision from their parents' generation, so a bit of adolescent rebellion is also involved.

Note: I don't count myself among either of these groups. I like plenty of new music, and find new languages and language concepts quite interesting. But, I do have to admit that there really isn't anything that has quite the same feel for me as David Bowie's Hunky Dory and Ziggy Stardust. The imprint of what you really liked in your late teens and early twenties is quite pervasive -- kind of like just-hatched chicks imprinting on the first large animate object they see... Hmm, are we really that simple ourselves?

Anyway, there's another reason the platform tends to outlive the language. In the discussion in last week's poll, there was a debate between a development team leader who was managing hundreds of thousands of lines of Java code and another team leader who was working on projects basically from scratch, using Scala. So, scotty69 (the Java project lead) said:

Please help me: I have - say - 200.000+ lines of 3 years old Java code, mature, thoroughly tested, battle proof. My customer wants me to add feature X with about 2.000 lines of new code and and 3.000 lines of existing code to be changed, tight budget as usual. Do your really think that it's a good idea to to introduce Scala in this scenario to "extend Java classes, call methods and so on"? Do you have experience in mixing a large legacy Java codebase with new Scala elements? Can you tell me how the tool-chain could look like?

For an established code base, converting to a new language is enormously expensive -- basically, it's wasteful, stupid. That's why in the scientific/engineering data center where I work part time, we still have loads of operational Fortran libraries. Yes, we wrap them inside layers of other code, connect to a modern Oracle database, generate interesting graphics and post them on nicely formatted web pages, etc.; but the core computational code is legacy engineering and mathematical modeling code, mostly written in Fortran, or C.

Meanwhile, here's aehrenr's point (the leader of the Scala-based project):

We make applications for genome comparison including 3 tier apps with Swing frontends. And we do it as an university working group with changing programmers, many of them not computer scientists but also mathematicians, biologists and so on... I am for sure the exact opposite of a "java basher". Scala is starting to be used in the enterprise in reality...

If you're developing something from scratch, with relatively inexperienced developers, why not go with a well-constructed new language that solves some of the issues that are outstanding in older languages? If it's 1998 and you're developing a brand new application, why deal with stamping out C/C++ memory leaks and trying to teach young developers about pointers, when Java offers a garbage collector for free? Well, now it's today, 2009. Is there perhaps a new language that runs on the JVM that fixes some annoying, developer time consuming Java issues?

But, for this to be possible -- one set of developers working with established code bases that utilize rock-solid, well-tested code that is potentially decades old, and another set of developers working on brand new applications using new languages -- the underlying platform has to be durable and extensive and extensible.

Hence, my answer to "Will the JVM Outlive Java?" Well, Java won't die any time soon, but the JVM is the critical enduring platform, really. What do you think?


In Java Today, Kohsuke Kawaguchi is Announcing Sun Continuous Integration Server: "The continuous integration server Hudson that I started 5 years ago has grown to the point that it has become an important part of many businesses (to name a few, and most of them run inside corporate firewalls that I can't point you to.) When an enterprise depends on Hudson as an infrastructure for doing software development, a commercial support often becomes an useful option — And to this end, I'm happy to announce that Sun now offers Sun Continuous Integration Server (SCIS) support subscription, as a part of GlassFish Portfolio..."

Peligri reports that JavaEE 6 Will Include JSR330 and JSR299: "Java EE 6 will include JSR 330 and JSR 299. Roberto explains the changes: JSR-299 will be updated to use the JSR-330 annotations; JSR-330 has evolved to take into account requirements from JSR-299; Both JSRs will be part of the Java EE 6 Platform..."

An interesting new article has been posted on the Sun Developer Network, Java HotSpot Garbage Collection: "The Garbage-First Garbage Collector (or G1 GC for short) is a new GC that is being introduced in the Java HotSpot VM in JDK 7. An experimental version of G1 has also been released in Java SE 6 Update 14. G1 is the long-term replacement for HotSpot's low-latency Concurrent Mark-Sweep GC (widely referred to as CMS)..."


In today's Weblogs, Roberto Chinnici writes about Dependency injection in Java EE 6: "One big topic of discussion at JavaOne was the recently filed JSR-330, "Dependency injection for Java". As many of the comments during the JSR approval ballot made clear, some alignment of JSR-330 and JSR-299 (formerly knows as "Web Beans") was..."

Sergey Malenkov writes about Score your game: "In a game the score refers to the amount of points gained by a player or a team. Сonsider a JavaFX component that shows the score and enables its smooth changing."

And Jim Driscoll writes about Using the YUI Calendar widget with JSF 2: "There's more to web development with JSF than just using JSF component libraries - there's a lot of really great widget sets out there that have nothing to do with JSF - here's a quick example of using one (the YUI Calendar widget) with JSF, Ajax, and a Managed bean."


In the Forums, trw1313 asks about WCF Service and Security: "I am trying to consume a WCF service from a java client contained within a web application on GlassFish. I have retrieved the wsdl from the WCF service which I believe should have all the security settings contained within it. From the IDE, I set the security portion of the of the attribute editor to contain a "Static" username and password. After that, I follow the process for adding code to call the service which looks like the following: org.tempuri.AccountService service = new org.tempuri.AccountService(); ..."

John Stalker asks about v2.1 node-agent as a windows service (sometimes) fails to start on
reboot with an "Address already in use" exception
: " reboot with an "Address already in use" exception
Hi there, I've got several (ie 60) windows PCs that have been configured to start /stop a node-agent (each with one glassfish instance) as a windows service. Trouble is, I am having intermittent failures on reboots. Most times, the agent starts up just fine... but sometimes it doesn't and I have to go out and manually stop the service (the windows service claims is starts successfully even though the node-agent failed to start) and restart it. That always fixes it. I have no trouble starting the service after I've logged into the machine. Any ideas why I might be getting this error and how I might navigate around this issue?..."

And Sarah Kho asks about is it possible to use JPA without that persistence.xml file?: "Hi. Thank you for reading my post. I am looking for a way to use JPA but I want to set the connection url during application startup and not in the development time. I should run the application on multiple machines and each machine has its own ip address which database is running on t. I should change the connection url and create tens of distribution for all of computers which want to use it. if there was a way to set the connection URL programmically all of my build and distribution problems will vanish..."


The current Spotlight is the James Liu and OpenSolaris Team Roundtable: "java.net's Gary Thompson moderates a roundtable discussion with James Liu and members of the OpenSolaris Team in this java.net Community Corner 2009 podcast, recorded at JavaOne."


This week's java.net Poll asks "What do you think about Project Kenai?". Tomorrow (Thursday) is the last full day of voting.


Our Feature Articles include an article by Biswajit Sarkar, Using the Payment API for Microcredit and Other Applications, which describes how to apply the Payment API (JSR 229) in JavaME applications. We're also featuring Jeff Friesen's Introducing Custom Cursors to JavaFX, in which Jeff shows developers how to leverage undocumented JavaFX capabilities to support custom cursors in versions 1.2 and 1.1.1.


The latest Java Mobility Podcast is Java Mobility Podcast 84: Valderi Leithardt on using SunSpots for gesture recognition.: "An interview with Ph.D. candidate Valderi Leithardt in Brazil on using SunSpots for gesture recognition." OpenJDK Podcast is The latest JavaOne Community Corner Podcast is


-->

Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



I was talking with java.net former editor Chris Adamson this morning (via email), and our conversation got me thinking about the future of Java...
Comments
Comments are listed in date ascending order (oldest first)

The JVM is awesome right now. I would say that if people do become anti-java and JVMs are frowned upon, Sun (or Oracle or whoever) should repackage the JVM as a ScalaVM or whatever. Ie. the basic technology is just getting to be really great.. if people's prejudices hold them back... just repackage. :)

Nice post ! I enjoyed read the part about using scala with mathematicians and biologist. I'm working in an environment where both computer scientist and biologist must collaborate, but scientist haven't the mentality to use Java, I'm must definitely take a look at scala !