Pry my Technology Compatibility Kit from my cold dead fingers
Rod Smith, IBM's vice president of emerging technology, said his mighty company was wiling to work with Sun to create a process that would shepherd development of Java towards becoming open source. This would make Java "compatible" with open source and Linux, according to Smith.
With nothing forthcoming from Sun, IBM began to put its support into Apache's Harmony project in 2005, joining the project's board.
While the battle raged, however, 99 per cent of the interested parties - the cube-farm developers busy using Java to make money for their employers - just shrugged and got on with it. The parts of the ecosystem that mattered - the third-party libraries and frameworks such as Spring for example - were mostly already open. As long as the JDK itself was solid and stable, that was enough.
So it was into this universe that Java was released under the GPL in 2006 and a little later that OpenJDK was born. The announcement that Java would use the GPL should have put a sock in the mouths of FOSS advocates, except it didn't because Sun hadn't gone all the way, and had refused to open up the all-important TCK - Technology Compatibility Kit. It was a decision that still baffles many and the question of "why" will likely be eternally debated but never properly answered. To have chosen the most symbolically open of open source licenses, the GPL, and stopped short at a point where the platform could still be convincingly argued to be "closed", makes no sense - unless you examine Sun's underlying motives.
The TCK is the measure of adherence of a Java implementation to the spec. If the implementation doesn't pass the TCK then it isn't pure Java, and Sun would not grant the necessary IP to the aspiring vendor for patents that can't be technically avoided when implementing the spec. And whoever controlled the TCK predominated the Java ecosystem. One theory over why Sun clung to the TCK was because it was their money spinner, their keys to the estate: a way to keep a lid on an open box. If Sun could control the TCK, then it could control who had a Java license and who paid Sun a license fee.
Control of the TCK was a real sticking point for the Apache Software Foundation and its Harmony project - an open implementation of Java Standard Edition (Java SE). In Harmony's original FAQ page, still up on the group's website, the Apache-backed team cheerfully announced that as a non-profit, when it's time they're sure Sun will grant them access to the TCK. Best buddies and appreciative smiles all round.
The license offered by Sun (and now Oracle) for the TCK for Java SE attached restrictions on the Apache Harmony codebase, such that we would not be able to distribute Apache Harmony to users under the Apache License. Sun refused to bend to Apache's protests and in 2007 the open-source group sent an aggressively worded open letter demanding that Sun release the TCK under a license that let it deliver Harmony and in keeping with its obligations under the rules of the JCP. Sun's actions were accompanied by howls of protest from Oracle and others.
The problem for Apache were the field-of-use restrictions attached to the TCK, which say where Harmony is allowed to run to be an officially certified implementation version of Java. Apache was said it was unable to meet the restrictions, saying the restrictions would have made it impossible to distribute Harmony under an Apache license. The TCK for Harmony would have been for Java SE - for use on the desktop.
As the new owner of Java the TCK battle has passed to Oracle and the database giant's former presence in the middle of the clamour for opening of the TCK has proved somewhat embarrassing. Corporates just don't do "activist hippie" that convincingly and the company U-turned on supporting Apache on the TCK to opposing Apache.
The whole issue came to a head in late in 2010 when Apache officially withdraw its membership of the JCP as Oracle refused to give in. Apache said Oracle was doing a Sun and breaking the rules of the JCP.
It's now widely agreed, however, that Oracle's stewardship of Java has provided a much-needed shot of insulin for a platform that had been in development stasis for far too long, with Java 7 nowhere in sight. Since Oracle has been in charge, the company has quickly announced and started to deliver on roadmaps not just for Java 7 but also for its successor, Java 8. The latter is intended to put Java in the cloud. It's helped that Oracle has absorbed many Java types from Sun.
The database giant's time at the top hasn't exactly been a rosy chapter in community relations, though. In a surprise move last year IBM pulled out of Harmony, putting its muscle behind OpenJDK. Apple under Steve Jobs officially joined the OpenJDK too, while the OpenJDK itself has a proposed new set of rules for governance; the rules cement the control of IBM and Oracle over the project and Java.