
Java 는 jvm 에서 class 파일을 읽기전에
java 파일을 class 파일로 변경해주는 컴파일러 과정을 진행한다.
이 컴파일러가 어떻게 동작하는지 봐보자
컴파일러 동작
자바 컴파일러는 총 4가지 정도의 과정을 진행한다.
- 어휘 분석
- 구문 분석
- 의미 분석
- 중간 코드 생성
어휘 분석
.java 코드는 키워드와 리터럴, 오퍼레이터 등으로 구성이 되어있는데,
여기서 키워드는 public, class 등 예약어 들이고,
리터럴은 문자열 등, 그리고 오퍼레이터는 + - 같은 연산자 들로 구성된다.
이런 것들을 어휘소라고 하는데
이걸 모두 수집해 하나의 스트림으로 만들면 이게 토큰 스트림이 된다.
구문 분석
구문 분석은 이 토큰 스트림을 문법에 맞는지 확인을 하는 과정이다.

문법이 틀리면 Syntax error 를 발생시킨다.
의미 분석
의미분석은 구문 분석으로 문법적인 오류는 없지만,
타입 검사나 자동 타입 변환 같은걸 진행하는 단계다.
예를들면 String 타입에 int 를 넣는다거나 할때
에러를 발생시킨다.
이 과정들이 모두 끝나면
중간 코드인 바이트 코드를 생성시키게 된다.
'Java > JVM' 카테고리의 다른 글
| Garbage Collection (0) | 2021.02.04 |
|---|---|
| Stack - 메모리 관리 (0) | 2021.02.04 |
| JVM 과 JIT 컴파일러 (0) | 2021.02.04 |
| JVM 이란? (0) | 2019.11.11 |