Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Apache Harmony Finale

Apache Harmony Finale

This item in japanese

The Apache Harmony PMC initiated a vote earlier this week to begin the process of moving the codebase into the Apache Attic and disbanding the PMC. With 18 for and 2 against, the result will be that the Apache Harmony project will be wound up and placed in the Attic for posterity.

Apache Harmony was an open-source clean-room implementation of the JDK, released under the Apache license, but could never call itself Java compatible as Sun refused to honour the JSPA which would give them access to the Testing Compatibility Kit (TCK), a pre-requisite of which is needed before an implementation can call itself Java. Apache's open letter to Sun, published on April 10th 2007, asked for and failed to receive clarity on the subject.

The primary corporate sponsor of the Apache Harmony project was IBM, who founded the project in a hope of having a less restricted version of the JDK under a non-viral license. However, with Oracle's takeover of Sun it became clear that the JSPA wasn't going to be respected, which left no choice for Apache but to resign from the JCP in December 2010.

When IBM joined OpenJDK there were already questions of whether IBM would continue to be involved in two implementations. At the time, Rod Smith, vice president of emerging technologies at IBM, 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.

This subsequently resulted in Tim Ellison, PMC of Apache Harmony, stepping down from the role. Although there was an opportunity for either the community or another commercial sponsor to step in and continue the Apache Harmony goal, with Oracle's firm stance on the matter it wasn't ever likely to be able to call itself Java. The main beneficiary of the Apache Harmony codebase was Google, who used it to provide their runtime library for Android (although compiled down to the Dalvik virtual machine). However, since Google is currently involved in disputes with Oracle and so avoided getting involved in the Apache Harmony project.

With no PMC and no active committers, ex-PMC Tim Ellison proposed on the mailing list that Apache Harmony be moved to the Attic, where the source code will remain available under a read-only version but no further development work will occur. This does not preclude the possibility of the work being used in the future under a different project, but history suggests this is unlikely to be the case. Instead, Google's focus is on new programming languages such as Go and Dart, both of which could be used in a future version of Android should the Oracle case go against it.

Apache Harmony provided not only a clean-room viral-free implementation of the JDK and JVM, but also strove to provide modularity in a way that OpenJDK still has not. Packages were modularised and broken down into separate units, so applications that needed e.g. and could be bundled, but without java.awt. Although this subset would not be a full Java implementation, many memory-constrained devices would benefit from the faster startup times by not loading unnecessary classes. It also solved problems such as the circular references between e.g. java.beans and java.applet, and thus transitively to java.awt long before Jigsaw started to investigate these problems.

However, advances in Apache Harmony's JVM did not keep up with the performance of Hotspot and other JIT improvements with OpenJDK, with the result that it was rarely used for performance critical systems. And whilst it was capable of booting Eclipse, it was not widely used outside of demonstration cases.

The Apache Harmony language libraries live on, in a forked repository of the Google Android codebase.

Rate this Article