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: •
The VM core: with its subcomponents concentrates most of the JVM control functions. •
The porting layer: hides platform-specific details from other VM components behind a single interface and is based on the
Apache Portable Runtime layer. •
The garbage collector: allocates Java objects in the heap memory and reclaims unreachable objects using various algorithms •
Execution Manager: selects the execution engine for compiling a method, handles profiles and the dynamic recompilation logic. •
Class Library: is a Java standard library. •
The thread manager that handle operating system threading •
The execution engine: consists of the following: • The
just-in-time compiler for compilation and execution of method code. • The
interpreter for easier debugging.
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. 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 (ORB.connect(Object)) 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: • 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. • BEA announced the availability of an evaluation version of JRockit VM running Apache Harmony Class Library. •
JikesRVM, an open-source
meta-circular JVM that use the Apache Harmony Class Library. •
Ja.NET SE, an open source project providing a Java 5 JDK (class libraries, tools, etc.) that run on the
.NET Framework CLR. Ja.NET SE is based on the Apache Harmony Class Libraries. 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).{{cite web ==Application status==