The early-October announcement from IBM that it was joining the OpenJDK project and abandoning Apache Harmony sent immediate ripples through the Java community. The predictable early reaction was that this was another step in Oracle’s litigation-based attack on Google. That dispute centers on a handful of software patents that Oracle claims were violated by Google’s use of technology that derived in part from Apache Harmony. According to this scheming view, by convincing IBM to support Harmony’s competitor, OpenJDK, Oracle marooned the search giant on an island of technology that had no future, save whatever enhancements Google might care to make.
This view will satisfy conspiracy buffs, but few others. Let’s for the moment remove the suit against Google from the picture and see more clearly what Oracle did do. When the company purchased Sun, it made clear that it viewed Sun as an excellent greenhouse for growing important technologies, but a poor steward of those technologies once they reached maturity. The case in point was Sun’s repeated inability to monetize Java, while companies such as IBM and BEA were drawing large revenue streams from their Java servers.
As Larry Ellison stated with customary candor after the Sun acquisition, he was shocked at how poorly sales were run at Sun and how incapable they were of monetizing their products. Oracle, being a company that does both those activities fairly well, was committed to deriving revenue from its acquisition. Among many actions, it cut off projects that made no particular dollar sense to the company. Hence, the quick shutdown of the OpenSolaris project, the announced closure (later changed) of Kenai, and so on.
In the formal Java community, Oracle took a step that Sun has refused to do for years: revamp the Java Community Process. The JCP, as currently structured, has long been the object of complaints, generally viewing it as slow, out of touch, and unable to push important changes that fell outside of the narrow requests of individual companies.
Oracle has announced that it and IBM will work on designing a revamped JCP. The details aren’t out, but I suspect that it will be both more responsive in some ways and less responsive in others. Oracle’s and IBM’s needs are likely to be more prominent, but a consistent and revived road map of releases is likely to ensue.
In fact, part of the announcement reiterated the commitment to getting Java 7 and Java 8 features stabilized and out the door with alacrity. Given that Java 6 shipped at the end of 2006, there can be no doubt that an accelerated schedule would benefit the entire community. And, if Oracle and IBM can combine to make that happen, so much the better.
With respect to the competing open-source versions of the JDK, the death of Apache Harmony is hardly going to be widely mourned. The dueling versions incarnated one of the problems that bedevil the open-source community, namely the tendency for projects to cluster around solved problems. There are three excellent, free commercial JVMs: HotSpot, JRockit and IBM’s J9. While one open-source JVM was surely necessary, two is a burdensome overkill—burdensome in the sense that there are only a finite number of developers capable of coding JVMs.
By splitting that community with competing products, confusion was sown and engineering resources were made scarcer. To be fair, Harmony predates OpenJDK, and it might have served to apply the pressure on Sun to open up Java. But once Java was open, Harmony became the redheaded stepchild. JVM adoption figures support this view.