When building the classlibrary, ant crashes with a compiler error, a
heap error, or a reflection error.

These problems are all symptomatic of running out of java heap for ant. The
solution is to set the ANT_OPTS environment variable to something bigger than
the default. At the time of this writing, best practice is to set:

We believe that there is broad community interest in coming together to create
and use an open source, compatible implementation of J2SE 5, the latest version
of the Java 2 Standard Edition specification.

What version of Java will you be implementing?

We are starting with Java SE 5, as that is the first version of Java SE for which the
licensing allows an open source implementation, but we'll continue with Java SE 6 and
any subsequent versions that follow.

Why haven't you done this before?

While the Java Community Process has allowed open source implementations of JSRs
for a few years now, Java 5 is the first of the J2SE specs that we are able to do
due to licensing reasons.

Are you doing this to attack Sun?

No, of course we aren't. Apache doesn't support projects that attack any entity,
corporate or otherwise. Sun has been a long-time supporter of Apache and Apache projects,
and Apache has a wide variety of projects that are implementations of Java specifications,
such as Apache Geronimo, Apache Tomcat, Pluto, taglibs, etc.
This project is open to every interested member of the Java community, and every
interested member is welcome to participate in whatever manner they choose.

Are you doing this because Sun refuses to release their source for J2SE
under an open source license?

Not really. We would welcome Sun doing that (as well as anyone else w/ a J2SE implementation!)
as it would save us a lot of time, and we wholeheartedly encourage them to do so ;) but Sun
has the right to do what it chooses with it's intellectual property.
Since we started the project, Sun has announced that they will be open sourcing their implementation, and they've
started the process. Of course, we'll continue to develop Apache Harmony - multiple independent implementations
of Java SE is good for the Java ecosystem.

Will your implementation be compatible with the specification?

Yes

How will you know?

We are going to test it with the TCK from Sun.

How will you license the TCK from Sun. Isn't it expensive?

Sun offers scholarships to qualified non-profits, academics and individuals.
Apache is a qualified non-profit, and has benefitted from this scholarship before,
with the J2EE 1.4 TCK license and support for the Apache Geronimo project, among others.
We will apply for the scholarship, and hope that Sun will grant us the license
and support needed for us to do a good job.

How long will it take?

It will be done when it's done :) This will take a long time, but we hope that
contributions from around the community will help us along the way.

Do you have any code to start?

No, we don't. We didn't want to "bless" any given implementation that might be donated
(if such a thing could happen) but would rather let the community decide how it will
create and develop the platform.

Will you accept SWT if IBM offers it?

Apache is always grateful for contributions from wherever they come, and IBM has a record
of contributions to open source, but it would up to the project community to
decide whether any particular contribution was used in the project.

Why are you going to have an architecture thread?

We wanted a way that we could bring together people from all over the Java community,
even other open-source projects that are related. We welcome everyone to the discussion,
no matter what license they choose to implement under, be it a free software license,
an open source license or a proprietary license. We are here to open discussion and learning,
and to design a great architecture for J2SE platforms.
At Apache, we think that a strong, diverse, meritocratic community is what makes a good
open source project, and we want to be sure that everyone can participate in some way.

Does this compete with Kaffe and Classpath?

People from Kaffe and Classpath are helping start this project!
Their experience in the open source VM and class library is invaluable,
and they bring problems that the larger architecture community discussion can help solve.
We will have an implementation under the Apache License, but we think of this as
complementary rather than competitive. And when we solve a few small license
interoperability issues, we expect we'll be able to complement each other even more.

How will you ensure that the intellectual property of Sun and others is respected?

Good question - this is a very important issue for us. There are several ways, but this
will be a topic for the community to work on at the beginning. So far we've thought of:

We shall ask any person that would be a committer to declare what kind of
non-open-source class library or VM source code they have been exposed to,
and allow us to keep them from participating in the related parts
of the codebase where they may inadvertently violate the IP rights of someone else.

We shall require that any code contribution that isn't a new, original work of
authorship created expressly for the Apache Harmony project be subject to the
standard Apache process for provenance and licensing to ensure that we have
an accurate record of every contribution that wasn't created expressly inside
the Apache Harmony project.

We would like to perform continuous "surveillance" on the codebase we are building,
and compare to class library and VMs from elsewhere, like Sun, IBM, BEA, Kaffe,
etc to ensure that no code from those efforts become part of Apache Harmony
without our knowledge. We do this to protect ourselves, our users, and of course
those other efforts. We don't know yet how to do this, but are exploring ideas
such as having a third party such as Black Duck or an existing licensee (or Sun!)
do this for us. This, like all the topics herein, are open for discussion an change
by the community.

Anything anyone can think of!

Won't this lead to fragmentation in the Java community?

We don't think so. Our intent is to bring people together, let us share what we know,
solve common problems, and collaborate on things where we can. A diverse Java community
is a healthy Java community. Multiple implementations of the Java specifications show
the value of Java - that we do have a specification, that anyone is free to make
a compatible implementation, and that users of Java have the opportunity to run their Java
code in more places, on more platforms. This is the central promise of Java, and we
think that our efforts support this.

How can I get involved and help influence and shape this proposal?
Or is it too late?

Join the community and participate! It's never too late! We're just getting started,
and everything is open to discussion - the community will change what the
community wants to change. What we do in this project is decided by those participating
in the project. This is the Apache Software Foundation - collaborative, meritocratic,
and community-based.