Commentary: Java to Become Open Source
August 15th, 2006Fantastic! This has been a long time coming. The past few years I have watched the Java community go back and forth on the how Java should be managed. The heated discussions about the Java Community Process and the timeliness of the Java Specifications Request implementations has left a good deal to be desired. And true to the tenants of open source, alternatives emerged to scratch that itch. For JSR #12, the JDO specification, you can see there was a 5 year delay from the inception to the implementation. During that time the Java community did not wait around for a robust implementation of the "developed by committee" solution. And Hibernate emerged as the de facto standard for O/R mapping as it beat out other open source solutions like Castor.
Another example of open source beating the JSR process to the punch is Java 1.4 Logging versus Log4j. When the official logging implementation was finally released the open source alternative was already deeply rooted in the Java developers toolkit, it included more features and it was backward compatible to Java 1.2. The official logging solution required Java 1.4 which hindered adoption.
And the need to use open source solutions as an alternative to what Sun and the JCP has been pushing out goes beyond utility frameworks. Central to the Java Enterprise Architecture is EJB, which was ripped apart in books like Bitter EJB. EJB became regarded as too complex, bloated and unnecessary. Lightweight alternatives like Spring emerged as the preferred alternative. And fortunately the committees controlling the JCP started to realize they had to become responsive to the development community. And EJB 3.0 is a result of their adaptation.
The JCP was supposed to release specifications to define a design contract, or interface, which would be implemented by more than one vendor so that companies could have a selection among competing implementations. This would provide replaceable implementations against a standardized specification which is a great idea, but waiting 5 years to get the implementation is unreasonable. The reality on development teams dictated that they must find a solution fast, and open source has been delivering.
And now we see Java will be released with an open source license in October. What need is this going to fill? Consider the problems the Java is facing today:
- Bloated enterprise solutions (EJB)
- Splintered web frameworks (JSF, Struts, Tapestry)
- Lack of direction and vision
- Poor IDE support for the latest framework features
Managing Java under an open source license may help reduce some bloat, but it is not magic bullet. The EJB 3.0 specification is already an improvement due to community involvement. And an open source model may not gather the multitude of Java web platforms into a single, comprehensive solution. Afterall, Tapestry, Struts and the 2 major JSF implementations are already open source under the Apache banner. But if the open source model does streamline Java and unify the diverse frameworks to form a single, clear vision going forward it will allow Java to recruit back many developers who have moved on to more appealing alternatives. And once there is that clear vision the IDEs may be able to add powerful features to support the latest framework features right out of the gate.
Regardless of what happens under this open source license, Java needs a clear roadmap. What is the vision for Java as a web platform and for the desktop? What technologies will be enhanced to overcome their current problems? How will it compete with the likes of Ruby on Rails and ASP.NET 2.0 and Atlas? How will it attract developers back to the platform after they have left to more appealing alternatives?
I have been working with ASP.NET 2.0 for almost 2 years now so I have seen the impact that AJAX and Ruby on Rails has had on the ASP.NET platform. Microsoft was able to quickly create the Atlas project and get working samples out there with strong support in Visual Studio. (You may also notice their push for Smart Clients has died down a bit since AJAX is the clear winner of the two.) I see a few months back that Sun published some AJAX components for JSF. This includes less than 10 components while Atlas should be out in the next couple of months with more than 40 controls with rich integration with advanced databound controls. And every ASP.NET 2.0 website can use the Atlas controls while the JSF components only work with JSF, not Struts or Tapestry.
And what about IDE support? Did you suddenly see Netbeans get a boat load of AJAX features to support these 10 components? Does Netbeans even have support for Javascript syntax checking and debugging? It does not matter because nobody uses it. Most of the Sun developers are still using Emacs. (Dinosaurs prefer Emacs) The rest of us have been using Eclipse or IDEA. And what compelling features do these IDEs have to offer the modern Java web platform? How does an open source license for the Java framework help the IDEs? Does it help here at all?
Putting Java under an open source license at this time is just a distraction. A push to fully implement JSF, augment the web platform with AJAX functionality and releasing a comprehensive set of supporting plugins for Eclipse should have been the priority for this year. Maybe when Ruby on Rails 2.0 and ASP.NET Atlas 2.0 are released next year Sun and the JCP will be on the second draft of a JSF/AJAX initiative which will be implemented in 2010.
