Common Topics

Recent Articles

Open-source Java: Part Two Five years after Sun Microsystems finally released Java under the GPL, Oracle has been pushing hard on the OpenJDK.

The OpenJDK project followed shortly after Sun’s open-sourcing of Java in November 2005; it’s both a free-and-open-source implementation of Java Standard Edition (Java SE).

The project has seen a fresh lease of life under Oracle, Sun's buyer, who has tempted IBM away from the Apache Software Foundation’s Harmony Java SE project and who also recruited Apple to OpenJDK. OpenJDK also has a new set of governance rules, albeit rules that hand Oracle and IBM a duopoly over ultimate control of the project and, therefore, the roadmap.

But five years after Sun let Java go, what’s the state of the platform and technology?

It was the OpenJDK that featured prominently at Oracle’s annual JavaOne developer rally in late summer. In many ways, the show’s keynotes made all the right noises: “We’re moving Java into the cloud”, “We’re hoping to put JavaFX onto iOS and Android” (ahem, unspecified Linux devices), “We’re open-sourcing JavaFX and will contribute it to OpenJDK ready for Java 8.”

These are all very cool, exciting developments, but notably, they all announce future releases. The actual developments that are ready now are less than inspiring given that the teams have had almost five years to work on them since Java 6’s release in December 2006.

During his conference keynote, Oracle’s Java chief architect Java Mark Reinhold – the individual leading the Java roadmap – talked about merging Java Mobile Edition (Java ME) and SE. But given that Android, which Oracle is fighting Google over in the courts, continues to rocket ahead, too little attention was paid to the mobile space.

As rallying keynotes go, Oracle didn’t exactly channel the ghost of Steve Jobs. Reinhold’s “one last thing” moment was to announce that Java 8, which will contain all the bits that we really want to see, has – alas – been postponed from late 2012 to summer 2013.

Among the “cool” developments noted were Project Coin (new language features), which could be called Project ShortChange. So, after five years in the workshop, we can now do this:

try { …

} catch (IOException | SQLException ex)

Another part of Coin, left-to-right “manually triggered” type inference, feels like a woefully underpowered afterthought, given that what we’d like is implicit type inference in all directions. They would have done better to wait for OpenJDK to pick up speed and implement this tricky feature properly, rather than add more kludge rules and “gotchas” into the ever-growing core language.

The roadmap for Java Enterprise Edition (Java EE) 7 for use in building platform-as-a-service (PaaS) is also underwhelming; that’s principally because the key component needed to make Java cloud-friendly and to simplify multi-core, multi-threaded development – namely Lambda functions – continues to be pushed back.

Lambda functions, we were told, will eventually grace JavaFX, Sun and now Oracle’s late entry into building rich media in the browser and on clients. But Lambda functions already there in JVM-based functional languages: take Clojure, where efforts such as Clarity are underway to provide a functional wrapper around Swing. And Scala, which has sublime Swing integration, and also thrives on closures as first-class citizens of the language:

It is, of course, early days yet for the revitalised Java ecosystem with its new foundation in the form of OpenJDK. What we saw this summer was the low point in terms of actual delivery, with lots of hand-waving and pointing to what we can now expect as Java once again picks up speed.