on
자바 컴파일 과정
자바 컴파일 과정
자바는 컴파일 언어 or 인터프리터 언어 ??
컴파일 언어
작성한 코드를 한번에 모아 기계어로 변환 후 실행하는 방식
인터프리터 언어
기계어로 변환 과정없이 한줄 한줄 해석하여 실행하는 방식
자바의 동작 방식
간단하게 그림으로 표현하자면 다음과 같다.
중간 코드란
자바 가상 머신(JVM)이 이해할 수 있는 언어로 변환된 자바 소스코드를 의미
자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라 불림.
기계어가 아니라 OS가 인식을 못함 -> 그걸 누가 해주냐? -> JVM
바이트 코드는 JVM위에서 os상관없이 실행 됨
컴파일 과정
public class JavaStudy1 { public static void main(String[] args) { String str = "art"; System.out.println("Chicken is " + str); } }
javac : .java -> .class 로 변환시켜주는 명령어
바이트 코드
어휘 분석
: 소스 프로그램을 읽어 토큰으로 분리하는 것, 토큰 스트림을 출력
# 토큰 : 문법적 의미있는 최소의 단위 / Token = (Type, Value)
키워드 + 오퍼레이터 + 리터럴 = 어휘소
ex) 나는 치킨이 좋다. -> 나는/치킨이/ 좋다/
구문 분석
: 파싱
토큰 스트림 -> 파스 트리
컴파일 에러 - Syntax error
https://www.codetd.com/ko/article/9352856
ex) 명사/형용사/동사...
의미 분석
: 프로그램의 의미가 명확하고 제어구조와 데이터 형식을 사용해야 하는 방식이 일치하는지 확인하는 작업
Type Check , 범위 검사 등
중간코드 생성 및 최적화
> JVM이란
from http://l0u0l.tistory.com/58 by ccl(A) rewrite - 2021-11-04 08:02:21