Another nitpick: You mention the Harmony project, and you mention GCJ, but you don't make clear that GCJ is an open-source implementation of Java, nor that it is more than an ahead-of-time-compiler. Many people are under misconception that Gcj is just the compiler, and doesn't have a bytecode interpreter or JIT. Gcj does have a bytecode interpreter, and a full set of libraries, and its goal is to be a complete Free Software re-implementatation of J2SE.
There are other open-source Java re-implementations. Most of them use the class library from the GNU Classpath project (as does gcj). An exception is the (misleadingly-named?) Harmony project.