GraalVM Native Image
GraalVM Native Image — це технологія попередньої компіляції (ahead-of-time — AOT) Java-застосунків у самостійні нативні виконувані файли (бінарники). На відміну від звичайної Java, де код виконується у Java Virtual Machine (JVM), Native Image створює файл, який працює безпосередньо в операційній системі, значно прискорюючи запуск (за мілісекунди) та зменшуючи використання пам'яті.
Ключові особливості та переваги:
- Миттєвий запуск. Програми запускаються практично миттєво, що критично важливо для Serverless (наприклад, AWS Lambda) та мікросервісів.
- Низьке споживання пам'яті. Native Image споживає значно менше оперативної пам'яті, оскільки не потребує завантаження віртуальної машини JVM, метаданих класів та JIT-компілятора.
- Самодостатність. Створений виконуваний файл містить лише необхідний код програми та бібліотек, що робить його меншим за розміром, ніж JAR-файл разом із JRE.
- Безпека та ізоляція. Нативні образи забезпечують закриту систему, в якій заздалегідь відомі всі доступні класи, що може підвищити безпеку.
Обмеження: Компіляція у нативний образ займає набагато більше часу, ніж створення звичайного JAR, а також потребує багато ресурсів
Встановлення та налаштування GraalVM
Розглянемо встановлення GraalVM на Ubuntu.
Завантажити graalVM:
wget https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz
Розпакувати:
tar -xzf graalvm-jdk-25_linux-x64_bin.tar.gz
В результаті буде створена директорія із вмістом:
~/graalvm-jdk-25.0.3+9.1/
Відкрити .bashrc:
nano ~/.bashrc
Додате в кінець ~/.bashrc
export GRAALVM_HOME=~/graalvm-jdk-25.0.3+9.1 # свій шлях
export OPENJDK_HOME=/usr/lib/jvm/java-25-openjdk-amd64 # шлях до JDK
alias use-openjdk='export JAVA_HOME=$OPENJDK_HOME && export PATH=$JAVA_HOME/bin:$PATH && java -version'
alias use-graalvm='export JAVA_HOME=$GRAALVM_HOME && export PATH=$JAVA_HOME/bin:$PATH && java -version'
Збережіть зміни в файл і закрийте (Ctrr+S, Ctrl+X)
Застосуйте зміни:
source ~/.bashrc
Використання:
use-openjdk # перемикнутись на звичайну Java 25
use-graalvm # перемикнутись на GraalVM 25
Для компіляції проєкту необхідно додати плагін в pom.xml
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Компіляція в нативний файл:
mvn -Pnative native:compile
Запуск:
./target/projectname
Коментарі
Дописати коментар