이전에 한번 정리했던 JVM을 넘어 JIT라는 개념에대해서 조금 더 정확하게 알아보자.
JIT란 무엇인가?
JIT는 Just In Time의 줄임말이다.
Java 코드는 JavaCompiler를 통해 ByteCode로 변환이 된다. 그리고 ByteCode는 다시 기계어로 번역이 된다. 이 과정이 있기 때문에 Java는 속도면에서 느리다는 소리를 듣는다. Java Compiler는 크게 2가지로 나뉜다. 인터프리트 방식과 정적 컴파일 방식으로 나눌 수 있다.
Java는 인터프리터 방식의 컴파일 방식을 사용한다. 하지만 문제점이 있다. Java compiler는 Java 파일을 ByteCode로 변환 한 후 다시 기계어로 변환을 하는 작업이 있고 이 작업이 비용이 많이 든다. 이런 단 점을 극복하기 위해 JIT(Just In Time) 방식이 나왔다. JIT 방식은 실행 시점에 자주 쓸만한 코드들을 기계어로 변환 시켜놓고 저장해 뒀다가, 재사용 할 때 이미 변환된 기계어 코드를 재 사용 하는 방식을 말한다. 물론 이 과정을 하기 위해 초반에 메모리를 잡아두거나 하는 선행 작업들이 있어서 초기 실행 속도는 다소 느릴 수도 있다. 하지만 그 이후로는 ByteCode를 사용 할 때마다 네이티브 코드로 변환하는 작업이 들어 실행속도가 많이 향상된다. 코드가 재사용될 일이 없거나 규모가 작은 프로그램에서는 배 보다 배꼽이 더 클 수도 있지만 일반적으로 빠른 속도를 자랑한다.