Apache Harmony
Apache Harmony is a retired open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the Board of Directors voted to make Apache Harmony a top-level project. The Harmony project achieved (as of February 2011) 99% completeness for J2SE 5.0, and 97% for Java SE 6. The Android operating system has historically been a major user of Harmony, although since Android Nougat it increasingly relies on OpenJDK libraries. On October 29, 2011 a vote was started by the project lead Tim Ellison whether to  retire the project. The outcome was 20 to 2 in favor, and the project was retired on November 16, 2011. History. Initiation. The Harmony project was initially conceived as an effort to unite all developers of the free Java implementations. Many developers expected that it would be the project above the GNU, Apache and other communities. GNU developers were invited into and participated during the initial, preparatory planning. Apache then decided not to use code from GNU Classpath because it wanted Harmony to be available under the Apache License v2. Apache developers would then write the needed classes from scratch  and expect necessary large code donations from software companies. Various misunderstandings at the start of the project, and proposals from major companies like IBM to donate large amounts of existing code, led some people in the free Java community to view the project as a corporate consortium than an Apache project. One major point of incompatibility between the GNU Classpath and Apache Harmony projects was their incompatible licenses: Classpath's GNU General Public License with the linking exception versus Harmony's Apache License. Difficulties to obtain a TCK license from Sun. On April 10, 2007, the Apache Software Foundation sent  an open letter to Sun Microsystems CEO, Jonathan Schwartz regarding their inability to acquire an acceptable license for the Java SE 5 Technology Compatibility Kit (TCK), a test kit needed by the project to demonstrate compatibility with the Java SE 5 specification, as needed by the Sun specification license for Java SE 5. What makes the license unacceptable for ASF is the fact that it imposes rights restrictions through limits on the "field of use" available to users of Harmony, not compliant with the Java Community Process rules. Sun answered on a company blog that it intended to create an  open source implementation of the Java platform under GPL, including the TCK, but that their priority was to make the Java Platform accessible to the Linux community under GPL as quickly as possible. This answer triggered some reactions, either criticizing Sun for not responding "in a sufficiently open manner" to an open letter, or rather Apache Software Foundation; some think that ASF acted unwisely to aggressively demand something they could have obtained with more diplomacy from Sun, especially considering the timescale of the opening class library. Sun released the OpenJDK in May 2007, along with a specific license to allow  to run the TCK in the OpenJDK context for any GPL implementation deriving substantially from OpenJDK. This does not cover Apache Harmony, which is not GPL-licensed. On December 9, 2010, the Apache Software Foundation resigned from the Java Community Process Executive Committee, in protest over the difficulty in obtaining a license acceptable to Apache for use with the Harmony project. Use in Android SDK. The virtual machine that is used in Google's Android platform (Dalvik up to version 4.4, and its successor, Android Runtime (ART)) uses a subset of Harmony for the core of its Class Library. However , Dalvik does not align to Java SE nor Java ME Class Library profiles (for example J2ME classes, AWT and Swing are not supported). Android 7.0 "Nougat" replaced Harmony with OpenJDK. End of the project. On October 11, 2010, IBM, by far the biggest participant in the project, decided to join Oracle on the OpenJDK project, effectively shifting its efforts from Harmony to the Oracle reference implementation. Bob Sutor, IBM's head of Linux and open source, blogged that "IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK". In March 2011, IBM's Tim Ellison announced  that he resigned as Project Management Chair for Harmony After IBM's disengagement, the project's activity level greatly declined. On October 29, 2011, a poll was started on the harmony-dev mailing list by the project lead Tim Ellison whether to retire the project. The outcome on November 3, was 20 to 2 in favor of retirement. On November 16, 2011, the Apache Software Foundation board of directors passed a motion to terminate the project. One director, Larry Rosen, cast a "no" vote, based on the timing rather than the merits of the proposal; it was otherwise unanimous. The  project was retired on November 16, 2011. Development team. At the start, Apache Harmony received some large code contributions from several companies. Development discussions have taken place on open mailing lists. Later, the Apache Software foundation mentors put a lot of effort into bringing the development process more in line with "the Apache way," and it seemed that their efforts were successful. Last development status. Apache Harmony was accepted among the official Apache projects on October 29, 2006. Architecture. The Dynamic Runtime Layer virtual machine consists of the following components: Support platform and operating system. The project provided a portable  implementation that ease development on many platforms and operating systems. The main focus was on Windows and Linux operating systems on x86 and x86-64 architectures. Class library coverage. The expected donations from software companies were actually received. The Apache Harmony now contains the working code, including the Swing, AWT and Java 2D code which were contributed by Intel. , the Harmony project achieved 99% completeness for JDK 5.0, and 97% for Java SE 6. The progress of the Apache Harmony project can be tracked against J2SE 1.4 and Java SE 5.0. Also, there is a branch for Harmony v6.0 in  development for Java SE 6.0. Apache Harmony developers integrate several existing, field-tested open-source projects to meet their goal (not reinventing the wheel). Many of these projects are mature and well known and other parts of the library needed to be written from scratch. This is a list of existing open source components that are used in the Apache Harmony project; some of them were in use before the project started. Documentation. Harmony is less documented than the alternative free Java implementations. For instance, in GNU Classpath every method of the central CORBA class (ORB) has the explaining comment  both in the standard abstract API class and implementation. In the Yoko project, used by Harmony, most methods both in the standard declaration and implementing class were undocumented at the end of October 2006. Also, GNU Classpath supported both older and newer CORBA features (same as Sun's implementation). Harmony, differently, left the central method of the older standard (codice_1) fully unimplemented. Tools. A complete implementation of the Java platform also needs 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 has the compiler, appletviewer, jarsigner, javah, javap, keytool, policytool, and unpack200. Virtual machine support. Harmony has seven virtual machine implementations that run Harmony Class Library, all of which were donations by external groups: In the end of November 2006, the language support provided by these virtual machine was still incomplete, and the build instructions recommended to use IBM's proprietary J9 instead to run the class library test suite. However, this is not necessary anymore (as of July 2007). As for the rest of the project, DRLVM virtual machine development has now stalled (as of May 2011). Application  status. Since its conception, Harmony grew in its ability to execute non-trivial Java applications. , supported applications include: However, Harmony's incomplete library prevented it from launching some other applications: