The Apache Harmony project, serving as an Apache-branded open-source version of Java, is moving forward, but a disagreement remains with Sun over compliance testing.
Predating Sun's November 2006 open-sourcing of Java, Harmony was begun in May 2005 and presents an open-source implementation of Java Platform, Standard Edition (SE) 5.0. While the subsequent Sun effort might at first glance seem to have rendered Apache's project obsolete, an Apache official sees room for more than just Sun's open-source Java.
"There are multiple implementations of Java and there happens to be two implementations in open source," said Geir Magnusson, a founder of the Harmony project at the Apache Software Foundation and a member of the Harmony project management committee, on Wednesday.
The Apache Harmony project group announced Wednesday the availability of Harmony 5.0 Milestone 4, another step in delivering a fully compliant implementation of the Java SE 5 specification. Magnusson did not have a date for when Apache plans to release the final product. Harmony is meant for running Java programs and includes the Java Virtual Machine, a Java development kit, and class libraries.
Milestone 4 features enhancements and optimizations, including full 64-bit support and JIT (Just-In-Time) compiler optimizations. The compiler takes Java byte code and turns it into native instances for the CPU, improving performance.
Also added were functionality and coverage enhancements through class libraries as well as improved virtual machine threading. "What the threading does is it allows multiple code paths to execute at the same time," Magnusson said. This provides more efficient handing of Java code, he added.
Apache remains in disagreement with Sun, however, over terms for a TCK (Technology Compatibility Kit) to verify that Harmony is compatible with the Java specification.
"The license Sun is offering to Apache for the TCK, the test kit for the Java specification, prevents Apache from distributing our independent implementation under the Apache license," Magnusson said. According to Apache's interpretation of the Sun license agreement, restrictions are placed on downstream users pertaining to fields of use. Users could not implement the Java variant beyond a plain desktop system, said Magnusson.
For example, using Java in a kiosk, which is a plain PC in a box, would be out of compliance, he said.
Limiting Apache's distribution of its own software is unacceptable, said Magnusson. "We're stuck between a rock and a hard place," Magnusson said.
"Obviously, we'd like the TCK," Magnusson said.
Because of this ongoing dispute, Apache lately has been voting against any JSR (Java Specification Request) that has Sun as being the specification lead. JSRs serve to amend the Java specification as part of the official JCP (Java Community Process). Sun, Apache believes, is out of compliance with the JCP because the company does not provide TCK licenses that do not inhibit how an implementation can be distributed, said Magnusson.