2. About me
• Alina Yurenko / @alina_yurenko
• Developer Advocate for GraalVM
at Oracle
• Love open source and
communities 🤝
• Love both programming 👩💻 &
natural languages 🗣
@alina_yurenko
6. 2017 2018 2019 2020 2021 2022 2023
2005 2011
... ...
Graal History
Sun Labs’
Maxine Java
JVM initial
release
December
Native Image
open sourced
April
Twitter uses
Graal JIT for
core
microservices
October
Micronaut
1.0 with
Native
Image
support
April
GraalVM 1.0
released
April
Thomas
Wuethinger
joins Oracle and
starts Graal
compiler project
September
Spring Native
project
launched
November
Quarkus 1.0
with Native
Image
support
May
GraalVM
Enterprise
Edition 19
Product
Released
September
MicroDoc
announces
GraalVM for
embedded
July
Alibaba start
using Native
Image in
production
July
Facebook
deploys
GraalVM in
production
May
AWS SDK
support for
Native
Image
November
Spring Boot 3
with Native
Image support
December
OpenJDK
Galahad
project
proposed
July
Google Cloud
Platform SDK
support for
Native Image
June
GraalVM Free
Terms and
Conditions
license
September
GraalOS &
Layered
Native
Image
announced
March
Azure SDK
support for
Native
Image
2024
October
Microsoft
joins
GraalVM
Advsory
Board
September
GraalPy &
GraalWasm
production
ready
🎉
🎉
🎉
🎉
7. GraalVM Native Image AOT Compilation
Ahead-of-Time
Compilation
Application
Libraries
JDK
Substrate VM
Points-to Analysis
Run Initializations
Heap Snapshotting
Input:
All classes from application,
libraries, and VM
Code in
Text Section
Image Heap in
Data Section
Image Heap
Writing
Output:
Native executable
@alina_yurenko
15. 200+ libraries and frameworks integrating and testing with Native Image
Ready for GraalVM Native Image
graalvm.org/native-image/libraries-and-frameworks
@alina_yurenko
16. Libraries, dynamic Java features, and Native Image
• Libraries might be Native-Image friendly out of the box
• twitter.com/YunaMorgenstern/status/1729039787351536084
• Libraries might include config for Native Image:
• github.com/h2database/h2database/blob/master/h2/src/main/META-INF/native-image/
• Libraries might contain config in the Reachability Metadata Repository
• github.com/oracle/graalvm-reachability-metadata/tree/master/metadata/io.netty
• You can use framework support to produce custom “hints” for Native Image
runtimeHints.resources().registerPattern(“config/app.properties”);
• You can use the Tracing Agent to produce the necessary config automatically
• graalvm.org/latest/reference-manual/native-image/metadata/AutomaticMetadataCollection/
• You can provide/extend config for reflection, JNI, resources, serialization, and
predefined classes manually in JSON:
• graalvm.org/latest/reference-manual/native-image/metadata/#specifying-metadata-with-json
Happy path;
most of the cases
Custom code/
libraries
@alina_yurenko
19. AOT at the speed of JIT 🚀
• Profile-guided optimizations
Collect and use profiles to
optimize for the specific runtime
behaviour of your application
• ML-enabled PGO
Use a ML model to
automatically predict the
profile of the application
• G1 GC
Optimize GC for peak throughput
and improved latency
• `-march=native`
Optimize for the specific
hardware features of the
machine you’ll be running on
@alina_yurenko
26. • Reduced attack surface area
due to dead code removal—
unused classes, methods, and
fields not included in
executable
Improved
Security • Not vulnerable to JIT
compiler attacks
all code is AOT compiled
• SBOM supporting industry
standards
Embedded in executables
CycloneDX format
• Not vulnerable to
deserialization attacks via
class loading—executable
includes only required and
specified classes
Reduced Attack Surface 🛡
@alina_yurenko
28. GraalVM for JDK 24 🚀
• Java 24 features 😍
• The fastest GraalVM yet :)
• New ML profile inference for even higher
performance out of the box 🤖
• Smaller executables 📦
• Vector API support in Native Image 🚀
• New SBOM features 🛡
• Developer experience improvements 👩💻
Learn more: medium.com/graalvm
@alina_yurenko
29. sdk install java
24-graal
Get started with GraalVM 🚀
graalvm.org
github.com/graalvm/
graalvm-demos
docker pull container-
registry.oracle.com/
graalvm/jdk:24
@alina_yurenko