Oracle continues to pile on the new features planned for Java 9, posting feature outlines for unified JVM logging and additional compiler controls, as well as plans to remove deprecated garbage collection combinations and fix Project Coin.
Adding to the initial Java 9 feature set approved for release back in August, Java chief architect Mark Reinhold confirmed already-announced plans to implement modular source code in Java 9. In an OpenJDK mailing list e-mail, Reinhold expanded on the ideas laid out in Project Jigsaw to stop using JAR files inside the JRE and JDK, and instead to use modules and a new modular runtime image mechanism to enable and inspect Java classes “in a way that’s immune to future internal format changes,” he wrote.
(Related: Other features planned for Java 9)
The OpenJDK 9 project has also been updated to include several new features and change proposals:
• Unified JVM Logging: Plans to introduce a common logging system for all components of the JVM complete with command-line options, plain text messages, file rotation and configuration, and multi-line output for error, warning, information, debugging and trace levels of the JVM.
• Compiler controls: JVM compiler improvements by way of encapsulating control into a set of applicable options that can be set during runtime depending on method compilation. The goal is to add fine-grained control and method-context-dependent control of the JVM without performance degradation.
• Removal of garbage collection combinations deprecated in JDK 8: Plans to reduce the high maintenance cost of existing garbage collection combination upkeep by removing deprecated garbage collection combinations allowing for simplifications in the HotSpot garbage collection code to reduce bugs and speed up development.
• Milling Project Coin: Originally introduced in Java 7, Project Coin introduced small language changes. Oracle will fix any remaining issues to prevent Java 9 errors by allowing @SafeVarargs on private instance methods, allowing effectively final variables to be used as resources in the try-with-resources statement, allowing diamond with inner classes if the argument type of the inferred type is denotable, and completing underscore removal from legal identifier names.
The full list of all proposed and approved features targeted for Java 9 is available here.