It's JDK 26 release day! Time to recap the major changes:
* The headlining feature has to be HTTP/3 support for the HTTP client API. This is an opt-in feature, existing applications using the HTTP client API will not automatically use HTTP/3. The underlying QUIC client is not accessible.
* A very interesting change is to G1 synchronization. G1 is the default garbage collector, so this has wide-reaching impacts. The tradeoff here is around 0.2% extra memory usage for about 5% performance improvement, depending on workload. More info: https://openjdk.org/jeps/522
* The Applet API has been completely removed, after the last remnants of marginally useful functionality were removed in Java 24.
* Deep reflection now throws a warning by default. Deep reflection is the extremely cursed practice of taking a class's `final` fields (which mark the field as unable to be changed) and making them not final. The presence of deep reflection completely removes the ability of the JVM to optimize around final fields being immutable. However, there's actually a fair amount of stuff which uses this. In an upcoming version, this ability will be removed altogether (with a replacement for certain use cases relating to deserialization). This has a lot going on, if you're interested: https://openjdk.org/jeps/500
* The AOT cache, recently implemented to improve application warm-up times, is now GC-agnostic
In previews and incubators:
* Stable values have been renamed *lazy constants*, which is a much better name. They also have significant changes, which I think take it in the right direction. I'm still not convinced this is the correct approach, but it's better than it was last time around. https://openjdk.org/jeps/526
* Somewhat surprisingly, "Primitive Types in Patterns, instanceof, and switch" actually has changes this time around. Not major changes, but some definitional tweaks that supposedly help catch bad code.
* The new PEM API has some changes and improvements: https://openjdk.org/jeps/524
* Structured Concurrency, which has been hanging around since JDK 19, has some tweaks. It looks cool, but I'm holding off on seriously looking into it until it actually lands because it's reasonably complex. https://openjdk.org/jeps/525
* And that brings us to the great new Java tradition, the 11th incubator of the vector API! Unfortunately, its dependencies didn't see significant advancement in this release.