Oracle (press release) and IBM (press release) have today jointly announced that IBM will collaborate in the OpenJDK community to develop the Java platform, starting with the recently revised roadmap for JDK 7.
During the accompanying press conference Hasan Rizvi, senior vice president at Oracle, stated that IBM and Oracle are looking to jointly "accelerate the pace of evolution of the Java Platform". In addition, IBM and Oracle will work together to continue to enhance the JCP, which will remain the primary standards body for work on Java Specifications.
IBM has been a long-term investor in Java, becoming a licensee in December 1995, and the firm, like Oracle, now has a substantial business built up around the platform, in particular with its Java EE products. Whilst Sun made some public statements that it would like IBM to join the OpenJDK community this never happened and Rod Smith, vice president, emerging technologies at IBM, suggested that no detailed conversations took place between IBM and Sun on the topic.
Smith also made reference to the fact that many enterprise Java customers were concerned by Oracle's acquisition and the implications that might have for the Java platform. He suggested that whilst the two companies will continue to compete with their commercial Java offerings, including both their Java EE products and SDKs, the move:
signals to enterprise customers that they can continue to rely on the Java community to deliver more open, flexible and innovative new technologies to help grow their business.
InfoQ asked if IBM would continue to support both Apache Harmony and the other ASF projects with which it is involved. Smith suggested that they would, but also made it clear that IBM would be shifting its development effort from Apache Harmony to the OpenJDK. As part of this, Smith noted that IBM could bring some innovations from the Harmony project across to the Java SE Reference Implementation.
Mike Milinkovich from the Eclipse Foundation thinks the announcement brings calm to recent discussions such as James Governor's unipolar moment and the future of Java, which proposed that forking Java was the way to keep the platform alive. He thinks that it fundamentally changes the equation in at least three important ways:
The presumption of conflict: Many have been assuming that IBM would eventually snap and declare war on Oracle’s Java hegemony, with the battles being fought in places like OSGi, Apache and Eclipse. It is now apparent that is not going to happen. Furthermore, now that IBM is working with Oracle on OpenJDK, we can expect a lot more mutual support within the JCP on driving specifications, especially platform specifications, forward.
Oracle is focused on reviving the business of Java: First and foremost Oracle actually has resources to invest in moving Java forward, whereas Sun’s financial weakness prevented forward progress for at least the past three years. Second, Oracle is putting in place the software engineering discipline and process in place to ensure that future releases of Java can happen on a much more reliable and predictable timetable than Sun. Third, Oracle is large enough and confident enough in its execution that it is much more comfortable in striking business deals with its co-opetition such as IBM. And finally, there will be less talk about community-driven motivations and more focus on the business.
This is an inflection point in the Oracle-IBM relationship: If you think back a few years ago, IBM and BEA were two companies who competed fiercely in the Java marketplace, but managed to collaborate on many JCP specifications and in numerous open source projects at places such as Apache and Eclipse. This is an important step in the relationship between the two companies, at least in the Java space. Hopefully it is a harbinger of additional collaboration.
Mark Reinhold also sees a bright future for the Java platform. After the announcement of Plan B, which Mark posted about only yesterday, is pleased about the collaboration:
I expect IBM’s engineers to contribute primarily to the class libraries, working with the rest of us toward a common source base for use atop multiple Java virtual machines. We each have significant ongoing investments in our respective JVMs; that’s where most of the enterprise-level feature differentiation between our respective products is found, and it makes sense for that to continue. Focusing our efforts on a single source base for the class libraries will accelerate the overall rate of innovation in the JDK, improve quality and performance, and enhance compatibility across all implementations.
He also notes that the tighter integration will be possible both for the Java Community Process and the endorsement of the Java 7 and Java 8 proposals put forwards.
The modular approach used by the Java implementation for the Apache Harmony project might be one aspect carried forward to OpenJDK. Only a week after the OSGi Community Event in which a demonstration of the cut-down OSGi-based modular runtime was given, there were discussions of OSGi minimum environments. Tim Ellison of the Apache Harmony project agrees the mutual respect between IBM and Oracle, and that there will be benefits:
So what's best for the Java ecosystem? I believe that compatibility is vital, and rather than risk divergence the right thing is to bring the key platform development groups together on a common codebase. Lessons learned on Project Harmony will be of value to OpenJDK.
Where this leaves Android is not clear. Since Android is based off the Harmony libraries, the forecast demise leaves Dalvik without a supported library set. However, the libraries have been already forked and are translated to run on top of the Dalvik JVM, so it may be that Google's Android development team considers the fork to be permanent and will leave Harmony to wither; the list of committers never included any Google people anyway; or indeed, any corporate backers other than IBM UK. Stephen Colebourne questions whether Apache will stay members of the JCP and proclaims Apache Harmony dead.
What are your thoughts on the merging of IBM and Oracle resources on OpenJDK?