Java 9 Standard Edition should bring big benefits to developers—as soon as it actually arrives.
The planned update to the popular enterprise language and platform is set to offer a world of new capabilities. Among these are modularity, an experimental version of ahead-of-time compilation, and a REPL (read-eval-print-loop). But the release keeps getting stalled by the major overhaul required for modularization.
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.
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.