The road to Java 9: Twice-yearly releases are coming
Oracle will speed up the releases of standard Java, with a new release Java Development Kit (JDK) coming every six months and a long-term support version that gets updated every three years. As a result, the next version of Java will be released in March 2018, six months after this month’s planned Java 9 release.
Until now, Oracle has delivered major releases of Java every two years or so, anchored by a major feature or two. But that anchor-feature-driven approach has caused delays in the upcoming JDK 9, which is finally due to arrive on September 21 after being stalled by development of its complex modularity feature.
Oracle will also create OpenJDK binaries of the twice-yearly update for major versions of Linux, MacOS, and 64-bit Windows. But it will not create such binaries for Solaris, 32-bit Windows, or other operating systems. The Java community is free to create OpenJDK binaries for other operating systems from Oracle’s code.
The current approach “made it possible to deliver big new features at a high level of quality after thorough review and testing by early adopters,” said Mark Reinhold, chief architect of Oracle’s Java platform group. “The cost, however, was that smaller API, language, and JVM features could only be delivered when the big features were ready.” That was okay when Java competed with just a few platforms, but it now competes with many platforms that evolve at a more rapid pace, he said.
The new approach for Java releases mirrors what happens now for Fedora, Red Hat, and Ubuntu versions of Linux, where there’s a fast release schedule for those comfortable with upgrades twice each year and a slow release for those who seek stability for several years. Microsoft’s Windows 10 is following in the same direction.
The first new long-term support release for Java will ship in September 2018, a year after Java 9 ships under the old release schedule. Updates will be available for at least three years, and possibly longer, Oracle says.
Internally, Oracle will have a single, long-running JDK project to host the mainline code base and feature releases. A separate JDK Updates project will produce update releases, both for the current “feature” release (the twice-yearly version) and for the current long-term support release (the every-three-yeras release). Fixes, enhancements, and new features from the “feature” releases would be integrated in the mainline version only when it is finished.
Oracle will continue to use the Java Enhancement Proposal process for new features and other significant changes.
Oracle intends to work with other OpenJDK contributors to establish a build-and-test infrastructure to make it easier to publish early access builds for features in development and eventually to enable the OpenJDK community itself to publish authoritative builds of the JDK.
Also, beginning with this month’s JDK 9, OpenJDK builds will be shipped under the Gnu General Public License (GPL) to make it easier for developers to deploy Java applications to cloud environments. OpenJDK binaries will be distributed under the GPL using the Classpath Exception, which lets developers distribute them with their frameworks and applications.
Oracle will “continue to ship proprietary Oracle JDK builds, which include commercial features such as Java Flight Recorder and Mission Control under a click-through binary-code license,” Reinhold said. Oracle will also continue to offer paid support for these builds.
Following JDK 9’s release, commercial features will be open-sourced to make OpenJDK builds more attractive to developers and reduce the differences between these builds and Oracle’s JDK.