At this year's JavaOne conference in San Francisco, I came face to face with the reality that Java no longer occupies the position of being a disruptive technology. It is now an accepted, depended-on, stable, workhorse technology. Of course, this has been shaping up for years, but for those of us who work every day on the technology, it's hard to tell when this happens until the change is done. For me, the final moment of realization came during Monday's opening keynote. In fact, it came as I saw a slide that positioned the invention of Java as of equal importance to the microprocessor and networking.
Now, even though I love the platform and have spent the last six years working almost exclusively with and on Java, I don't agree with that statement. The invention of the microprocessor and of networking are in a totally different league than Java when it comes to affecting history. If James Gosling and the Oak team had not put together Java, then we would all be using some (probably not as good) alternative. But if the network had not been invented, or the microprocessor had not come to be, the world would be a much different place.
That said, just the fact that the claim was made is a statement all its own. Six years ago, at the first JavaOne, it was not clear that the technology would live up to any of its promises. Even two years ago when J2EE was announced, it was beyond any expectation that the APIs would unify the application server space to the degree they have. Now, it's simply expected that an app server will support J2EE. And over the last few years we've seen an amazing upswing in the use of Java in the small device market. We have seen Java-enabled cell phones ship like crazy in Japan, and we're on the verge of seeing them sweep over the domestic U.S. market. And let's not forget the zillions of Java-enabled smart cards out there.
Even the desktop is getting a boost. With Apple's shipment of Mac OS X, there is once again a desktop OS shipping with the latest version of Java built in. And Apple's implementation is not a simple port, but a complete integration of Java into the OS. Apple has even done quite a bit of innovative work that they plan to give back to Sun. This work includes the sharing of the core libraries between virtual machines and the utilization of hardware acceleration in Swing. After a long dry spell on the desktop while J2EE and J2ME take the limelight, J2SE is poised to make a comeback.
Java has matured to the point where the question is no longer, "Why should I use it?"; it is now, "How should I use it?" Anybody who lived through the years where we had to work hard to convince people that Java was ready for prime time is surely grateful that Java has come so far. And it has taken a lot of hard work by a lot of talented people to get to this point. In the process, Java has matured and stabilized. Instead of radical change every 12 months, we now see gradual changes over the span of years. Java has moved away from being a revolution to simply being useful. And that is a good thing.
Truth be told though, this is a bittersweet moment for those of us who have been there since the very first JavaOne. After all, those of us who are early adopters tend to thrive on the chaos of uncertainty and change. But even as it is a bit sad that the pace of progress and change in Java has slowed down, we're all happy that it resulted in something that is so useful and, yes, even critical to computing. So the revolution is over, and it was televised via streaming media from JavaOne. Now it's time to get with it and get some work done. And do it in the enterprise, on little devices, and on the desktops of the world.
Just be sure to keep your eyes on the horizon; there will be other revolutions that will be interesting to watch.
James Duncan Davidson was the original author of Apache Tomcat, the official reference implementation of the Servlet API; and Apache Ant, a Java and XML build tool.
He was also the specification and project lead at Sun for the 2.1 and 2.2 versions of the Servlet API as well as the specification lead for the Java API for XML Parsing 1.0 and Java API for XML Processing 1.1. [email protected]