The road to Java 9: The current status

hot_coffee-100716885-large

Java SE 9—the Java Platform Standard Edition version 9—brings big benefits to developers—and it’s now available.

The update to the popular enterprise language and platform offers a world of new capabilities. Among these are modularity, an experimental version of ahead-of-time compilation, and a REPL (read-eval-print-loop).

 

Java 9 will not receive long-term support

[ADDED September 8, 2017] Oracle’s revamped release plan for standard Java means the upcoming Java Development Kit 9 will not be designated for long-term support. Nevertheless, Oracle believes developers will want it for the new capabilities it brings. It also says that the lack of long-term support is «no different by the way from previous adoption cycles of major releases.“

That’s technically true because the new long-term support approach announced on September 6 applies to releases after this month’s Java 9, but it would have made as much sense to have Java 9 be the first long-term release version, starting the clock on the twice-yearly “feature” releases using Java 9 as a base.

JDK gets faster release schedule, new license

[ADDED September 6, 2017] Once Java Development Kit (JDK) 9 is released later this month, Oracle will release a new version every six months, rather than every few years, as well as release OpenJDK binaries for major Linux versions, MacOS, and 64-bit Windows. It will also produce a long-term stability version that comes out every three years rolling up all the new features and bug fixes made since the last long-term stability version. The first long-term stability version will ship in September 2018, Oracle says,

Oracle is also changing the JDK license to GPL and open-sourcing the JDK. Both moves are supposed to make it easier for developers to adopt Java in their applications.

Modularity: The opposition ends

[ADDED June 28, 2017] Modularity, a key but highly controversial feature of the upcoming Java 9 release, looks to be back on track with the Java community’s adoption of a proposal that had failed in an initial vote weeks earlier.

With the new round of voting completed this week, the Java Community Process Executive Committee passed by a 24-0 vote the Java Platform Module System public review ballot, the subject of Java Specification Request 376.

As a result, Java 9 will include the modularity technology and should meet its current release target date of September 21.

Proposal: Fixes to most Java 9 bugs are on hold

[ADDED June 23, 2017] With the initial release candidate build for Java 9 now published, Oracle has proposed that from here on out, only “showstopper” bugs be fixed for the production Java 9 release, which is due September 21.

The proposal floated this week represents a further tightening up of bug-fixing goals for RDP (Rampdown Phase) 2 of the Java upgrade. The plan calls for fixing all P1 (Priority 1) bugs critical to the success of Java Development Kit (JDK) 9. Also, builders would decommit from fixing any bugs not new in JDK 9 and not critical to the release, even if they had been targeted for fixing.

Java 9 delayed again, this time to September 21

[ADDED May 31, 2017] Already delayed several times before (it was set to arrive in September 2016 at one point), the upgrade is now due as Java Development Kit 9 in September 2017. The release has been mired in disagreements pitting Java steward Oracle against major Java participants such as Red Hat and IBM over whether modularization is on the right track.

The shift to modularity has bedeviled Java

Modularity, via Project Jigsaw, is supposed to boost Java scalability and security. But Java 9’s modularity plans have set off alarm bells around the need to set up two different realms—one for modularity and another lacking it.

Modularity is such a complicated refashioning it was pushed out to Java 9 after being dropped from Java 8, which was released in March 2014.

With modularity, parts of the JDK can be compiled at runtime in several ways. But modularity may not mean all that much for actual coding. “I don’t think that modularization is going to do much to change how people code or change their coding practices or productivity,” said Gil Tene, CTO at Java software vendor Azul Systems. But Oracle’s Mark Reinhold, chief architect of the company’s Java platform group, has been on the modularity soapbox for years, describing Jigsaw as a “profound change” nearly two years ago.

Whether or not developers ultimately find modularity to be useful, it’s all but certain to be added to Java 9. Oracle is now expressing optimism about mending fences with the rest of the Java community over the modular plan and finally, at long last, delivering modular Java in release 9.

New capabilities abound in Java 9

There is more to Java 9 than modularity. Ahead-of-time compilation,albeit in an experimental implementation at least for now, should help with application startup times. The REPL, via jShell, will provide a command-line tool to evaluate declarations, along with an API for other applications to use this capability.

The HTTP/2 client API for Java 9 should help implement the upgrade to HTTP and WebSocket and can replace the HttpURLConnection API. The existing API has many problems, including being hard to use and maintain.

Unified JVM logging will introduce a common logging system for components of the JVM, providing command-line options for logging and helping find root causes of crashes or performance quirks. Also on the Java 9 docket is a new version-string scheme, defining a scheme to easily distinguish major, minor, and security-update releases.

A faster upgrade pace for Java

If Oracle meets the latest target release date for Java 9, about three-and-a-half years will have passed between Java 8 and Java 9. Going forward, Oracle anticipates a faster release cadence, with releases coming every year—or even more frequently—so Java devotees do not have to wait so long for new features.

User sites might be left wondering whether they should accommodate such a quick update cycle. But they also won’t have to wait as long for the key new features that they do want.