Joe Nuxoll's Weblog

« Previous day (Sep 27, 2005) | Main | Next day (Sep 29, 2005) »

20050928 Wednesday September 28, 2005

The Three Versions of Java

Java is a great language for creating applications, and a great runtime platform for deploying applications. The evolution of Java can be traced fairly easily by a large number of folks that have been involved since early on (including myself). What puzzles me today is the fact that we *still* have such divergent mechanisms, libraries, and techniques for writing applications to be deployed on the desktop, server, and mobile devices. Why do we have 3 versions of the Java platform? I certainly understand the history, but the future points at convergence of these! The lines between desktop, mobile, and web applications are blurring at an alarming rate folks!

If you take a look at the APIs in these three spaces, it almost seems like the there is a lack of communication between the respective groups. JEE guys don't talk to JSE guys and JME guys don't talk to JEE or JME guys... etc... Is this true? Are the three Javas developed independently from eachother?

What I would like to know is if you, the Java developer (not the developers of Java), work in more than one of these areas. I would like to know how many Java developers "cross boundries" and work in more than one of the three "versions" of Java. If there are any of you out there... how difficult is it to context-switch your thinking between the different ways of doing things with Java? Is it hard to build a Swing app and then switch to building a mobile app? How about a web app with JavaServer Faces - then build a desktop GUI with Swing? Or SWT? Do you get to share any code between these applications? Is that too difficult? What would you like to see in the future?

If you can't glean my opinion from the tone or questions I raise... I would like to see the three Javas converge. In my opinion, we need to make ONE Java, where an application developer can freely dance in the web, desktop, or mobile space without having to re-tool or relearn a new set of APIs. We need a unified notion of components. We need a unified notion of data-binding. We need to push Java toward the future of applications, which will freely span all areas they have touched before.

And, lest I forget... I hope you realize that there are several more "areas" of applications then the three mentioned above. For example, voice applications will also emerge as a strong mainstream contender now that VOIP is coming of age... They've been around for a long time, but now they will rapidly become popular. Just watch.

( Sep 28 2005, 01:35:03 PM PDT ) Permalink Comments [2]