Java 9 was initially release in September 2017, but it got some improvements in the October update later on it was final release in January 2018.
Release | Release date | Highlights |
---|---|---|
Java SE 9 | 2017-09-21 | Initial release |
Java SE 9.0.1 | 2017-10-17 | October 2017 security fixes and critical bug fixes |
Java SE 9.0.4 | 2018-01-16 | Final release for JDK 9; January 2018 security fixes and critical bug fixes |
Java 9 Introduced an entire new structure, it is the first update that have an efficient architecture for small size devices and it was made possible due to modular structure. Java 9 introduced a new system to deal with the small devices with java modules. I have the following bunch of unique features/emhacements:
1. Java 9 REPL (JShell) : Introduced a new system to test the program using JShell. The Java Shell tool (JShell) is an interactive tool for learning the Java programming language and prototyping Java code. JShell is a Read-Evaluate-Print Loop (REPL), which evaluates declarations, statements, and expressions as they are entered and immediately shows the results. The tool is run from the command line.
2. Private methods in Interfaces
3. Factory Methods for Immutable List, Set, Map and Map.Entry
4. Java 9 Module System : One of the big change/feature in Java 9 is the Module System. Oracle Corp introduce the Jigsaw Project. The primary goals of this Project were to:
- Make it easier for developers to construct and maintain libraries
- and large applications;
- Improve the security and maintainability of Java SE Platform Implementations in general, and the JDK in particular;
- Enable improved application performance; and
- Enable the Java SE Platform, and the JDK, to scale down for use in small computing devices and dense cloud deployments.
- To achieve these goals we designed and implemented a standard module system for the Java SE 9 Platform and applied that system to the Platform itself and to its Reference Implementation, JDK 9. The module system is powerful enough to modularize the JDK and other large legacy code bases, yet is still approachable by all developers.
5. Modular JDK : Entire JDK was divided into modules and each module is depended on another except base module i.e. top level/default module. A key motivation of the module system is strong encapsulation and Each module must explicitly state its dependencies. According to Java Specification Lead, Mark Reinhold, a module in Java is a named, self-describing collection of code and data in the form of a type (classes and interfaces). Until Java 8, packages were the highest level of aggregation possible, but Java 9 introduced a new language element called a module. This is basically a named group of packages that can be reused like a resource. Every module has a module descriptor, a metadata specifying the following items:
- Name of the module
- Services offered by this module
- Services consumed by this module
- The reflection it allows to other modules
- Dependencies it has on other modules
- Specification of the list of packages that are publicly exported to other modules as module APIs
6. Modular Java Source Code
7. Modular Run-time Images
8. Encapsulate Java Internal APIs
9. Java Platform Module System
10. Process API Improvements : New interfaces in Process API:
- java.lang.ProcessHandle
- java.lang.ProcessHandle.Info
11. Try With Resources Improvement
12. CompletableFuture API Improvements
13. Reactive Streams : Java SE 9 has introduced the following API to develop Reactive Streams in Java-based applications.
- java.util.concurrent.Flow
- java.util.concurrent.Flow.Publisher
- java.util.concurrent.Flow.Subscriber
- java.util.concurrent.Flow.Processor
14. Diamond Operator for Anonymous Inner Class
15. Optional Class Improvements
16. Stream API Improvements
17. Enhanced @Deprecated annotation
18. Multi-Resolution Image API : Oracle Corp is going to introduce a new Multi-Resolution Image API. one of the most Important interface in this API is MultiResolutionImage . It is available in java.awt.image package
20. Miscellaneous Java 9 Features :
- GC (Garbage Collector) Improvements
- Stack-Walking API
- Filter Incoming Serialization Data
- Deprecate the Applet API
- Indify String Concatenation
- Enhanced Method Handles
- Java Platform Logging API and Service
- Compact Strings
- Parser API for Nashorn
- Javadoc Search
- HTML5 Javadoc
- HTTP 2 Client
Comments
Post a Comment