Java 9: new features, release date and more
By Jamie Mercer
Java 9 has slowly but surely been developing over the last couple of months, with the feature now in Rampdown Phase Two. An official Oracle representative has advised deferral of potential bugs before the official release date.
Generally, the primary features are fixed first (P1 or P2 bugs) during this phase. This will allow basic working functionality at the expense of tolerating a few other minor bugs. The P3-P5 bug fixes that would affect product code are likely to be left until future releases.
The date for a final release to candidates is 6 July, 2017, with a short three week period before general availability. However, there could be potential for another Zero Bug Bounce Phase.
Oracle are wary about potential issues that could be found and reported once Java 9 has been officially released. There is an availability of early access builds open for download and testing, with new updates being published daily.
Oracle is making sure they can see the full overview in action before they can be 100% confident in the release. Developers and freelancers will have to wait a little longer too for Java 9.
Java 9 release date
Java 9 will have an updated JDK version string scheme which will highlight minor, major and critical patch update (CPU) releases. Open JDK has officially listed the general availability target date as July 27, 2017.
If you want a reminder of the release date, then bookmark the Java 9 countdown.
Java 9 features
Java 9 will include nearly 90 features including subsets for the following:
- Developer Convenience
- JVM options
- Native Platform
You can read more about these individual subsets on DZone.
Most people will be aware that Project Jigsaw was left out from JDK 8 to Java 9 after being voted against by IBM and RedHat.
Even though Project Jigsaw will not be included in the next update, there were some exciting developments that were going to happen.
The JEP (JDK Enhancement Proposals) is Oracle’s process for collecting plans for improvements to the Java Development Kit and Open JDK. Mark Reinhold had stated that there would be a highly unlikely chance that any further JEPs will be targeted for the Java 9 release.
However, there was still a chance that there may have been minor enhancements and strongly justified proposals to target new JEP to Java 9; so long as it would not jeopardise the overall release. Oracle’s aim was to use the additional time to stabilise, refine, and perfect the features that already exist rather than add new features.
Java 9 includes a few flagship features: APIs including Process API update, JSON (as part of java.util and money handling API).
The main goals for Java 9 are to:
- Make the Java Standard Edition platform, and the JDK, more navigable to scale down for small computing devices.
- Improve the overall security and maintain not only the JDK but the Java Implementations in general.
- Allow overall improved application performance.
- Make it easier for Java developers to build and uphold the code libraries and larger applications, for both the Java SE and EE Platforms.
Oracle aims to achieve these goals by proposing to design and implement a standard module system for the Java Platform and to apply that system to the Platform and JDK.
To modularise the JDK and other old code bases, the module system has to be powerful enough but still available and functional for all developers and freelance web developers.
Recently, there has been limited capability for handling the operating system processes for Java. In one case, for a user to do something as simple as obtaining your process PID today, they would have to natively access code or use a workaround.
As well, it would require a separate implementation for the individual platforms to ensure that they are getting the right result.
Multi-resolution image API
Oracle will be introducing a new multi-resolution Image API. This significant interface feature in this API is MultiResolitionImage and is available in the java.awt.image package.
Currently, Reactive Programming is popular in developing applications to gain some great benefits. The likes of Scala, Play and Akka frameworks have joined the Reactive Streams.
Oracle is also announcing a new Reactive Streams API. The new Reactive Streams API is a Publish or Subscribe Framework to implement Asynchronous, Scalable and Parallel applications easily using Java language.
Private methods in interfaces
Oracle want users to avoid redundant code and create more re-usability by presenting private methods in Java 9 Interfaces. Users have the ability to write private and private static methods in an interface using the ‘private’ keyword.
Microbenchmarks are here
The JMH (Java Microbenchmark Harness) by Aleksey Shipilev is pushing forward the next step in its development and is joining up with Java as an approved benchmarking solution. Java Benchmarking Harness is used for creating, running, and evaluating nano/micro/milli/macro benchmarks.
There are factors to consider, such as warm-up times and optimisations, which could potentially have a large effect on results.
JMH is the ideal option if you are after the most accurate results to help you achieve the correct decision after your benchmarks. This is now officially becoming an alternative with Java 9.
The Java 9 release will include many other features, including JShell, a REPL (Read-Eval-Print Loop) for Java. Developers are able to evaluate code snippets (declarations, statements, expressions) so that the code can be tested as it is being created.
For more information on Java 9, refer to Open JDK which highlights the current schedule and features.
Update: Since this article was written, the official release date has now been confirmed as 21 September, 2017.