The anticipated release of Java 9 induced a lot of innovations and impressive new features and Oracle declared a new release agenda for the JDK and that was just the beginning. In the past, developers often criticized that Java wasn’t advancing fast enough.
Java SE 9 got released on September 2017. It includes a long list of capabilities, including modularization, a read-eval-print loop, ahead-of-time compilation, and a memory-saving development for strings storage.
It will add a distinct phase to the advancement of the Java language and enables the JDK team to modify and innovate a lot faster. Java 9 has stopped getting updates since Java 9 was a short-term accelerated release version that has been succeeded by Java 10.
This version of Java has several fundamental architectural changes, as well as a lot of improvements.
Java 9 features include
- JSR 376: Modularization of the JDK under Project Jigsaw (Java Platform Module System)
- JEP 222: jshell: The Java Shell (a Java REPL)
- JEP 295: Ahead-of-Time Compilation
- JEP 268: XML Catalogs
- JEP 266: More Concurrency Updates. It comprises a Java implementation of Reactive Streams, including a new Flow class that will include the interfaces currently provided by Reactive Streams.
- JEP 193: Variable Handles: Establish a standard means to request the equivalents of various java.util.concurrent.atomic and sun.misc.Unsafe operations
- JEP 282: jlink: The Java Linker: Devise a tool that can construct and optimize a set of modules and their dominions into a custom run-time image. It efficiently allows production of an entirely proper execution including the JVM to run it.
- JavaDB was removed from JDK
- JEP 263: HiDPI Graphics: Automatic scaling and sizing
Java 9 should incorporate better aid for multi-gigabyte heaps, better native code integration, a different default garbage collector (G1, for “shorter response times”) and a self-tuning JVM.
To initiate a smooth migration to the modularised Java 9, Java 9 permits unauthorized contemplative access for code on the classpath, used by the JRE to explore classes and resource data. Versions after Java 9 will forbid this capability.
The current compiler control capability is designed to provide fine-grained and method-context-dependent control of JVM compilers, letting developers change the compiler control options in runtime with no execution degradation. The tool also facilitates workarounds for JVM compiler bugs.
Java 9 also neglects Java warnings on import statements, to further compose large code bases clear of lint warnings. These code bases inclusive, deprecated functionality often must be maintained for some time, but conveying a deprecated construct does not guarantee a warning message if uses of the construct are voluntary and subdued.
Java’s active release measure means developers won’t have to wait as long for notable releases. It also may say that developers will skip Java 9 and its “naive” modularity features and wait six months for the modern version, which would probably iron out any complications, said Simon Maple, director of Java advocacy at Java tools vendor ZeroTurnaround.
The new, 6-month release sequence and the suitable support design will require faster updates of current applications and launch new features on a consistent basis. In combination with the evolution of surviving frameworks, like Java EE or spring, this will add a new dynamic to the Java world. And it will also demand a mindset shift in all companies that update their applications every few years.