컴퓨터는 0과 1로만 모든 명령을 이해하고 실행한다.
우리가 'A'라는 무자를 입력하더라도 컴퓨터는 이것을 0과 1로 이루어진 이진코드로 해석하단.
그런데 'A'라는 문자를 어떻게 해석해 줄 것 인가?
컴퓨터가 알아들을 수 있게 문자를 해석해주는 것이 컴파일이다.
보통 인터프리터 방식의 언어 구현들이 성능 향상을 목적으로 도입하는 경우가 많다.
실행시점에 자주 쓸만한 코드들을 기계어로 변환시켜놓고 저장해 뒀다가, 재사용할 때 이미 변환된 기계어 코드를 재사용하는 방식을 말한다. (인터프리터의 느린 실행속도 개선)
Java도 바이트코드를 기계어로 번역할 때 JIT를 사용한다. (JVM)
초반에 메모리를 잡아두거나 하는 선행 작업들이 있어 초기 실행 속도는 다소 느릴 수 있다.
하지만 그 이후로는 바이트코드를 사용할 때 마다 네이티브 코드로 변환하는 작업이 들어 실행속도가 많이 향상된다.
코드가 재사용될 일이 없거나 규모가 작은 프로그램에서는 배보다 배꼽이 더 클 수도 있지만 일반적으로는 빠른속도를 자랑한다.