Java Open j9 과 HS(Hotspot) JVM 차이점
j9 이란?
sdk man 으로 설치 가능한 JDK 를 검색하면 다음과 같이 Identifier 에 j9 과 hs 가 붙는 제품들이 있습니다.
$ sdk list java ================================================================================ Vendor | Use | Version | Dist | Status | Identifier -------------------------------------------------------------------------------- AdoptOpenJDK | | 16.0.1.j9 | adpt | | 16.0.1.j9-adpt | | 16.0.1.hs | adpt | | 16.0.1.hs-adpt | | 11.0.11.j9 | adpt | | 11.0.11.j9-adpt | | 11.0.11.hs | adpt | | 11.0.11.hs-adpt | | 8.0.292.j9 | adpt | | 8.0.292.j9-adpt | | 8.0.292.hs | adpt | | 8.0.292.hs-adpt Corretto | | 16.0.2.7.1 | amzn | | 16.0.2.7.1-amzn | | 11.0.12.7.1 | amzn | | 11.0.12.7.1-amzn | | 8.302.08.1 | amzn | | 8.302.08.1-amzn
j9 은 JVM 의 또 다른 구현물로 eclipse 재단에서 개발했으며 재단의 OpenJDK 구현물인 AdoptOpenJDK 에 적용되어 있습니다.
기존 HotSpot(hs) 방식의 JVM 과 달리 Cloud 환경에 최적화 되어 있으며 더 빠르고 효율적으로 동작한다고 재단은 주장하고 있습니다. (성능 비교표 보기)
주의할 점은 j9 은 JVM 의 또 다른 구현물이며 JDK 의 버전과는 바로 매칭되지 않으며 AdoptOpenJDK 는 2 개의 JVM(j9, hs) 이 따로 패키징 되어 있습니다.
즉 "JDK 11 ➕ j9 JVM" 구성이나 "JDK 11 ➕ hs JVM" 구성이 가능하며 sdk man 에서 보는 Identifier 를 통해서도 확인할 수 있습니다.
개인적인 생각으로는 Cloud 에서 Java 로 개발한 app 을 서비스한다면 Cloud 서비스 업체가 구현한 JDK(JVM) 가 가장 최적화되어 있지 않을까 생각되며 저도 그렇게 사용하고 있습니다.
즉 AWS 를 쓴다면 Amazon 의 JDK인 Corretto를 사용하고 Azure 에서는 Microsoft 의 OpenJDK 를 쓰려고 합니다.