Java 8 to 27 — The Journey

The useful path from Java 8 to Java 27: live on the LTS stops (8, 11, 17, 21, 25), then take 27 for four runtime defaults. Previews stay in the lab.

Stops
Live on the LTS hops: 8, 11, 17, 21, 25, then 27.
Write
New code should not look like Java 8. Records on 17. Virtual threads on blocking I/O once you are on 21.
Java 27
G1 everywhere, compact headers on, hybrid TLS, JFR redaction. No language change required.
Between
9 brought modules. 16 finalized records. 26 is a six-month train, not a home.
Lab
Structured concurrency and lazy constants stay behind --enable-preview.
Move
If you are still on 8, land on 17 or 21 before you chase 27 defaults.