Well folks, another year, another Java One has passed. This conference has definitely got me thinking about a lot of things, especially the future of Java “The programming language”. You must be thinking, why in the world did I add that little blurb about “The programming language”, I mean, Java is nothing but a programming language right?
Wrong! There is a little thing called the JVM (Java Virtual Machine) that most of take for granted each and every day, when we open our IDE’s, start up our Application Servers, run our debuggers, etc…
Did you know that over 200 programming languages have been ported to run atop the JVM? All this talk about Java showing its age, and being out dated doesn’t necessarily mean that Java is going away. The language may go away, and when I say go away, I don’t mean go away, I mean maybe not be the top choice of language for writing future applications on top of the JVM. Java will never go away, just like Cobol is still around. There are enough core business systems written in Java/J2EE to last a life time. Just ask any Cobol programmer, after 30 years, they still have jobs available to them.
You must be thinking how can I compare Java to Cobol! Well, let me pose this question to you, namely, if a recruiter calls you up today describing an excellent opportunity working with J2EE/Struts 1 application. What would you think? J2EE/Struts 1? To me, that is “legacy” code, and it is nothing that I would like to work with now a days.
Dare I say it? Parts of the Java ecosystem are starting to look like Cobol? This is not a new concept at all. It all started many years ago. I would say some of the first people to publicize it was people such as Rod Johnson (Creator of The Spring Framework and CEO of Spring Source) and Bruce Tate (Author of Bitter Java, Better Faster Lighter Java, and Beyond Java). I would have to say that Bruce Tate said it best in his book Beyond Java. Keep in mind that book was authored many years ago. Thus, what I am saying is nothing new at all, it is just a concept that was thought of many years ago finally coming in to fruition.
Where is the proof? The proof is in the pudding (The JVM pudding). At Java One this year, it felt like it shouldn’t really be called Java One anymore, but maybe JVM One. It was interesting to see all of the slides at Java One this year said “The Java Programming Language” instead of just Java. Each session I attended the Presenter found it interesting how their slides were modified making this distinction. If you look beyond the slides, you start to see something interesting, namely, the fact that over half of the sessions offered had nothing to do with Java the language. Sessions like, “The Scripting Bowl”, which was a competition putting some of the leading scripting languages against one another. (I will go in to more details in a separate post, it was quite an interesting session), “Grails In The Enterprise”, “JRuby on Rails”, “Functional Programming with Scala”, to name a few. There were many more.
After a weekend of recovering from information overload, I think I have finally drawn a conclusion, namely, Sun has realized that Java the programming language has lost steam with all of the “Cool” folks. There are tons of efforts going on to try to make Java more appealing again like adding Closures to it. Right now, that effort is confused at best. No one has a clear and direct answer to how/if they should be added. It is of the opinion of some folks, that we should stabilize Java as it is, and create a new and improved Java 3.0.
The main point to focus on here is the distinction Sun is making between Java the language and Java the Platform, and the reasoning behind it. If you piece all of the clues together, you can draw the conclusion that Java as a language is loosing steam, and Sun realizes this, but Java as a platform, (JVM), is not going anywhere. There are tons of compelling languages available now that run atop the JVM. Some dynamic, some static, some functional, you name the programming paradigm, and there is a language available to use to target the JVM.
The main point of this post is to show a clear distinction between Java the language and Java the platform. In my next post I will discuss which languages have the best change of being the new Java 3.0.