User:Casey Marshall/Apache Harmony

Apache Harmony (also simply called Harmony) is a current effort of the Apache Software Foundation to produce an open source implementation of the Java Platform, version 5.0.

History
Harmony was proposed in May 2005 by Geir Magnusson, Jr. The goals of the project were then declared to be to
 * Create a compatible implementation of the Java platform, licensed under the Apache License, version 2.
 * Develop a modular architecture that would govern this implementation, and give independent implementors a framework for sharing and innovating upon runtime components.

The project was soon accepted into Apache's Incubator site, and discussion over the architecture of the project began in earnest on the project's main mailing list. Early on in the discussion, the possibility of collaborating with the developers of GNU Classpath was raised, but licensing and political issues prevented significant collaboration between the groups from occurring.

The first half of 2006 saw a number of large donations of code, both for the class library and for virtual machines, the majority of which have come from IBM and Intel's middleware products division. These contributions have seen Harmony's class library grow significantly in API coverage and functionality, and as of now the class library, when running on a supported virtual machine, can run some non-trivial Java applications.

Current Status
As of this writing, Harmony's class library has attained 90.44% API coverage of the Java platform, version 1.4, and 87.77%  API coverage of version 5.0 (by "API coverage," we mean the percentage of public classes, and public and protected methods and fields from the standard that exist in Harmony; this metric does not measure the correctness of the implementation). Swing and Java2D are arguably the star packages of Harmony right now, as they are capable of running significant GUI applications such as Eclipse  and jEdit.

Harmony currently has four virtual machine implementations, all of which were donations by external groups: JC Harmony Edition VM, "JCHEVM," based on the JCVM's interpreter, contributed by the author, Archie Cobbs; BootJVM, a simple bootstrapping virtual machine, contributed by Daniel Lydick; SableVM, an advanced, portable interpreter, contributed by authors from the Sable Research Group; and the Dynamic Runtime Layer Virtual Machine, DRLVM, a just-in-time compiler contributed by Intel. Harmony currently also depends upon IBM's proprietary J9 virtual machine.

A complete implementation of the Java platform also requires a compiler that translates Java source code into bytecodes, a program that manages JAR files, a debugger, and an applet viewer and web browser plugin, to name a few. Harmony currently has none of these in its Subversion repository, nor any pending donations for these.

Criticisms
Developers of GNU Classpath proposed collaboration with the Harmony project soon after the project was announced CITE. Heated discussions on mailing lists, permeated with a fair share of trolls and flamebait, eventually died out, without any agreement of collaboration between the two projects. The reasons why no agreement could be reached are numerous and subject to personal interpretation; most would agree, however, that licensing and issues over control of the combined project were significant factors.

This outcome, to some, has made the project's name a contradiction in terms: while the project's name is Harmony, it drove a wedge between developers for the Free Software Foundation and those for the Apache Software Foundation.

Since the bulk of the code that comprises Harmony's class library and virtual machines were donated in large batches by corporations, and because the project cannot be built or run without IBM's proprietary J9 virtual machine, some have questioned whether or not Harmony is truly being developed as an open-source project. Whether or not this situation will continue is an open question, but is one that the maintainers of Harmony are aware of.