작성한 자바 소스를, 즉 .java 파일을 자바 컴파일러(JAVA Compiler)를 통해 자바 바이트 코드로 변환된다
자바 바이트 코드(.class) 를 JVM의 클래스로더에게 전달한다.
클래스로더는 동적로딩(Dynamic loading)을 통해 필요한 데이터를 로딩 및 링크하여
런타임 데이터 영역(Runtime DaTA Area), 즉 JVM의 메모리에 위치시킨다
실행엔진(Execution Engine)는 JVM의 메모리에 위치한 바이트코드를 명령어 단위로 가져와 하나씩 실행 시킨다.
Class Loader : class 파일들을 묶어서 Runtime Data Area 로 적재하는 역할을 수행합니다. 자바 애플리케이션이 실행중일 때 이 작업이 수행된다고 하네요..!
Runtime Data Area : 자바 메모리 공간 이라고 생각하시면 됩니다. 자바 애플리케이션 실행 시 사용되는 데이터들을 담아두는 영역입니다. OS로부터 할당받아 사용합니다.
Execution Engine : 기계어로 변경해 명령어 단위로 실행하는 역할을 수행합니다.
-> Interpreter(인터프리터) 방식 / JIT(Just - In - Time) 컴파일러 이용하는 방식 존재. 주로 이 둘을 병행한다.
Interpreter 방식
: 명령어 하나하나 실행함.
JIT 방식
: Byte 코드를 Native 코드로 변경해서 이 Native 코드를 실행함.