Skip to main content

Faster Spring Boot Startup with the JDK AOT Cache (JEP 514/515): Benchmarks vs CDS and Native

A Spring Boot 4.1 service started 3.9 s on a plain JDK 25 and 2.0 s with the JDK AOT cache, from one extra flag. Measured against AppCDS, Spring AOT and a GraalVM native image, with 24 ways the cache gets silently rejected (rebuilt jar, copied files, ZGC, compact headers), the Docker consequences, and what is and is not known about Netflix's production use.

Oracle JDK 21 Free Updates End in October 2026: Which JDK Should You Run?

Oracle plans to move Oracle JDK 21 updates from the No-Fee license to the OTN license starting with the 20 October 2026 patch update. What that does and does not mean, how to check which JDK you actually run, the support dates of the main OpenJDK builds of 21 and 25, and a migration checklist.

What Actually Got Faster in JDK 27: Measured on a Spring Boot App

The same Spring Boot 4.1.1 service on JDK 25 and JDK 27, with compact object headers opted in and out. The footprint win is real and repeatable (about 24 MiB less live heap); throughput, p99 and startup are not distinguishable on a small box. Includes the numbers, the noise, and a flag that gets the memory win on JDK 25 today.

ZGC in JDK 28: Adaptive Heap Sizing (JEP 546) and Faster Startup (JEP 545)

JEP 545 and JEP 546 aim to make ZGC pick its own heap size and start faster in JDK 28. Both are only proposed for JDK 28 and the flag is not in any build yet, so this post explains the design, measures today's startup and warmup baseline on JDK 25, 27 and 28 early access with a Spring Boot 4.1.1 server, and gives you a harness to rerun when the flag lands.