Andy Reitz (blog)

 

 

JavaOne: TS-7722: The Apache Harmony Project

Harmony is a new project from the Apache Foundation, to do an Open Source J2SE implementation.

Why now?
  • Lot of interest from community, companies
  • J2SE 5 is first version where JCP license permits doing OSS implementation of JVM
  • Sun cautiously supportive
Platform includes both VM and runtime (libraries) -- both critical to have J2SE implementation. Want freedom of license for components, flexibility of reuse (want to write your own JIT? Do that part, and reuse the Harmony runtime in order to get a complete system). Requires deep work (VM and JIT -- lot of hardcore CS stuff going on) and broad work (libraries -- just lots of code). They also want to build platform that is 100% compatible, and reasonably as fast. Goals: build community, build architecture, then get it finished and certified. The result will be to push Java into places where it isn't now, and where it cannot go.

Motivations:
  • Not going to fork Java
  • Not going to add new and incompatible technologies
  • too hard, OSS can't do it -- wrong, OSS is just license & community, says nothing about technology
  • license of VM is a major deal to some people
  • What about Mustang? Not Open Source.
  • Enable widespread adoption of Java, without re-engineering
  • Provide open and free platform for Linux and BSD communities
  • Java is 2nd-class citizen on Linux, Mono making big inroads...
  • Get at developing economies (like Brazil), that can't afford commercial licenses, or have government directive to embrace Open Source
Design will emphasize portability, so it can run on many platforms.

State of OSS Java:
  • Kaffe VM - borg of VMs (absorbs everything), focus on portability, but performance lags. Harmony is going to work with them
  • GNU Classpath - Java class library; long-running; work with them, but licensing issues
  • Jikes RVM - research VM; VM written in Java (little C and ASM for bootstrap); good performance characteristics
  • ORP C/C++ research VM (Intel research); under Intel license
  • GCJ - compile Java to native binary; lot Harmony can learn from them
  • KVM - run Java bytecode on Mono (fast); not Harmony approach, but learn from them
  • JavaL(?) - brazilian effort similar to Harmony
In summary, I think that Harmony is a great project. Java is going to need a truly open source implementation if in order for it to remain relevant and popular for the next 10 years. However, this is going to be a very hard project, on the implementation side. So, while the though of having an OSS JVM is exciting, I have to temper this with the fact that I think it is going to take Harmony a long time to produce a working JVM.