TheKoguryo's 기술 블로그

Version 2023.09.08

7.2 GraalVM 사용하기

GraalVM은 고급 just-in-time(JIT) 최적화 컴파일러를 추가하여 자바 애플리케이션의 성능 향상을 제공하는 자바 런타임입니다. just-in-time 방식으로 바이트코드로 변환된 자바코드를 실행시점에 머신코드로 변환하여 실행할때, 개선된 최적화 기법을 사용합니다. 여기에 추가하여 ahead-of-time (AOT) 방식으로 JVM 없이 런타임에 실행할수 있도록, 바이트 코드가 아닌, 바로 실행가능한 Native Image 생성 기능을 제공합니다. just-in-time(JIT) 방식에서 사용하는 실행시점 최적화가 아닌, 사전 분석한 코드를 기반으로 최적화합니다. 네이티브 이미지 실행을 통해 빠른 초기 기동을 제공하고, 실행시점 최적화 효과가 크지 않고 빠른 기동과 기동 즉시 실행하는 Serverless, 컨테이너 등에 유용합니다. 그리고 자바스크립트, 루비, R과 같은 다른 언어를 실행할 수 있는 환경을 제공하여 서로 다른 언어가 동일 환경에서 구동할 수 있는 기능을 제공합니다.

  • 향상된 just-in-time(JIT) 컴파일러를 통한 성능향상
    • 자바 기반의 애플리케이션을 사용하는 경우 GraalVM 엔터프라이즈를 사용하여, 코드 변경 없이 자바 애플리케이션의 성능 개선을 가져올 수 있습니다.
    • Accelerating Java performance
  • Native Image를 통한 빠른 초기 기동 및 실행 지원
    • Native Image는 Serverless 함수, 컨테이너 등에서 빠른 기동을 제공하지만, 사용하는 개발 프레임워크에서 지원하여야 합니다. MicroNaut, Helidon, Quarkus 등에서 지원하며, Spring 프레임워크에서도 Spring Native를 통해 지원하나, 현재 베타입니다.
    • Announcing Spring Native Beta!
  • 여러 언어를 동일 환경에서 실행할 수 있는 기능 제공

참고

OCI에서 Java SE 및 GraalVM 사용에 대한 권한

  • Oracle Cloud Infrastructure 서비스는 Java SE 구독과 기술지원을 포함하고 있습니다. 또한 Java SE 구독에는 GraalVM 엔터프라이즈가 포함되어 있습니다. 따라서 OCI 서비스 상에서는 GraalVM을 추가비용없이 사용할 수 있습니다.

    image-20220427185703767

GraalVM 기술지원관련

GraalVM은 Java SE 구독에 포함되어 기술지원합니다. Experimental 기능은 운영환경에 사용하는 것을 권장하지 않으며, 기술지원하지 않습니다. 다중 언어 지원 부분이 일부 포함되어 있습니다. Native Image는 Early Adopter 기능으로 운영에서 사용가능하며, 다만, 차후 버전에서 큰 변경사항이 발생해도 기존 버전과 호환되지 않을 수 있습니다. 정확한 사항은 아래 링크를 참조하세요.



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 27 Apr 2022