JDK 9 Update
Project Jigsaw was long promised as a way to allow programmers to write code that included independent modules. The goal of Jigsaw is to define a standard module system for the Java platform and use it to modularize the platform itself and applications. Jigsaw was designed to be included in Java 8, but lost it, so it is now proposed for Java 9.
In a release on the OpenJDK mailing list, Mark Reinhold, chief architect of Oracle's Java platform group, said that the current build implements all changes described in this JEP, except that the jrt: file system provider has not yet was implemented and the extension engine has not yet been removed.
These packages are intended to allow developers to try Project Jigsaw without having to compile it from sources. The builds are available on the JDK 9 project site .
Changes have also been made to some of the SGPs. JEPs, Java enhancement proposals, are being used to enable new features to be discussed and developed without going through a complete formal specification (JSR). The PECs that are popular and successful will be presented as part of the next complete formal specification.
Updated JEPs provide unified JVM registration and more build controls.
Unified JVM Logging (JEP 158) will provide a common logging system for all components of the JVM. This will change the current way in which the JVM reports events on its subsystems and adds common command line options. This JEP was heavily influenced by what exists in Oracle's JVM JRockit, according to the proposal.
The second JEP to be updated, JEP 165, proposes to improve the control of the JVM compilers by encapsulating the control into a set of options. This would allow different sets of options to be applied depending on the method being compiled and opens the possibility to change the option sets during runtime.
Suggestions were made as Java Enhancement Proposals (JEPs). The PECs provide a way for new features to be discussed and developed without going through a complete formal specification (JSR). The less formal approach makes it possible to come up with proposals that overcome a specific problem.
The idea is that if a JEP is popular and successful, it will be presented as part of the next complete formal specification. This approach makes it possible to have incremental JEPs, rather than a large group of changes at the same time. This is the first time JEPs have been used and the list that Oracle has come up with is relatively small.
The JEPs proposed for JDK 9 begin with improvements to the process API used to control and manage operating system processes. Java SE offers limited support for native operating system processes with an API to set up the environment and start a process. The suggestion is that this should be extended so that developers no longer have to resort to native code.
Improvements to conflict blocking are the next suggestion, with the goal of improving the performance of contended Java object monitors, as measured by a set of benchmarks and tests. This would result in better performance in situations where multiple segments compete for object access.
Another JEP is the provision of a segmented code cache that will split the cache code into distinct segments, each of which contains compiled code of a specific type, to improve performance and allow future extensions. This would be particularly applicable to large applications.
Developing a lightweight JSON API to consume and generate JSON documents and data streams has also been suggested. This would aim to meet the needs of Java developers using JSON.
A better version of Smart Java Compiler (sjavac) is another proposal, Smart Java compilation Phase 2. The idea is that sjavac should be improved so that it can be used by default in JDK compilation and that it should be generalized to that it can be used to build large projects beyond JDK.
The final JEP is for modular source code. This is an internal exercise to reorganize the JDK source code into modules, improve the build system to compile modules, and enforce module boundaries at compile time.
The full list of JEPs can be viewed on the OpenJDK site .