Oracle has moved to a new release model since Java 9:
- There are new Java releases every six months.
- Every two (three before java17) years, the September release is designated as an LTS release.
- Non-LTS releases are supported only until the next release.
Java 1.0 (1996)
- First public release
Java 1.1 (1997)
- Inner classes
- JavaBeans
- JDBC
- RMI (Remote Method Invocation)
Java 1.2 (1998)
- Collections framework
- Swing GUI
- JIT (Just-In-Time) compiler
Java 1.3 (2000)
- HotSpot JVM
- JNDI (Java Naming and Directory Interface)
Java 1.4 (2002)
- Assert keyword
- Regular expressions
- Logging API
- NIO (New Input/Output)
Java 5 (2004)
- Generics
- Annotations
- Autoboxing/Unboxing
- Enumerations
- Varargs
- Enhanced for loop
Java 6 (2006)
- Scripting language support
- JDBC 4.0
- Java Compiler API
Java 7 (2011)
- Try-with-resources
- Diamond operator
- Switch with Strings
- NIO 2.0
Java 8 (2014) - LTS
- Lambda expressions
- Stream API
- Optional class
- Default methods in interfaces
- New Date and Time API
Java 9 (2017)
- Module system (Project Jigsaw)
- JShell (REPL)
- Private methods in interfaces
Java 10 (2018)
- Local variable type inference (var keyword)
Java 11 (2018) - LTS
- HTTP Client API
- Launch single-file source-code programs
Java 12 (2019)
- Switch expressions (preview)
Java 13 (2019)
- Text blocks (preview)
Java 14 (2020)
- Records (preview)
- Pattern matching for instanceof (preview)
Java 15 (2020)
- Sealed classes (preview)
- Hidden classes
Java 16 (2021)
- Pattern matching for instanceof (finalized)
- Records (finalized)
Java 17 (2021) - LTS
- Sealed classes (finalized)
- Pattern matching for switch (preview)
Java 18 (2022)
- Simple web server
- Code snippets in Java API documentation
Java 19 (2022)
- Virtual threads (preview)
- Pattern matching for switch (second preview)
Java 20 (2023)
- Scoped values (incubator)
- Record patterns (second preview)
Java 21(2023) - LTS
- Virtual Threads (finalized)
- Pattern Matching for Switch (finalized)
- Record Patterns (finalized)
- Sequenced Collections
- String Templates (preview)
- Unnamed Classes and Instance Main Methods (preview)
- Unnamed Patterns and Variables (preview)
- Scoped Values (preview)
- Foreign Function & Memory API (preview)
- Structured Concurrency (preview)
- Vector API (incubator)