The recent announcement that Sun would be GPL’ing Java has caused an immediate (and well deserved) reaction among the technical blogosphere. It’s another one of those titanic shifts that occur periodically as large software companies jocky for position, one that causes all of the pebbles on the Go board to suddenly shift into a different alignment. I’m sure that these pages will be analyzing this move for months, but I thought I’d get my two cents in now while the topic’s still germane.
Java and XML have long had a significant, albeit somewhat uneasy, relationship. Most of the early XML tools were written in Java, and even today, many of the major ones, from Saxon to a number of the Apache technologies, appear first in Java form before showing up in other languages. Eclipse, the open source editor that is rapidly becoming one of the major development platforms for XML work, is of course fundamentally a Java application, and it is fair to say that Java likely has near as many (if not more) developers in its fold as C++.
That being said, it took XML to accomplish what Java couldn’t. Most communication that goes over TCP/IP nowadays is not done via either Corba or RMI - instead, its marshalled XML as either SOAP or REST-like messages (with a growing proportion of JSON added into the mix). AJAX has largely replaced Java applets as the mechanism for providing functionality on the web, and on the server Java’s role is increasingly a supporting one to host either XML based services or XML oriented server frameworks.
Thus, while the open-sourcing of Java (under a real OSS license, not the rather crippled one of Sun’s CDDL) will have a huge and largely positive effect on open source software in general, in essence placing a legal stamp of sanction on the thousands of Java based applications that were done in the OSS domain but were “off-limits” to pure GPL distributors because of the CDDL, its effects on the XML community likely will be more muted, at least initially.
The tactical advantages to Sun of making Java truly open source are obvious, especially as the full Java framework has reached a point of extraordinary maturity - it’s very unlikely that there will be significant changes to even most of the “outlier” classes that make up the framework, and certainly the radical changes that took place between versions 1.1 and 1.2 in things such as the eventing model are now ancient history. By releasing it now, Sun effectively freezes the code-base, a point that is increasingly attractive to IT departments compared to the third iteration of .NET, necessitating changes in programming methodologies up and down the development continuum. It effectively ends the risk of other parties (such as IBM) developing their own variations on Java in order to get around the CDDL restrictions.
It definitely puts the brakes on the rather questionable Microsoft/Novell negotiations taking place now as it puts Novell in the position of having to incorporate the corpus of Java into its own patent negotiations, raising all kinds of legal headaches that will keep IP lawyers employed for years, if not decades.
However, whether it will cause a dramatic uptick in new Java development remains to be seen. Large, heavily typed application frameworks are like so last century (sorry … spending too much time in the company of my eldest daughter). While it means that a few useful XML tools can finally end up in distros (such as Saxon), my suspicion is that this will need to be an integrated move that will take both dedicated manpower and time to pull off effectively - in other words, its unlikely that you’ll see any such Java tools distributed much before mid-next year at the earliest, and that it may take some time thereafter before Java begins to seriously regain ground its lost to lighterweight frameworks, especially in the web arena.
That being said, it is still a good day for the open source community. This may end up being the spur necessary to let developers create better ways of making Java deployment as transparent as possible, which has long been in my own opinion one of the weaknesses of the technology, especially if such hooks can be tied deep into the operating system itself. It also introduces into Linux especially the ability to create a common framework API for Linux kernel distributions, rather than the cryptic and often contradictory library model that currently exists.
In other words, the announcement of the GPL status for Java does what nearly a dozen years of lobbying and maneuvering on the part of Sun have failed to do - it makes Java into a Standard, one that people can effectively use without fear of reprisal, shifting legal quagmires, or changing architectures. For the XML community,
this single fact is paramount, because it secures Java’s place not just as a testbed for concepts but a fertile ground on which to grow those concepts into full blown, fundamentally secure technologies.
Thus, to Sun, I would like to add my voice to many, many others in saying “Thank you. You did the right thing.”
Kurt Cagle is an author, systems architect and frequent blogger to XML.com. He lives in Victoria, British Columbia with his wife and daughters, and is only just beginning to come to grips with the term “Generation Gap”.