The introduction of the modular system in JDK 9 will help developers to use a small part of Java SE for development on small devices or on separate instances in a cloud environment, for example. Today, 95 features out of 120 are part of the JDK 9 early access. This is a good time to download the early access release and test the new features in JDK 9
The modular system is fully explained in Project Jigsaw. Its aim is to make it easier for developers to construct and maintain libraries and large applications, for both the Java SE and EE Platforms. It will substantially improve the flexibility, performance, scalability and security of the Java platform.
The schedule and features of JDK 9 release are proposed and tracked via the Java Enhancement Proposal (JEP) process. The JEPs, concerning the modular system itself, will impact both the JDK and source code. They are:
- JEP 200: The Modular JDK, which defines the modular structure
- JEP 201: Modular Source Code, which modularizes the source code
- JEP 220: Modular Run-Time Images, which introduces modular runtime images
- JEP 261: Module System, which implement the Java Platform Module System, as specified by JSR 376, together with related JDK-specific changes and enhancements.
- JEP 260: Encapsulate Most Internal APIs. Most of the JDK's internal APIs inaccessible by default but leave a few critical, widely-used internal APIs accessible, until supported replacements exist for all or most of their functionality.
New tools and APIs are being introduced that will require you to make changes to your code or process. Below is a list of those JEPs:
- JEP 222: JShell The Java Shell (Read-Eval-Print Loop).The JShell tool will provide a way to interactively evaluate declarations, statements, and expressions of the Java programming language.
- JEP 282: Jlink: the Java Linker, a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image as defined in JEP 220
- JEP 259: Stack-Walking API, a standard API for stack walking that allows easy filtering of, and lazy access to, the information in stack traces
- JEP 269: Convenience Factory Methods for Collections. APIs allows to create instances of collections and maps with small numbers of elements, so as to ease the pain of not having collection literals in the Java programming language.
- JEP 264: Platform Logging API and Service. Platform classes can use the API to log messages, together with a service interface for consumers of those messages
- JEP 247: Compile for Older Platform Versions. Javac can compile Java programs to run on selected older versions of the platform
- JEP 238: Multi-Release JAR Files. Extend the JAR file format to allow multiple, Java-release-specific versions of class files to coexist in a single archive.
- JEP 272: Platform-Specific Desktop Features. Define a new public API to access platform-specific desktop features such as interacting with a task bar or dock, or listening for system or application events.
- JEP 262: TIFF Image. The Image I/O Framework (javax.imageio), which is part of Java SE, provides a standard way to plug-in image codecs including now TIFF format.
- JEP 251: Multi-Resolution Images. The new API in the java.awt.image package will allow a set of images with different resolutions to be encapsulated into a single multi-resolution image.
Links to more information: