Hotspot VS Open J9
in Programming Language on Java
JVM 이야기
최근(이라고 하기엔 너무 오래됐나?) Oracle에서 Oracle JDK의 유료화를 발표한 뒤에 많은 기업들이 자바의 대안(코틀린)을 찾거나 Oracle JDK가 아닌 Open JDK를 사용하고 있다.
이 Open JDK에도 종류도 여러 가지가 있어서 서드 파티 업체가 오라클이 만든 Open JDK를 사용하여 구현하고 있다.
오라클(과거 SUN)이 검증하는 TCK(Technology Compatibility Kit) 인증을 통과한 Open JDK라면 Oracle JDK를 대체할 수 있다고 한다.
현재 TCK를 통과한 Azul System의 JVM이 TCK를 통과한 Open JDK 제품으로 좋은 평가를 받고 있다.
비슷한 구현체로 AdoptOpenJDK가 있는데, 안타깝게도 2020년 6월 2일인 현재까지도 TCK 인증을 받지 못해서 계속해서 노력하고 있다고 한다.
또한 품질에는 크게 문제가 없다고 하니 대안으로 삼을만 하다.
그 외 레드헷에서 제공하는 Open JDK도 있다.
Hotspot JVM? Open J9 JVM?
이러한 JDK들을 사용하다보면 JVM의 종류가 여러가지가 있다는 것을 알 수 있다.
우선 가장 유명한 Hotspot JVM과 다소 생소한 Open J9 JVM이라는 것이 있다.
오늘은 그 둘이 어떤 차이가 있는지 알아보려 한다.
AdoptOpenJDK의 경우 Hotspot JVM과 Open J9 JVM을 제공하고 있다.
Hotspot JVM의 경우 모든 작업에 적합한 검증된 JVM이다.
Open J9의 경우 이클립스 재단으로부터 만들어진 VM이다. Hotspot JVM보다 더 적은 메모리 자원을 사용하는 것을 강점으로 내세우고 있다.
또한 J9을 벤치마킹하면서 Hotspot JVM보다는 J9을 사용해야한다고 주장하는 개발자들의 글이 많은 것으로 보아, 기존에 Hotspot JVM을 그대로 쓰고 있고 크게 문제도 없었기 때문에 굳이 바꿀 필요성을 못느껴서 계속 쓰고 있는게 아닐까 싶기도 하다.
IBM에서도 이 Open J9을 사용하고 있고, 실제 벤치마킹 사례를 보면 메모리 사용률은 J9이 훨씬 더 적은 사용률을 보이는 것을 확인하였다.
직접 테스트 해볼 수도 있지만 이클립스에서 벌써 스프링부트로 벤치마킹을 했으니 위 영상을 보면 J9이 Hotspot 보다 뒤처지기 보다는 오히려 앞서는 모습을 확인할 수 있다.
더 적은 메모리 사용률과 더 이른 Ramping-up을 강점으로 내세우고 있다.
물론 위의 장점 외에 어떤 다른 문제점이 있는지는 확인하지 못했기 때문에 (그런게 있다면 발표에서 언급도 안하겠지만) 많은 기업들이 J9으로의 스위칭을 주저하고 있는 것이 아닐까 싶은 생각도 든다.
그래도 이클립스 재단이 영상에서 마지막에 보여준 성능 벤치마킹 그래프는 꽤나 인상적으로 보인다.
결론
J9은 Hotspot의 더 좋은 대안이 될 수도 있다.
Reference
https://bigwork.tistory.com/67
https://www.royvanrijn.com/blog/2018/05/openj9-jvm-shootout/