[Java] GraalVM으로 AOT 컴파일하기

사용처가 Spring에만 한정된다면, 전용 플러그인 환경을 쓰는 편이 편하다.
https://blog.naver.com/sssang97/223112103468
여기서는 graalvm 환경을 직접 제어해서 사용하는 방법을 정리해본다.




설치 (Linux)

Arch Linux의 경우에는 yay를 통해서 간편하게 설치할 수 있다.

yay -S jdk25-graalvm-bin

그게 아니라면 first-패키지매니저로 설치하기 쉽진 않다.
그 외의 배포판에서는 sdk를 통해 설치할 수 있다.

sdk install java <version>-graal

정상적으로 설치했을 경우, java 런타임과 함께 설치가 되고

그 안에 native-image라는 graalvm 빌드 도구가 함께 들어있을 것이다. 중요한건 이거다.

이걸 사용하면 GraalVM에서 지원하는 언어들을 모조리 네이비트 실행파일로 만들어버릴 수 있다.




Java를 Graalvm으로 컴파일하기

가장 일반적인 사용례는 자바를 JVM 없이 실행파일로 컴파일해버리는 경우일 것이다.

이걸 컴파일하려면 다음과 같이 실행하면 된다.

native-image -O3 -march=native 클래스파일명 -o 실행파일명

-O3이 최적화 레벨이다.


그러면 이렇게 뭘 잔뜩 거창하게 띄우면서 컴파일을 시작한다.
컴파일 속도는 좀 많이 느린 편이다. 맨날 Rust 컴파일 느리다고 놀리는데, 내가 볼때는 이게 더 느리다.


컴파일이 끝나면 독립적인 실행파일이 딱 떨어진다. 그대로 그냥 쓰면 끝이다.



참조
https://www.graalvm.org/latest/getting-started/linux/