<aside> 💡
참고 아티클
https://mangkyu.tistory.com/301
https://mangkyu.tistory.com/302
</aside>
C, C++ 등과 같은 컴파일 언어는 컴파일러가 바로 기계어로 번역하고 실행파일을 만든다.
컴파일 과정에서 코드 최적화가 진행되어 성능이 뛰어나며 실행 속도가 빠르다.
대신 생성된 기계어가 빌드 환경(OS, CPU 아키텍처)에 종속적이라서, 환경이 바뀌면 다시 빌드해야 하는 문제가 있다.
Java는 이러한 플랫폼 종속적인 문제를 해결하기 위해서 JVM(Java Virtual Machine)을 도입했다.
javac 컴파일러가 소스 코드를 바이트코드(.class)로 변역을 한다.
각 OS에 설치된 JVM이 바이트코드를 읽어들여, 내부 인터프리터가 한 줄씩 해석해 실시간으로 기계어로 변역한다.
이러한 중간 과정으로 인해 컴파일 언어에 비해 성능이 늦어지는 문제가 발생했고, 이를 해결하고자 JIT 컴파일러를 도입해 빠른 컴파일을 가능하도록 제공했다.
JIT(Just-In-Time), **“실행 과정(Runtime)에서 필요할 때마다 바로 컴파일한다”**는 개념이다.
[두 개의 중요한 JIT 컴파일러]