What is Java? We’re long past the simplicity and naivety of “write once, run anywhere,” and of a vision for a universal programming language.
Java was always about business. The Java Community Process wasn’t ever a forum for interested parties to develop the ideal programming language and an ideal runtime. It was a place for competitors and partners to work together to create a platform that would suit their strategic interests. For a long time, the JCP was about competing effectively against Microsoft.
The JCP has become much diminished from the heady days of the early and even mid 2000s. Debates about Enterprise JavaBeans, about JavaServer Pages, about Plain Old Java Objects… they seem so long ago. Remember the angst about application portability between WebLogic, WebSphere, Oracle, JBoss, and whether Apache should have access to the validation suite?
Once upon a time, that mattered. Or it seemed to matter. It’s been a long, long time since I’ve had a conversation with anyone complaining about a lack of compliance with the Java EE specs or angered by proprietary extensions.
The industry has accepted that Java, as specified by the JCP, is merely one layer of specifications upon which an application server stack is created.
Yet there’s a strong desire, I believe, on the part of most players in the Java community to maintain some unity. It would be a shame were the Java Community Process to fracture, to have its major backers walk away to abandon the technology or to create a permanent fork. Just as all the various Linux distros are built on a common kernel, the many implementations of Java should remain built on a core set of specs from the JCP. Otherwise… what is Java?
That’s why I’m delighted at the bilateral agreement between Oracle and IBM—the two biggest stakeholders in enterprise Java. They’ve agreed on how the JCP should be structured more transparently in the post-acquisition world. They’ve agreed that the OpenJDK should remain a common core for Java.
While that agreement is between only two players, it’s reasonable to expect that others in the Java world would go along. They would be foolish not to. Let’s not be naïve: Java is only important as long as it’s a multi-vendor initiative. That’s its strength. Nobody, not IBM, not Oracle, is going to throw that away.