Java는 어떠한 플랫폼에 영향을 받지않는다.
자바 실행과정
1. Java언어로 작성된 Test.java를 컴파일하면 Test.class파일이 생성된다.
2. 이렇게 생성된 바이트 코드는 각자의 플랫폼에 설치되어 있는 자바 가상 머신이 운영체제에 맞는 실행파일로 바꿔준다.
3. Class Loader를 통해 Class파일을 JVM으로 로딩한다.
4. 로딩된 class파일들은 Execution Engine을 통해 해석된다.
5. 해석된 바이트 코드는 Runtime Data Area에 배치되어 실질적인 수행이 이루어진다. 이러한 실행 과정 속에서 JVM은 필요에 따라 Thread Synchronization과 GC같은 관리 작업을 수행한다.
각각의 역할
Class Loader
Execution Engine
클래스를 실행시키는 역할
class Loader가 Runtime Data Area에 배치한 바이트 코드를 Executuin Engine이 실행시킨다.
자바 바이트 코드를 JVM 내부에서 기계가 실행할 수 있는 형태로 변경시키낟.
실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행한다.
Interpreter
JIT(Just-In-Time) Compiler
Garbage Collector
Runtime Data Area
JVM이 프로그램을 수행하기 위해 OS로 부터 할당받은 메모리 공간
* **모든 스레드가 공유해서 사용 (GC의 대상)**
스레드 마다 하나씩 생성
힙 영역(Heap Area)