본문 바로가기
개발 관련 강의 정리/10분 테코톡

[10분 테코톡] 🎹 김김의 JVM Specification 정리

by 코딩개발 2023. 6. 30.
728x90
반응형

누구든 '무엇'의 표준을 만족하는 '무언가'를 만든다면, 그 '무언가'는 '무엇'이다.

 

 

JVM은 표준의 역할을 하는 Specification이 존재한다. 하지만 국제 표준화 기구 같은 거대한 공적 기관으로 부터 표준으로 인정받지는 못해서 Standard라는 표현을 가지고 있지는 못한다. 영향력이 너무 강하다 보니 De Facto Standard, 즉 사실상 표준에 해당하고 있다.

 

누구든 JVM의 규격, 내지 사양을 만족하는 무언가를 만든다면, 그 무언가 JVM이다.

 

참고로 위 스펙이 사실상 표준처럼 자리해서 JVM 표준이라고 번역되는 경우가 많다.

 

 

어쨌든 원칙적으로 JVM은 누구나 만들 수 있다. 이 스펙은 하나의 과정이면서 단체이기도 한 JCP에 의해서 관장되고 이 Specification에 기반해서 만들어낸 구현체들을 배포하는 조직이나 사람들이 생겨나는데 일반적으로 이들을 Vendor라고 한다. 가장 유명한 것은 오라클의 핫스팟이 있다. 위와 같이 다양한 형태로 배포가 되어있다.

 

위에서 말한

누구든 JVM의 규격, 내지 사양을 만족하는 무언가를 만든다면, 그 무언가 JVM이다.

에서 무언가에 해당하는 것은 반드시 소프트웨어의 형태를 하고 있을 필요가 없다. JVM이라는 이름에서 예상할 수 있듯, JVM은 추상적인 무언가이다. 그저 class 파일을 읽을 수 있고, 또한 그 파일의 내부 명령들을 올바르게 실행할 수 있다면 무엇이든 상관이 없다. 이론적으로 하드웨어 구현도 가능하다. 실제로, 예전에 '썬 마이크로시스템즈'에서는 바이트코드를 직접 실행할 수 있는 마이크로프로세서를 만든 적이 있고, JVM 스펙에 명시된 모든 Instruction들을 지원했다고 한다. 물론 이론적으로 라는 말과 같이 이런한 시도들은 대체로 실패했거나 시장성이 없거나 아니면 모종의 이유로 시장에서 살아남지는 못했다. 결론적으로 백이면 백 소프트웨어의 형태로 제공이 되고 있다.

 

누구든 JVM을 만들 수 있으며, 구현된 형태에 대해서는 어떠한 제약도 없다.

 

Spec 문서에는 어떤 이야기가 쓰여있을까?

 

JVM 구조를 검색하면 가장 흔하게 찾을 수 있는 그림 중 하나이며 Spec 문서와 가장 비슷한 그림이다.

 

그렇다면 가비지 컬렉터에 대한 이야기와 JIT(Just In Time) Compiler는 왜 없는 것일까?

 

Spec 문서에는 다음과 같이 설명해주고 있다.

 

이쯤되면 한 가지 떠오르는 단어가 있다. 바로 추상이다. 추상으로 얻을 수 있는 장점으로는 필요 최소한의 역할만을 외부에 명시함으로써 구현자의 개별적인 역량을 가능한 저해하지 않을 수 있다. 따라서 JVM 표준 역시도 JVM이라면 반드시 수행해야할 필요 최소한의 투입값과 결과만을 명시함으로써, 이를 구현하는 Vendor들은 고도의 테크닉을 사용해서 뛰어난 JVM을 만들어낼 수 있었던 것이다.

 

정리

- JVM은 표준의 역할을 하는 문서가 존재하여 누구나 만들 수 있으며, 구현된 형태에 대해서는 제약이 없다.
- JVM Specification 문서는 상당히 많은 부분들이 추상적으로 작성되어 있다.
- JVM은 추상화/다형성으로부터 얻을 수 있는 장점을 폭넓게 누릴 수 있도록 고안되어있다.
- 현재의 JVM은 폭넓은 재량 하에 이루어진 구현자들의 고민과 노력의 산물이다.


참고

https://www.youtube.com/watch?v=6reapO0gLPs&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC 

728x90
반응형

댓글