자바 컴파일 과정


- 소스 코드를 작성한다.
- 컴파일러가 바이트 코드를 생성한다.
- 자바 컴파일러
javac는 .java 코드를 바이트 코드인 .class 코드로 변환한다.
- 바이트 코드는 JVM이 이해할 수 있는 중간 언어이다.
.class 파일이 클래스 로더에 의해서 JVM 영역 안으로 들어가게 된다.
클래스 로더에서 하는 일
- 클래스 파일을 가져와서 JVM 메모리에 로드하고 할당
- 자바 및 JVM 명세에 명시된 대로 구성되어 있는지 검사
- JVM의 Execution Engine에서 바이트 코드를 명령어 단위로 하나씩 가져와서 실행한다.
- 인터프리터
바이트 코드 명령어를 하나씩 가져와서 읽고 해석하고 실행한다. 하나하나 실행은 빠르나, 전체적인 실행 속도가 느리다.
- JIT 컴파일러
인터프리터의 단점을 보완하기 위해 도입된 방식
바이트 코드 전체를 바이너리 코드로 변환하고, 바이너리 코드로 직접 실행하는 방식이다. 바이트 코드 전체를 컴파일한 바이너리 코드로 실행하는 것이기 때문에 속도가 인터프리터보다 빠르다.
- 실행
자바 프로그램이 실행된다.