Alina Yurenko
Using GraalVM
in Production
Oracle
About me
‱ Alina Yurenko / @alina_yurenko
‱ Developer Advocate for GraalVM
at Oracle
‱ Love open source and
communities đŸ€
‱ Love both programming đŸ‘©đŸ’» &
natural languages 🗣
@alina_yurenko
GRAALVM 🚀
An advanced JDK with AOT
Native Image compilation
native-image MyMainClass
./mymainclass
JIT AOT
java MyMainClass
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
🎉
🎉
🎉
🎉
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
DEMO đŸ‘©đŸ’»
GraalVM Native Image—Fast Start Up and Much More
Improved
Security
Fast Start
& Scale
Lower Resource
Usage
Compact
Packaging
Predictable
Performance
Wide
Ecosystem
Azure
AWS
GCP
OCI
@alina_yurenko
FRAMEWORKS
AND
LIBRARIES 📚
NATIVE IMAGE
BUILD-TIME DISCOVERY
AND CONFIGURATION
SPRING BOOT
RUN-TIME DISCOVERY
AND CONFIGURATION
SPRING BOOT NATIVE IMAGE
SPRING AOT
SPRING AOT
SPRING AOT
JAVA SOURCE FILES
BYTECODE
HINT FILES
200+ libraries and frameworks integrating and testing with Native Image
Ready for GraalVM Native Image
graalvm.org/native-image/libraries-and-frameworks
@alina_yurenko
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
PERFORMANCE
DEMO đŸ‘©đŸ’»
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
BEST PRACTICES
Container Size (MB)
0
125
250
375
500
Debian 12-slim
+ JDK 21
Distroless Java 21 Distroless Java Base
+ jlink
Distroless Java Base
+ Native Image
Distroless Base
+ Native Image
Distroless Static
+ Native Image
18.1
36.3
48.9
127
199
405
95.5% container image size reduction
JDK’s Simple Web Server
GraalVM Native Image
JVM
Compact
Packaging
@alina_yurenko
Cross-Platform Builds on GitHub Actions
Windows
Executable
macOS
Executable
Linux
Executable
.class
.jar
.class
.jar
GraalVM GitHub
Action 🏗
@alina_yurenko
Recommendations
‱ Migrate 🚀
‱ Add Native Build Tools
‱ Alternatively, use recent versions of frameworks
‱ Evaluate libraries: graalvm.org/native-image/libraries-and-frameworks
‱ Build and deploy đŸ‘·
‱ Build and test on GraalVM as the JVM, build with Native Image closer to the deployment
‱ Quick build mode with `-Ob`
‱ Use CI/CD systems (e.g. GitHub actions) for deployment and cross-platform builds
‱ Monitor
‱ jvmstat, JFR, JMX, Micrometer, cloud vendor solutions
‱ Run faster 🚀
‱ PGO
‱ ML-enabled PGO
‱ G1 GC
‱ `-march=native`
@alina_yurenko
MONITORING đŸ‘©đŸ’»
‱ 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
WHAT’S NEXT?
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
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
Questions & let’s connect! Demos đŸ‘©đŸ’»
@alina_yurenko
Adobe Illustrator 2025 Crack Download free
Adobe Illustrator 2025 Crack Download free

Adobe Illustrator 2025 Crack Download free

  • 1.
  • 2.
    About me ‱ AlinaYurenko / @alina_yurenko ‱ Developer Advocate for GraalVM at Oracle ‱ Love open source and communities đŸ€ ‱ Love both programming đŸ‘©đŸ’» & natural languages 🗣 @alina_yurenko
  • 3.
  • 4.
    An advanced JDKwith AOT Native Image compilation
  • 5.
  • 6.
    2017 2018 20192020 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 ImageAOT 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
  • 8.
  • 9.
    GraalVM Native Image—FastStart Up and Much More Improved Security Fast Start & Scale Lower Resource Usage Compact Packaging Predictable Performance Wide Ecosystem Azure AWS GCP OCI @alina_yurenko
  • 10.
  • 11.
    NATIVE IMAGE BUILD-TIME DISCOVERY ANDCONFIGURATION SPRING BOOT RUN-TIME DISCOVERY AND CONFIGURATION
  • 12.
    SPRING BOOT NATIVEIMAGE SPRING AOT
  • 13.
  • 14.
    SPRING AOT JAVA SOURCEFILES BYTECODE HINT FILES
  • 15.
    200+ libraries andframeworks integrating and testing with Native Image Ready for GraalVM Native Image graalvm.org/native-image/libraries-and-frameworks @alina_yurenko
  • 16.
    Libraries, dynamic Javafeatures, 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
  • 17.
  • 18.
  • 19.
    AOT at thespeed 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
  • 21.
  • 22.
    Container Size (MB) 0 125 250 375 500 Debian12-slim + JDK 21 Distroless Java 21 Distroless Java Base + jlink Distroless Java Base + Native Image Distroless Base + Native Image Distroless Static + Native Image 18.1 36.3 48.9 127 199 405 95.5% container image size reduction JDK’s Simple Web Server GraalVM Native Image JVM Compact Packaging @alina_yurenko
  • 23.
    Cross-Platform Builds onGitHub Actions Windows Executable macOS Executable Linux Executable .class .jar .class .jar GraalVM GitHub Action 🏗 @alina_yurenko
  • 24.
    Recommendations ‱ Migrate 🚀 ‱Add Native Build Tools ‱ Alternatively, use recent versions of frameworks ‱ Evaluate libraries: graalvm.org/native-image/libraries-and-frameworks ‱ Build and deploy đŸ‘· ‱ Build and test on GraalVM as the JVM, build with Native Image closer to the deployment ‱ Quick build mode with `-Ob` ‱ Use CI/CD systems (e.g. GitHub actions) for deployment and cross-platform builds ‱ Monitor ‱ jvmstat, JFR, JMX, Micrometer, cloud vendor solutions ‱ Run faster 🚀 ‱ PGO ‱ ML-enabled PGO ‱ G1 GC ‱ `-march=native` @alina_yurenko
  • 25.
  • 26.
    ‱ Reduced attacksurface 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
  • 27.
  • 28.
    GraalVM for JDK24 🚀 ‱ 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 Getstarted with GraalVM 🚀 graalvm.org github.com/graalvm/ graalvm-demos docker pull container- registry.oracle.com/ graalvm/jdk:24 @alina_yurenko
  • 30.
    Questions & let’sconnect! Demos đŸ‘©đŸ’» @alina_yurenko