Everyone who follows Java knew that the Apache Software Foundation was going to resign from its nominal Java Community Process leadership position. Apache had given fair-warning that it was not going to rubber-stamp Oracle's Java plans in November. Then, when Oracle rolled over Apache and Google's objections to its Java plans in December, the scene was set for Apache to leave and, eventually, force a Java code fork.

There's a long story behind why Apache, a four-time JCP "Member of the Year" is going with its own Java-related plans. The story actually doesn't start with Oracle, but with how Sun handled the "open-sourcing" of Java in 2006.

The problem's core is that first Sun, and now Oracle, won't give Apache a chance to certify Apache's Project Harmony as being Java Platform, Standard Edition (Java SE) compliant. Today, well, let's let Apache speak for itself from its public statement:

The recent Java SE [standard edition] 7 vote was the last chance for the JCP EC [Executive Committee] to demonstrate that the EC has any intent to defend the JCP as an open specification process, and demonstrate that the letter and spirit of the law matter. To sum up the issues at stake in the vote, we believe that while continuing to fail to uphold their responsibilities under the JSPA [Java Specification Participation Agreement] [PDF Link], Oracle provided the EC with a Java SE 7 specification request and license that are self-contradictory, severely restrict distribution of independent implementations of the spec, and most importantly, prohibit the distribution of independent open source implementations of the spec. Oracle has refused to answer any reasonable and responsible questions from the EC regarding these problems. In the phrase "fail to uphold their responsibilities under the JSPA ", we are referring to Oracle's refusal to provide the ASF's Harmony project with a TCK license for Java SE that complies with Oracle's obligations under the JSPA as well as public promises made to the Java community by officers of Sun Microsystems (recently acquired by Oracle.) This breach of the JSPA was begun by Sun Microsystems in August of 2006 and is a policy that Oracle explicitly continues today.

Therefore, Apache continued, "The Apache Software Foundation concludes that that JCP is not an open specification process--that Java specifications are proprietary technology that must be licensed directly from the spec lead under whatever terms the spec lead chooses; that the commercial concerns of a single entity, Oracle, will continue to seriously interfere with and bias the transparent governance of the ecosystem; that it is impossible to distribute independent implementations of JSRs under open source licenses such that users are protected from IP [intellectual property] litigation by expert group members or the spec lead; and finally, the EC is unwilling or unable to assert the basic power of their role in the JCP governance process."

Apache will get no argument from me. Oracle has run roughshod over Apache's requests. Still, this was not an easy decision for Apache. Such a public break with Oracle is not "The Apache Way."

I'm sure though that Apache's leadership felt like they had no choice. The only chance, if any, Apache had of getting Oracle to finally letting Apache certify Harmony as standard Java was if IBM, a long-time Apache and Harmony supporter, had stood by them. When IBM decided to join Oracle and work on OpenJDK, a competing open-source Java SE in October. Apache's position was nearly hopeless.

Oracle was never, ever, going to change its position. Oracle is an open-source company... so long as it directly benefits from a particular open-source project. If a project doesn't contribute to Oracle's bottom line and isn't under Oracle's control, Ellison isn't interested in it.

What will happen now? I see a Java fork coming. On one side, there will be the "official" open-source Java, OpenJDK, and on the other will be Apache with Harmony. Not long after this, Oracle will sue Apache. After all, Oracle has already sued Google for its use of the Dalvik Java Virtual Machine (JVM) in Android. Oracle will see these as very similar cases. Eventually, the courts will get to decide how "open" an open-source project is when one company gets to call all the important shots.