Oracle is no longer totally isolated on Java — IBM now stands with the giant, in a move that potentially stymies Google's Android.

IBM said Monday that it's putting its efforts into the OpenJDK project, run by Oracle, and switching away from the Apache Software Foundation's (ASF's) Project Harmony on Java Standard Edition (Java SE).

The move means IBM is not just committing engineers to OpenJDK, but that it's also backing the roadmap outlined by Oracle for JDK 7 and 8 at OpenWorld last month.

IBM will contribute engineers to OpenJDK, and JDK 7 and 8 due in 2011 and 2012. The move means OpenJDK now becomes the primary venue for changes to Java SE.

IBM's vice president of open systems and Linux Bob Sutor said here: "IBM will work with Oracle and the Java community to make OpenJDK the primary high performance open source runtime for Java."

In switching from Harmony, IBM has given up years of work trying to have Harmony certified as an independent version of Java compatible with the official Java standard. It also means ASF loses a major corporate patron in the fight for certification that begun under the former Sun Microsystems.

Key to certification of Harmony, an ASF project, was the release of the Java Test Compatibility Kits (TCKs) under an open source license. Sun and then Oracle have refused to release the TCKs, a move that has prevented Harmony from being certified as compatible.

Explaining IBM's switch, Sutor said it became clear that first Sun and then Oracle had no intention of releasing the TCKs. "Rather than continue to drive Harmony as an unofficial and uncertified Java effort, we decided to shift direction and put our efforts into OpenJDK," he said.

IBM appears to be backing OpenJDK and Oracle's Java roadmap — and walking out on Harmony — based on two key understandings.

First, IBM will hold what Suitor called a "leadership position" on the management and technical roadmap of OpenJDK. "Our involvement will not be casual," he said. OpenJDK is a respected but reasonably aimless community project started by Sun that Oracle inherited.

The other understanding appears to be that there will finally be an overhaul of the official body responsible for stewarding changes to Java — the Java Community Process (JCP).

Suitor said: "We also expect to see some long needed reforms in the JCP, the Java Community Process, to make it more democratic, transparent, and open. IBM and, indeed Oracle, have been lobbying for such transformations for years and we're pleased to see them happening now. It's time. Actually, it's past time."

It was Oracle's foot dragging and double standards on spinning out the JCP as a vendor-independent organization that isolated Oracle from IBM and everybody else on the ICP.

In return for attracting IBM, it sounds like Oracle is taking responsibility for Java SE from the JCP. According to an Oracle release on the deal: "The two companies will make the OpenJDK community the primary location for open source Java SE development. The JCP will continue to be the primary standards body for Java specification work and both companies will work to continue to enhance the JCP."

The thing that seems to have brought IBM into Oracle's camp was a need to have Java progress. IBM is deeply invested in the success of Java, while Oracle's roadmap for JDK 7 and 8 had zero backing outside Oracle and Sun. And, with no Java Specification Requests (JSRs) yet in place, it seemed JSR 7 and 8 had little chance of being delivered on time.

It seems IBM blinked.

Also, it helped that Sun is no longer in the picture. IBM and Sun fought for years over stewardship of Java. IBM will have less hostility towards Oracle.

IBM's support for OpenJDK and backing off from Harmony leaves Google's Android swinging. Android uses a subset of Harmony, using class libraries and the Dalvik Java Virtual Machine (JVM).

With Harmony's primary backer now gone, it's not clear how the project can progress, and the question is whether Google steps in or flips Android to OpenJDK. Oracle is suing Google over Android because it uses Harmony on mobile instead of using Java Mobile Edition (Java ME) instead. ®