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.