Geir Magnusson Jr. sent out a
proposal for "Project Harmony" which would create an open source
implementation of the Java 2 Platform, Standard
Edition (J2SE) version 5 and a "community-developed modular runtime
(VM and class library) architecture for independent implementations
to share runtime components, all to be available under the Apache License, v2.
The proposal calls for "a broad, collaborative community of
contributors," and there is an impressive list of interested parties
in Magnusson's proposal. We talked with Magnusson about the project,
the interest which has been shown so far, and whether Sun had been
approached to cut out the
middleman and simply open source their implementation of J2SE to save
everyone the hassle of doing it again.
Magnusson said that the project "was a long time coming," but
there was not a specific catalyst that made the group decide that now was
the time to move forward. "Finally, we just decided that it's
time." He also emphasized that Harmony is about "building
communities that can collaborate...we're looking at inviting everybody who
wishes to participate."
With regard to Sun and open source Java, Magnusson said that "we
respect Sun's right to make their decision [regarding licensing]."
We also wondered whether Magnusson or someone from the Harmony project had
approached Sun to confirm that the company isn't planning on an open source
version of Java. Magnusson said that Sun had been made aware of the
project, but that he "won't say we've gotten an assurance that
they're not going to do this in the next two years."
Sun's Graham Hamilton has
also said that Sun will probably participate "at some level,
although most of our efforts will continue to be focused on building Sun's
reference implementation of J2SE." Although Hamilton puts a damper
on the endorsement by adding:
I am not entirely sure if the world
really needs a second J2SE implementation, but at the same time I am also
glad to see that all the effort we put into getting the rules and the
licensing issues straightened out is actually proving useful!
Bruno F. Souza, "the number
one Java Evangelist in Brazil," and another individual listed in the
Harmony proposal, also comments on Harmony in his blog and on the need
for a second implementation:
In this, Hamilton is wrong. How important would be J2EE if we had a single
application server? For a long time now the Java Community needs another
J2SE implementation. At this point we don't even have a proof that the JCP
specs are valid! In a recent talk with James Gosling at Café Brasil, while
we discussed Kaffe and Classpath, James commented on how important a clean
room implementation was for this very reason. The work of the FSF on the
Classpath and GCJ projects, and the teams of Kaffe, JamVM and others, are
all validating parts of the spec, what only strengthen our whole
community. The fact that these projects exists should be seen as positive
and should be supported and cherished by all developers, and not ignored
like they have been for so long.
Not only that, but another implementation promotes competition and foster
innovation. An open source implementation helps in research, discussions
and even in the evolution of the Compatibility Kit. Sun recognizes the
value of that, that's why Mustang source code is now available on an
ongoing basis, and why Sun proposed recent licensing changes to its
implementation, to promote this very things. But this is not enough. Sun's
licensing changes get to the edge of the water, but although noticing that
the water is cold can be relaxing and beneficial, it don't really give you
any of the benefits of swimming. I have already discussed elsewhere other
reasons why I think an open source implementation of Java is needed.
There is certainly plenty of need for an open source Java in the open
source community. It's already been commented on, several times, that OpenOffice.org
2.0 has Java requirements that may pose problems for distributions that
don't ship Sun's Java due to license problems. There is also the question
of Java on operating systems and/or hardware architectures not supported by
Sun. Magnusson agreed this was a "personal driver" for his
interest in the Harmony project.
Of course, there are already efforts underway to create open source
implementations of Java, such as Kaffe
and GNU
Classpath. Kaffe is an implementation of the Java virtual machine and
class libraries to provide a Java Runtime Environment (JRE), while GNU
Classpath is a project to create the core class libraries for use with
virtual machines and compilers. There is also the GNU Compiler for Java (GCJ) and many other open source
efforts.
However, there are a few areas where Harmony may be more desirable in the
long run. Firstly, Magnusson stressed the importance of certification for
the Harmony project, to ensure compatibility with Sun's J2SE 5. Secondly,
as an Apache project, the group may be able to draw from a wider group of
contributors than Kaffe or other projects -- particularly from companies
that would like to see a fully-compatible open source implementation of
J2SE 5.
Harmony seems to be getting quite a bit of interest already. Dalibor Topic,
a contributor to both Kaffe and GNU Classpath, is one of the other
individuals who have signed on to the Harmony proposal. He explains his
interest in the project in his Advogato
diary:
What the hell am I doing there, then, not being an Apache? Well, two
things: a) trying to help bring ASF and FSF closer together, and ASF using
and contributing to FSF's class libraries would be a pretty good thing to
happen no matter which path towards a runtime they chose, and b) the ASF
can reach a wide audience among developers programming in the Java
programming language that so far has either not heard, or been skeptical
about Free Software runtimes based on GNU Classpath. For whatever reason
the ASF seems to evoke much less fear and terror in some circles than the
FSF, which may make working with those circles through the ASF easier.
Whether the Harmony, GNU Classpath, Kaffe and other projects will be able
to sort out licensing is another question. We asked Magnusson about the
licensing hurdles, and he said that they are "working to fix
licensing issues" and noted that the project was trying to solve
licensing problems "in parallel," since "licensing
discussions can bog down anything."
There are also those who might prefer to forget Java altogether and
concentrate on something like Mono instead. While Mono is an interesting
technology, it's not always a substitute for Java and may not meet
everyone's needs. It also seems unlikely we'll see broad support for Mono
from all quarters soon, judging by Havoc Pennington's comments on the Java and
Mono discussion with regards to Harmony:
I believe we have legitimate and non-evil reasons why we [Red Hat] can't
ship Mono. And I think open source Java looks plausible and a lot nicer
than C; Java and Classpath will even run on Mono, and if C# becomes more
viable later, experiments such as Graydon's or the Lucene port show that it
isn't hard to do a Java to C# conversion. And guess what, we need open
source Java in the desktop anyhow for OpenOffice.org and the browser plugin
at minimum.
I don't know what people expect Red Hat GNOME developers to do. We can't
roll over and say "OK, we'll start hacking in C#, even though we don't see
a path to shipping any of the stuff we're hacking on" - does anyone
seriously expect that?
...I'm not trying to exhaustively belabor the Java vs. C# technical
comparison but I am trying to point out that Java has a hell of a lot going
for it including open source developer tools and libraries and huge
momentum (largely open source) on the server side. Java 5 has some cute
language features, too, and Tromey has shown how to make native code
bindings easy.
To get a general idea how long it might take for a group to implement J2SE,
one might look at the Apache
Geronimo project, which is an implementation of the Java 2 Platform, Enterprise Edition
(J2EE). The project started in August 2003, and became an official Apache
top-level project in
May 2004. According to Magnusson, the Geronimo project is now working
to pass Sun's TCK for J2EE 1.4, though it isn't clear how much more time
will be required for it to reach full compatibility.
For those interested in participating, Magnusson has sent out a FAQ about the project which
includes instructions on joining the development mailing list. The project
is not yet listed on the Apache Incubator site
yet.
If Harmony is successful, which looks quite likely given the interest it
has stirred already, it will be quite beneficial to the open source
community. While it would be much easier if Sun simply provided an open
source implementation, the community has the tools needed to do so.
(
Log in to post comments)