Add aot-cache module: the JDK 25 AOT cache on Spring Boot 4.1 vs AppCDS, Spring AOT and GraalVM native

A Spring Boot 4.1.1 order service started 12 ways (plain and extracted jar, Spring AOT output, AppCDS, AOT cache trained with and without traffic, JDK 27, native image), ten interleaved rounds each, with first-request latency; 24 cache-mismatch cases; Docker layer arithmetic. Transcripts are in output/ (no docs/ folder).

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TF9JWFvJSNm6HVzswzZU5a
This commit is contained in:
Claude
2026-09-24 16:44:16 +00:00
parent fa4205f631
commit 3e2029ab3a
30 changed files with 1023 additions and 1 deletions
+17
View File
@@ -0,0 +1,17 @@
# java -Djarmode=tools -jar app.jar extract --layers (the layer order Spring Boot's Dockerfile support uses)
layer KB gzip KB files
dependencies 22878 20490 47
spring-boot-loader 0 0 0
snapshot-dependencies 0 0 0
application 8 7 1
# the AOT cache from the training run (context-only), for scale
refresh.aot 61016 15362
# change one line of application code (the unit price in OrderService, built by prepare.sh), extract again
layer before after verdict
dependencies 81a2cb4f9f5c 81a2cb4f9f5c identical: reused from cache/registry
spring-boot-loader abcfa6a9d4df abcfa6a9d4df identical: reused from cache/registry
snapshot-dependencies abcfa6a9d4df abcfa6a9d4df identical: reused from cache/registry
application 4ecdea8230c6 19563974ba7b CHANGED: rebuilt and pushed
AOT cache: trained against the previous jar, so it is stale for the new one (see output/04-mismatch.txt); it must be regenerated after the application layer