Java에서 컴파일 이란?
Java 소스 코드 ( high level language)를 바이트 코드 ( low level language )로 변환하는 과정을 의미한다.
Java 컴파일 과정
-
소스 코드 작성
개발자가 java 언어로 소스를 작성한다.
-
컴파일 과정 ( javac )
javac
( 자바 소스 컴파일러 )를 통해 여러 단계를 거쳐서 바이트 코드로 변환한다.
- 렉시컬 분석
소스 코드를 읽어서 토큰화 한다. (토큰 = 프로그램 최소 단위 [ 변수, 연산자, ... ] )
- 파싱
토큰화 된 결과를 사용해서 소스 코드의 구조를 나타내는 구문 트리로 생성한다.
- 세맨틱 분석
구문 트리를 기반으로 프로그램을 검증한다. ( 타입 체크, 변수 정의 체크 ... 다양한 검사를 한다. )
- 바이트 코드 생성
세맨틱 끝난 구문 트리를 기반으로 바이트 코드를 생성하고 .class
확장자 파일로 저장한다.
- 바이트 코드 실행( java )
.class
를 JVM에서 java 명령어를 통해 실행한다.
그러면 JVM은 바이트 코드를 JIT 컴파일러 혹은 인터프리터를 통해 실시간으로 변환하며 실행한다.