Feature | Description | JSR/JEP | Released in |
---|---|---|---|
Java Platform Module System | Introduces a modular approach to Java applications, enhancing scalability, maintainability, and performance. | JSR 376 | Java SE 9 |
Convenience Factory Methods for Collections | Introduces new static factory methods on the Collections, List, Set, and Map interfaces to simplify the creation of immutable instances of these collections. | JEP 269 | Java SE 9 |
Milling Project Coin | Makes small enhancements to the Java programming language which simplify day-to-day coding tasks. E.g. Private methods in interfaces, making “_ ” a reserved word, etc. | JSR 334, JEP 213 | Java SE 9 |
jshell | Provides an interactive tool for prototyping and exploring Java code, known as a read-evaluate-print loop (REPL). | JEP 222 | Java SE 9 |
Compact Strings | Optimizes the String class in the JDK to use less memory whenever possible, without altering the existing APIs. | JEP 254 | Java SE 9 |
XML Catalog API | Introduces a standard API for using XML Catalogs, which simplifies XML processing. | JEP 268 | Java SE 9 |
jlink | Allows developers to create smaller custom runtimes with only the necessary parts of the JDK, reducing the application’s footprint. | JEP 282 | Java SE 9 |
GraalVM’s Ahead-of-Time Compilation | Provides a way to compile Java code ahead-of-time for faster startup time and less runtime overhead. ⚠ Note: Deprecated and removed in Java SE 17. | JEP 295 | Java SE 9 |
Local-Variable Type Inference | Enhances Java with var, allowing developers to skip the type declaration when it can be easily inferred from the context. | JEP 286 | Java SE 10 |
Garbage-Collector improvements | Improves G1 performance for better latency and throughput, and streamlines interface for developers. | JEP 304, JEP 307 | Java SE 10 |
Application Class-Data Sharing | Extends class-data sharing to application classes to reduce startup time and memory footprint. | JEP 310 | Java SE 10 |
Thread-Local Handshakes | Introduces a new way to perform callback on threads without performing a global VM safepoint, improving performance of stopping individual threads. | JEP 312 | Java SE 10 |
Heap Allocation on Alternative Memory Devices | Enables the HotSpot VM to allocate the Java object heap on an alternative memory device, such as an NV-DIMM. | JEP 316 | Java SE 10 |
Root Certificates | Provides a default set of root Certification Authority (CA) certificates in the JDK. | JEP 319 | Java SE 10 |
Nest-Based Access Control | Enhances access control, eliminating the need for compilers to insert bridge methods. | JEP 181 | Java SE 11 |
HTTP/2 Client | Introduces a new API for HTTP/2 support as part of the standard Java APIs. | JEP 110, JEP 321 | Java SE 9, Java SE 11 |
Local-Variable Syntax for Lambda Parameters | Allows var to be used to declare the formal parameters of implicitly typed lambda expressions for consistency and clarity. | JEP 323 | Java SE 11 |
Unicode 10 | Updates the Java platform to Unicode 10, allowing it to support new characters and scripts. | JEP 327 | Java SE 11 |
Flight Recorder | Provides a low-overhead data collection framework for troubleshooting Java applications and the HotSpot JVM. | JEP 328 | Java SE 11 |
ChaCha20 and Poly1305 Cryptographic Algorithms | Implements the ChaCha20 and ChaCha20-Poly1305 cipher suites for secure communication. | JEP 329 | Java SE 11 |
Launch Single-File Source-Code Programs | Allows Java to run a program supplied as a single file of Java source code, simplifying execution of small scripts. | JEP 330 | Java SE 11 |
Oracle JDK Installer for Windows | Updates the Oracle JDK installer for Windows to add executables (like javac) in a path that is reachable from any command prompt, enhancing user convenience. | JDK 11.0.8 Release Notes | Java SE 11 |
Java SE 11 introduced several tools and utilities aimed at enhancing developer productivity and simplifying the development process.
This category includes fundamental changes and updates to the Java programming language, enhancing readability and reducing boilerplate code.
var
, allowing developers to skip the type declaration when it can be easily inferred from the context (JEP 286)._
a reserved word (JSR 334, JEP 213).var
to be used to declare the formal parameters of implicitly typed lambda expressions for consistency and clarity (JEP 323).Enhancements and additions to the Java standard API, providing new capabilities and simplifying common tasks.
Updates and improvements to the JVM and garbage collection, focusing on performance, security, and robustness.