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.
In response, a Sun representative said Wednesday that Apache is free to use any of three options for determining Java compatibility, including a scholarship program free of charge to non-profit organizations like Apache. The representative also referred to an August blog entry from Rich Green, Sun executive vice president for software, which addressed the issue. Green cited Sun's choice of the GNU General Public License version 2 as the root of the problem.
"We knew when we chose the GPL and the free software model for Java technology that we couldn't satisfy everyone's desires. This is the case for the Apache Harmony Project at the Apache Software Foundation," Green said.
"Sun has offered Apache Harmony a license to use the JCK (Java Compatibility Kit) and the Java Compatible logo at no charge once their implementation passes the tests, and we're even offering free support to help Apache run the JCK. But because the Apache code is not governed by the GPL and does not require code-sharing by any entity using or modifying Harmony, the terms of this license are the same terms under which Sun licenses the JCK to commercial entities that build their own independent implementations of the Java SE platform," Green said.
"As was made clear in their open letter to Sun, [Apache] is not satisfied with these terms," Green said.
"Unlike the GPL, the Apache open source license does not require innovation to remain in the open. Java technology governed by the Apache license could be altered by any organization -- commercial or non-profit -- and rendered both incompatible and inaccessible to the community. The trust and value of "Write Once Run Anywhere" could not be upheld," said Green.