Java versions
Java 6 through Java 25 each have a version page. This page still describes the earlier versions, including Java 21. Java 25 is a later release.
21 — Java Version Features (5 → 21)
Previous: 20 Streams & Optional · Next: 22 Data Structures
▶️ pkg2versions/versions1Java5Features.java → versions6Java21Features.java
Timeline summary
| Version | Year | Headline features |
|---|---|---|
| 5 | 2004 | Generics, enums, autoboxing, for-each, annotations |
| 7 | 2011 | try-with-resources, diamond <>, NIO.2 |
| 8 | 2014 | Lambdas, Streams, Optional, java.time |
| 9 | 2017 | Modules, List.of, takeWhile |
| 10 | 2018 | var local inference |
| 11 | 2018 LTS | HttpClient, String methods, run .java directly |
| 14 | 2020 | Switch expressions |
| 15 | 2020 | Text blocks |
| 16 | 2021 | Records, instanceof patterns |
| 17 | 2021 LTS | Sealed classes |
| 21 | 2023 LTS | Virtual threads, record patterns, sequenced collections |
Run each demo
1java pkg2versions/versions1Java5Features.java2java pkg2versions/versions2Java7Features.java3java pkg2versions/versions3Java8Features.java4java pkg2versions/versions4Java9To11Features.java5java pkg2versions/versions5Java17Features.java6java pkg2versions/versions6Java21Features.javaWhat to learn from each
Java 5 — foundations still used daily
Generics, enhanced for, enum, ExecutorService.
Java 8 — biggest mindset shift
Stop writing loops for every transformation — use Streams. Replace Date with java.time.
Java 9–11 — cleaner code
List.of(), var, Files.readString, HttpClient.
Java 14–17 — modern syntax
Switch expressions, text blocks, records, sealed classes.
Java 21 — concurrency revolution
1Thread.startVirtualThread(() -> fetchData());Use virtual threads for blocking I/O at scale (HTTP calls, DB queries).
Full reference → Java Versions · 10 Java 9–21 Features
Next → 22 Data Structures
Source named in this chapter
- versions1Java5Featurespkg2versions/versions1Java5Features.java
- versions2Java7Featurespkg2versions/versions2Java7Features.java
- versions3Java8Featurespkg2versions/versions3Java8Features.java
- versions4Java9To11Featurespkg2versions/versions4Java9To11Features.java
- versions5Java17Featurespkg2versions/versions5Java17Features.java
- versions6Java21Featurespkg2versions/versions6Java21Features.java