The information on these pages may be out of date, or may refer to
resources that have moved or have been made read-only.
For more information please refer to the Apache Attic
Our roadmap and goals are always subject to discussion on the developer's list. As new people join with new focuses and interests, the things we do as a project adapt.
If you have an idea, come and join the community and talk about it.
You need to subscribe to the mailing list first.
Our project goal is an open source, compatible implementation of Java SE. It's a major task being done by a community of volunteers. Thus, the following is an approximate roadmap for what the project hopes to achieve in the next year. ASF and Harmony keeps trying to secure TCK license from the Java SE JSR spec lead, and once it's done we will add TCK certification target dates into the roadmap.
The Java SE 7 JSR has not yet been proposed by Sun. We assume 18 months from start of JSR to completion. We hope to deliver Harmony's implementation of Java SE 7 at the same time Sun does.
The following is a collection of things that the project community has listed as needing to be done. This list is not exhaustive. If you wish to add an item to this list, or discuss or even volunteer to work on an item, please join us on the Harmony mail list.
The following sections describe the high-level areas of effort, and tasks that have been identified for those areas.
As part of the JDK that Harmony will distribute, we'll include the full set of tools that Java programmers expect to find in any JDK. For maximum portability, we plan to write all of the tools in Java, using the Harmony launcher as the portable native code that starts the VM and invokes the tool. Currently, we have the following completed:
appletviewer, jar, jarsigner, javac (via the Eclipse compiler), javah, javap, keytool, pack200, policytool, rmic, rmiregistry, rmid, serialver, unpack200
But we need the following:
javadoc, apt, extcheck, jdb (incomplete)
kinit, klist, ktab, native2ascii
tnameserv, idlj, orbd, servertool
Again, we have the portable launcher framework - we just need volunteers.
From the beginning of our project, we've had a strong interest and focus on modularity. This dedication has paid off in our class library development, as we've been able to evaluate competing implementations of RMI and math, as well as allow developers to isolate development on one module.
The modularity story for the class library is reasonable complete at this point, as we have completed the modularization of the native code as well. However, there is plenty of work to be done with our virtual machines - the goal being able to define a set of standard interfaces to which modular VM components can be written.
Build engineering in Harmony is a complicated subject, as we are building on multiple platforms in multiple languages. So far, we have support for our Windows and Linux ports, but our porting plans indicate that we'll need to revisit given the different toolchains. There are many things to do in this area, many not listed.
libz, libpng, libjpeg, liblcms, libicu*,etc.
The goal of this part of the Harmony project, the build-test framework, is make it easy for anyone to setup the CI infrastructure for the project and submit automated reports on building and testing of the project codebase on that platform.
There is an implementation in place in SVN and it is continuously being improved. The implementation was installed and is running on a number of different platforms. E-mail alerts are sent to a specially created mailing list. But much more work is needed. Ideas include:
Our goal is a high-performance, stable and compatible implementation of Java SE 5. While passing the TCK is a measure of compatibility with the standard, performance and stability is something that must be achieved independently. We are looking to:
The class library is an important (and large!) part of the Java SE platform. While we have made significant progress so far (>99% of Java 5 at last check), there are many, many interesting things remaining to be done.
The work on Java 6 features is underway in a dedicated branch.
java.util.concurrency: integration of Doug Lea's RI package. Goal is to use unmodified code from the 166 expert group and implent whatever support is needed by the VM and rest of class library. (in progress)
VM is a critical part of the Java SE platform. As usual, there are many, many interesting things remaining to be done.
Another motivation of the Harmony project is to provide a portable implementation that is available on many platforms and operating systems. See Supported Platforms for a list of operating systems and architectures that HDK runs on.
As we now have a fairly usable class library and virtual machine, we wish to make it easy for the broad Java user community to help us ensure that the Harmony class library supports the classes necessary for the most popular and used applications out there. While we will complete the class library, tools like this will help us do it in a way that prioritizes the most useful first, enabling even more users to test our software and participate in the project. So far, there have been a few tools donated, but no concerted effort to package for ease of use.