Chasing the Grail
summary
JDK 16 adds JDK 16 musl support but upstream drops built-in AOT so Graal native work moves to external toolchains; GraalVM licensing shifts and community/Oracle builds diverge. Demonstrated pipeline uses Liberica Native Image Kit plus Spring Native to produce tiny containers (example: 5.6 MB base + 57 MB app image) that start in ~120 ms and reduce memory footprint; caveats include missing JFR on some slim images, need for debug symbols for async-profiler, and extra ahead‑of‑time config generated by Spring Native to make static compilation work.
AI-written summary · about
chapters (29)
- 0:00Reliability in DevOps
- 1:17Java apps and reliability
- 2:00Container layers and JVM
- 4:30Java application iceberg
- 6:20Base images for JVM
- 8:49OpenJDK image download
- 10:58Large image overhead
- 11:40Slim Java container examples
- 14:47OS layer in base images
- 16:40Alpine Linux for JVM
- 17:43Compressed rt.jar impact
- 19:27Async profiler for apps
- 21:14OpenJDK on Alpine
- 22:17JVM setup with Alpine
- 23:40Public Docker Hub issues
- 24:23Private registries and JDK
- 25:46Early access builds
- 26:48JDK memory savings
- 27:54Native image roadmap
- 29:18JVM container alternatives
- 30:01Static compilation with GraalVM
- 31:45GraalVM Community vs Enterprise
- 33:11Liberica Native Kit on Alpine
- 34:14Smaller Spring microservices
- 37:44Spring plugins for native
- 38:48Manual native build Alpine
- 40:17Container size and startup
- 41:00Memory savings native
- 41:21Try Spring Native and Liberica
related talks
47mBring the action: using GraalVM in production
51mGoing AOT: Everything you need to know about GraalVM for Java applications
45mGoing AOT: Everything you need to know about GraalVM for Java applications
42mJava in the Cloud with GraalVM
44mJava In The Cloud with GraalVM
50mGoing AOT: Everything you need to know about GraalVM for Java
49mBuilding native images for fun and profit
59mMaximizing performance with GraalVM
