Harmony, an open source Java implementation, is currently in incubator status at the Apache Software Foundation. The Harmony project mission is to create a compatible, independent implementation of J2SE 5 under the Apache License v2, and “create a community-developed modular runtime (VM and class library) architecture to allow independent implementations to share runtime components, and allow independent innovation in runtime components.”
There is a lot of open source activity currently surrounding Java, from JBoss and Geronimo (open source application servers) to MyFaces and Spring (open source web application frameworks), but Java itself is the last proprietary piece of the puzzle. If Harmony is successful, will Sun still matter?
I asked Dalibor Topic, one of the project founders, to tell us more about the history of the project, its importance to the Java community, and plans for the future.
LinuxPlanet: How did the Harmony project get started?
Dalibor Topic: Not being an Apache Software Foundation member, I can not speak authoritatively on the early history on Apache’s side, so I’ll give you a personal account of how we started to build the bridges that led to Apache Harmony. I am a co-maintainer of the Kaffe.org virtual machine, and a developer on the GNU Classpath class library project, which are both long running sister projects to provide a full free software Java implementation.
In 2003 I was involved with making sure that some of Apache Software Foundation’s projects like Apache Ant run well on the then current version of the Kaffe.org virtual machine. That started off the merge of Kaffe and GNU Classpath projects and resulted in some first contacts between Kaffe, GNU Classpath and Apache developers. Kaffe.org started to gradually switch to GNU Classpath for its class libraries, driven by the needs of the users to run some of the excellent Apache software on a fully free stack.
Later in 2004, Mark Wielaard from GNU Classpath and me started looking at ways to improve the quality of GNU Classpath and Kaffe through automatic regression testing with popular free software written in Java. That immediately led us to the Apache Gump project, a continuous integration project that allows bugs preventing popular software from running to be noticed and caught as they happen, before they slip into releases. With the generous help of Leo Simons and Stefano Mazzochi, both Apache developers, we managed to set up Apache Gump with Kaffe and to set up a regression testing environment on top of it.
Going from that collaboration effort, strong ties to other Apache developers were created, most notably to Geir Magnusson Jr. from Apache Geronimo, and Davanum Srinivas from the Apache Axis project. Tom Tromey from Free Software Foundation’s gcj project, Bruno Souza from SouJava, Sun’s head of the Java Community Process Onno Kluyt, Geir, Mark and me met at the Red Hat Free Runtimes summit in Boston in late 2004, to discuss how to make a free software implementation of Java a reality.
While Sun had no interest in opening up their own implementation, Onno assured us that Sun Microsystems has removed the legal obstacles that existed before, which made it impossible for a free software implementation to be certified as compatible with the proprietary runtimes. Geir has worked together with Onno before to make sure that Apache’s Geronimo, a free software implementation of J2EE, could happen, so he was interested in seeing a certified free software J2SE implementation happen as well, and Bruno has a lot of experience with the JCP.
In spring 2005, Geir, Bruno and me met again at the CafeBrazil conference. We discussed how to build a modular Java runtime and class libraries, similar to the concepts embodied in Apache Geronimo.
One idea was to have well-defined interfaces for parts of the VM and the class libraries where other modules can be plugged in transparently, so companies and independent developers can work together on some parts, and compete on others. The concept of “collaborative competition” has worked great for GNU Classpath, which now covers about 90% of 1.5 APIs, and is used by more than two dozen runtimes, which both compete and collaborate on runtime components and the class library.
Given Apache Software Foundation’s successful dealing with the JCP and Sun Microsystems in the past, the possibility of such a project being attractive to both independent developers and companies developing proprietary Java runtimes, and ASF’s good reputation among Java developers, the ASF’s incubator made for a good, prospective home.
After further discussion within Apache, the Apache Harmony project was proposed for incubation, accepted, and we started to work on the legal framework for contributions, merging in first large contributions from Archie Cobbs, IBM and Intel.
This article was first published on LinuxPlanet.com.