자바 컴파일 흐름
컴파일 흐름
소스코드(.java) -> 자바컴파일러 -> 바이트코드(.class) -> JVM(JIT 또는 인터프리터) -> 기계어 -> 하드웨어 및 OS
JIT란?
JIT(Just In Time) 컴파일은
JIT(Just In Time) 컴파일은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법입니다.
JIT는 인터프리터 방식과 정적 컴파일 방식을 혼합한 방식입니다.
바이트 코드(.class) 전체를 컴파일하여 바이너리 코드(컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드)로 변환하고
그 이후에는 해당 메서드를 더이상 인터프리팅 하지 않고 바이너리 코드로 직접 실행하는 방식입니다.
JIT 방식을 사용하게 되면 반복적으로 사용하는 파일의 컴파일 속도는 빠르지만,
처음 컴파일 하는 파일의 속도는 느립니다.(바이트 코드에서 인터프리터를 통해 바이너리 코드로 만드는 과정이기 때문입니다.)
컴퓨터 프로그램을 만드는 방식(인터프리터, 정적 컴파일)
인터프리터 방식이란?
실행 중 코드를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행합니다.
전체코드에서 필요한 부분만 기계어 코드로 변환합니다.
인터프리터 방식의 단점
인터프리터 방식은 바이트코드를 읽어 기계어 코드를 생성하는데 이 과정이 실시간으로 이뤄져서 성능이 매우 느립니다.
정적 컴파일 방식은 실행하기전 프로그램 코드를 기계어로 미리 번역합니다.
정적 파일은 변환 작업을 단 한번만 합니다.
JVM이란?
JVM(Java Virtual Machine)은 자바 가상 머신으로 어느 환경에서나 자바 파일을 컴퓨터에 맞는 기계어로 변경시켜주는 머신입니다.
JVM은 프로그램 메모리를 관리하고 최적화합니다.(JIT, 인터프리터 방식을 사용해서)