Graal VM 이란?
Graal VM은 Oracle에서 만든 JVM입니다. 근데 평범한 JVM이 아니라 기존 JVM 보다 빠르고, 여러 언어 (JVM 기반이 아닌 언어들도!) 지원합니다.
GraalVM
Graal JIT Compiler Use the GraalVM JDK with the optimizing Graal just-in-time (JIT) compiler to increase your Java application performance.
www.graalvm.org
🐜 빠른 이유?
결국은 JVM에서 하지 않는 각종 최적화를 돌려서 그렇습니다. Graal JIT Compiler는 기존 HotSpot C2 Compiler와 비교해서 훨씬 공격적으로 최적화를 진행하고, AOT도 갖추고 있습니다.
🐜 여러 언어들을 1개의 Runtime에서 돌릴 수 있는 이유?
Graal VM에서는 Truffle Language Framework라는 Java Library를 제공하는데, 이걸 쓰면 기존에 Interpreters를 작성하는 노력에 비해 훨씬 적은 노력으로 Interpreters를 만들 수 있다고 합니다. 결국은 Interpreters를 만들어서 이걸 Graal Compiler가 실행하는 방식입니다.
Graal VM Architecture
- 일단 Java HotSpot VM이 JVM 영역입니다. 이건 Graal VM에만 한정된 건 아니고 대부분의 JVM이 사용하는 영역입니다.
- 파란색으로 된 것들이 GraalVM입니다.
- Graal Compiler는 자바로 작성된 JIT Compiler고, 기존의 HotSpot C2 JIT에 비해 공격적으로 최적화를 진행합니다.
- Truffle Language Framework는 Java Library고, Compiler Frontend의 Parser 부분만 작성해서 AST를 만들면 Graal VM에서 실행할 수 있게 합니다.
Compiler에 대한 지식이 없으시다면 아래 글을 참고해 주세요.
Compiler의 구조 알아보기 (Front-end)
Compiler란?컴파일러도 결국은 컴퓨터 프로그램입니다. 그중에서도 인간이 알아듣기 편한 프로그래밍 언어를 컴퓨터가 알아들을 수 있는 기계어 (0/1로 이루어진 명령어들)로 바꿔 주는 프로그램
jinkpark.tistory.com
- Sulong LLVM은 LLVM이라는 IR로 만들어진 코드를 Graal VM에서 실행할 수 있게 해 줍니다. C, C++, Swift 등이 LLVM으로 만들어질 수 있으니 이런 언어들이 Sulong LLVM을 쓰면 Graal VM에서 실행될 수 있겠네요. (현실성은 없습니다.)
언젠가는 Graal VM을 JVM으로 쓰게 될까?
사실 미래를 예측하는건 어떤 분야든 쉽지 않습니다. Graal VM은 아직 많이 쓰지는 않습니다. 세월의 풍파를 겪으며 안정화 돼 온 각종 JVM에 비해서는 아직 신생아 단계이기 때문입니다.
Oracle이 얼마나 Graal VM에 투자하고 진화할 지도 예측이 어렵습니다.
하지만, 지금 Graal VM이 보여준 가능성을 보면 언젠간 가능하지 않을까 싶습니다.
다른 언어도 모두 Graal VM으로 쓰는 건 얼마나 현실성이 있을까?
이미 전사적으로 JVM 기반 언어를 사용하고, 왜인지 여러 다른 언어를 엄청 섞어서 쓰고, 그 언어가 Interpreted 언어라면 안 될 것도 없습니다. 하지만... 이런 환경이 얼마나 될까요?
여러 프로그래밍 언어는 보통 각각 자주 쓰는 용도와 환경이 있고, 그 용도와 환경에서는 도구나 시스템이 잘 갖춰져 있기 때문에 흥행하고 있는 겁니다. 이런 와중에 굳이 Graal VM을 채택할 동기는 찾기 어렵습니다. (성능이 압도적으로 뛰어나면 또 모르겠지만...)
하지만 현실적으로 (특히 Statically-Compiled 언어라면) 그 정도의 성능 격차를 내기는 힘들 거기 때문에 다른 언어도 모두 Graal VM을 쓰는 세상은 현실성이 거의 없다고 생각합니다.
Graal VM의 실제 사용 사례?
GraalVM의 주장에 따르면 아래 회사들이 GraalVM을 사용하고 있다고 합니다.
- 디즈니
- 오라클
- 페이스북
- SC제일은행
- 알리바바
- 엔비디아
- 트위터
- 골드만 삭스
GraalVM Use Cases
www.graalvm.org
'👨💻 프로그래밍 > 📦 Backend' 카테고리의 다른 글
핵사고날? 클린 아키텍처? DDD? (0) | 2024.01.28 |
---|---|
채팅 API 설계하기 (0) | 2023.12.30 |
CQRS (Command Query Responsibility Segregation) 알아보기 (1) | 2023.12.08 |
😵 1달동안 MSA 다시 Mono로 전환한 후기 (0) | 2023.11.13 |
Kotlin의 inline 함수 알아보기 (0) | 2023.10.09 |