A project to explore more about the new features from Java 8 through Java 21.
- Valhalla: enhance Java object model with value objects and primitive values.
- Loom: project to bring user-mode threads.
-
- Generational Shenandoah (experimental)
- Compact Object Headers (experimental)
- Prepare to Restrict the Use of JNI
- Late Barrier Expansion for G1
- Key Derivation Function API (preview)
- Remove the Windows 32-bit x86 Port
- Ahead-of-Time Class Loading & Linking
- Class-File API
- Steam Gatherers
- Permanently Disable the Security Manager
- Scoped Values (preview 4)
- Primitive Types in Patterns, instanceof, and switch (preview 2)
- Vector API (incubator)
- ZGC Remove the Non-Generational Mode
- Synchronize Virtual Threads without Pinning
- Flexible Constructor Bodies (preview 3)
- Linking Run-Time Images without JMODs
- Module Import Declarations (preview 2)
- Simple Source Files and Instance Main Mathods (preview 4)
- Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
- Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm
- Warn Upon Use of Memory-Access Methods in sun.misc.Unsafe
- Structured Concurrency (preview 4)
- Deprecate the 32-bit x86 Port for Removal
-
Java 23 (Sep, 2024)
- Primitive Types in Patterns,
instanceof
andswitch
(preview) - Class-File API (preview 2)
- Markdown Documentation Comments
- Vector API (incubator)
- Stream Gatherers (preview 2)
- Deprecate the Memory-Access Methods in Unsafe for Removal
- ZGC Generational Mode by Default
- Module Import Declarations (preview)
- Implicitly Declared Classes and Instance Main Methods (preview 3)
- Structured Concurrency (preview 3)
- Scoped Value (preview 3)
- Flexible Constructor Bodies (preview 2)
- Primitive Types in Patterns,
-
Java 22 (Mar, 2024)
- Region Pinning for G1
- Statements before
super
(preview) - FFM API (standard)
- Unnamed Variable & Patterns
- Class-File API (preview)
- Launch Multi-File Source-Code Programs
- String Templates (preview 2)
- Vector API (incubator)
- Stream Gatherers (preview)
- Structured Concurrency (preview 2)
- Scoped Value (preview 2)
- Implicity Declared Classes and Instance Main Methods (preview 2)
-
Java 21 (LTS; Sep, 2023)
- String Templates (preview)
- Sequenced Collections
- Generational ZGC
- Record Pattern (standard) 🚀
- Pattern Matching for
switch
(standard) 🚀 - Foreign Function & memory API (preview 3)
- Unnamed Patterns and Variables (preview)
- Virtual Threads (standard) 🚀
- Unnamed Classes and Instance Main Methods (preview)
- Scoped Value (preview)
- Vector API (incubator)
- Deprecate the Windows 32-bit x86 Port for Removal
- Prepare to Disallow the Dynamic Loading of Agents
- KEM API
- Structured Concurrency (preview)
-
Java 20 (Mar, 2023)
- Scoped values (incubator)
- Record pattern (preview 2)
- Pattern matching for
switch
(preview 4) - Foreign Function & memory API (preview 2)
- Virtual Threads (preview 2)
- Structured concurrency (second incubator)
- Vector API (incubator)
-
Java 19 (Sep, 2022)
- Virtual Thread (preview) 🚀
- Pattern matching for
switch
(preview 3) - Vector API (fourth incubator)
- Record pattern (preview)
- Structured concurrency (incubator)
-
Java 18 (Mar, 2022)
- UTF-8 by Default
- Simple Web Server
- Code Snippets in Java API Documentation
- Pattern matching for
switch
(preview 2) - Deprecated method
finalize
-
Java 17 (LTS; Sep, 2021)
- Restore Always-Strict Floating-Point Semantics
- Enhanced Pseudo-Random Number Generator
- New macOS rendering for Java 2D API
- macOS/AArch64 Port
- Deprecate the Applet API for Removal
- Strongly Encapsulate JDK Internals
- Pattern matching for
switch
(preview) - Remove RMI Activation
- Sealed Classes (standard)
- Remove the experimental AOT and JIT compiler
- Deprecate the Security Manager for Removal
- Foreign Function & Memory API (incubator)
- Vector API (fourth incubator)
- Context-Specific Deserialization Filters
-
Java 16 (Mar, 2021)
- Records (standard)
- Pattern matching for
instanceof
(standard) - Sealed classes (preview 2)
- Unix-Domain Socket Channels
- Warnings for Value-Based Classes
- Foreign-Memory Access API (incubator)
- Vector API (incubator)
- Foreign Linker API (incubator)
- Packaging Tool
-
Java 15 (Sep, 2020)
- Sealed classes (preview)
- Hidden classes
- DatagramSocket reimplementation
- Pattern matching for
instanceof
(preview 2) - Records (preview 2)
- Foreign-Memory Access API (incubator)
- GCs ZGC and Shenandoah turned final
-
Java 14 (Mar, 2020)
- Switch expression (standard)
- Pattern matching for
instanceof
(preview) - Text blocks improvements (preview 2)
- Records (preview)
- Helpful NullPointerExceptions
- Packaging tool
- JFR even streaming
-
Java 13 (Sep, 2019)
- Switch expression (preview 2)
- Text blocks (preview)
- String API updates
- NIO updates
- Socket and ServerSocket reimplementation (Project Loom)
- Dynamic CDS Archives
- ZGC: Uncommit Unused Memory
-
Java 12 (Mar, 2019)
- Switch expression (preview)
- Compact Number Format
- Collectors improvements
- CompletableFuture improvements
- CDS enable by default
- New GC and improvements
-
Java 11 (LTS; Sep, 2018)
- Removal of Java EE Modules, JavaFX and deprecated API
- Http Client (incubator)
- var in lambda expressions
- API improvements
- Null I/O
-
Java 10 (Mar, 2018)
- Process API improvements
- Collections improvements
- Application Class-Data Sharing
var
keyword to declare variables
-
Java 9 (Sep, 2017)
- Milling Project Coin
- Process API
- Platform Logging API and Service
- Concurrency improvements
- Collections improvements
- Project Jigsaw
- Segmented code cache
- JShell
- much more (see JEPs)
-
Java 8 (Marc, 2014)
- API
- Stream API
- Project Lambda
- Repeating annotations
You will need to provide the flag to enable preview and the number of Java version:
java --enable-preview --source 21 SourceCode.java
javac --enable-preview --source 21 SourceCode.java
To use JShell you can use the following flag:
jshell --enable-preview
-
Maven: 3.5.0
- compiler plugin: 3.8.0
- surefire and failsafe: 2.22.0
- plugins using ASM (e.g. the shade plugin) will likely need to be updated as well
To run the examples with Maven use:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>${java.version}</release>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>--enable-preview</argLine>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<argLine>--enable-preview</argLine>
</configuration>
</plugin>
- OpenJDK Projects
- JDK Update Releases
- The Java Version Almanac
- Dev.java - tutorials, news and more
- Inside.java - Sip of Java
- Download Java versions:
- Considerations Bumping Java EE
- Migration tools:
- Presentations:
- Java Projects:
- Blogs: