Java 23 Course
A non-LTS release about direction: gatherers, primitive patterns and a big withdrawal.
Take this course in the learning hubLessons
- What a non-LTS release is forJava 23 was never meant for your production estate - understand what it is actually for.
- String templates were removedThe most instructive thing in Java 23 is a feature that disappeared.
- Stream gatherers (2nd preview)The missing piece of the Streams API: your own intermediate operation.
- Primitive types in patterns (preview)Pattern matching stops being reference-only, and the switch finally covers every type.
- Markdown documentation commentsJavadoc finally accepts Markdown, and it went final in 23 rather than staying a preview.
- Module import declarations (preview)Import an entire module in one line instead of hunting for individual packages.
- Implicit classes and instance main (3rd preview)Delete the ceremony from a beginner's first program without changing the language underneath.
- ZGC generational mode by defaultThe flag flip that made the better ZGC the one you actually get.
- sun.misc.Unsafe memory access deprecatedThe long goodbye to the API half the ecosystem secretly depends on.
- Class-File API (2nd preview)A supported way to read and write bytecode, replacing everyone's bundled copy of ASM.
- Flexible constructor bodies (2nd preview)Validate arguments before calling super(), instead of after it is too late.
- Tracking a feature through previewsStructured concurrency and scoped values each hit their 3rd preview here - read the signal.
- The Vector API and long incubationsEight incubations and counting - and the honest reason it cannot finalise.
- Should you run Java 23?A straight answer, and what to do with the release notes instead.
- Living with preview and incubator featuresWhat --enable-preview commits you to, and why it is not for production.