Suhas Damodaran

Modularity – The next generation in JAVA


The Java runtime system will no longer be contained in jar files, and instead will be composed of modules. Files such as rt.jar and tools.jar will be a thing of the past. The new system will consist solely of modules, although the platform will continue to accept and run applications and libraries packaged as jar files. The intention is that over time, application developers will migrate to the new modular formats as well.

The next release of Java i.e Java 9 is to feature three new APIs :
1. A lightweight JSON API for consuming and generating JSON documents and data streams
2. A HTTP 2 Client that will bring HTTP 2.0 and websockets, while replacing the legacy HttpURLConnection
3. Process API Updates to improve controlling and managing operating-system process (developers were often forced to use native code with the current API)

Along with several other smaller features, as well as dozens of proposals already being tracked by the JEP Index, Oracle has also promised another trio of performance features :

1. Improve contended locking, which aims at improving performance when threads compete over access to objects 2. Segmented code cache with better performance, shorter sweep times, less fragmentation and further extensions to come 3. The Smart Java compiler, or sjavac, will be improved to allow default use in the JDK build and general use for building larger projects

Modular Source Code EP 201 is aiming to reorganise the source code of the JDK into modules, and thereby essentially lay the foundations for a structured implementation of Project Jigsaw.Jigsaw , which was dropped from Java 7 and pushed back to Java 9, remains one of the biggest talking points of Oracle’s next release. The chief goals of the project are to provide to scalability for smaller devices, improved security for the JDK and Java SE, enhanced performance and easier construction of libraries and large applications. Meanwhile, the Penrose Project is exploring interoperability between Jigsaw and the Open Source Gateway initiative.Oracle has unveiled a second set of features for Java 9.

Unified JVM Logging (JEP 158)

Java 9 will introduce a common logging system for all JVM components. This will overhaul how the JVM reports events in its subsystems and add common logging command-line options for loggers.

More compiler controls (JEP 165)

Oracle wants to provide more fine-grained control of the Hotspot JIT compiler with a series of control options.This improvement will give developers method-context dependent control over optimizations, as well as allowing them to change JVM compiler control options

Deprecated GC combinations to be removed (JEP 214)

This update will remove three outdated garbage collection combinations: DefNew + CMS, ParNew + SerialOld and Incremental CMS, which were deprecated in Java 8. Oracle claims this is motivated by the cost of maintaining these GC combinations. It is hoped that this will free up resources to simplify the HotSpit GC code, thereby reducing bugs and improving other GC combinations.

Project Coin’s “rough edges” to be smoothed out (JEP 213)

Project Coin was initiated to make some small language changes to Java 7.Having concluded that these changes “have been easy to use and have worked well in practice”, Oracle plans return to this project to fix the remaining issues left by modifications to the language.The authors make it clear that this is not a Coin 2.0 project and they will not solicit new language proposals.It is also confirmed that Datagram Transport Layer Security will be supported in Java 9, along with the Javadoc tool for outputting HTML5.

Numerous fixes will also be made to improve import handling, and deprecated classes will no longer trigger warnings. The release of Java 9 is currently planned for 2016.