📍 구조

📍 JVM
- 자바가상머신(Java Virtual Machine)의 약자
- 자바프로그램을 컴파일해서 나온 결과인 바이트코드를 실행시킨다.
- 자바 프로그램이 어느 기기, 어느 운영체제 상에서도 실행될 수 있게 만들어 준다. (
WORA
- wite once, run everywhere)
- 자바 프로그램의 메모리를 효율적으로 관리 & 최적화해준다.
(가비지 컬렉터(GC)
를 통한 어플리케이션의 동적 메모리 관리)
📍 JRE
- 자바런타임환경(Java Runtime Environment)의 약자
- JVM을 동작하는 데 필요한 자바 라이브러리들을 담음
📍 JDK
- 자바개발키트(Java Development Kit)의 약자
- 자바로 개발할 수 있도록 여러 기능들을 제공한다.
- 자바 언어를 바이트 코드로 컴파일해주는
자바 컴파일러(javac)
, 자바 클래스 파일을 해석해주는 어셈블리어(javap)
등이 있다.
📍 JVM 동작원리

- JVM은 위와 같은 절차로 자바를 실행시킨다.
- 자바를 통해 개발을 하고 실행하면, 자바 파일은 바이트코드(.class)파일로 컴파일 과정을 거치게 된다.
- 바이트코드로 변환된 파일들은 클래스로더를 통해 동적 로딩, 필요한 클래스를 로딩 및 링크하며 각 런타임데이터 영역에 할당한다.
- 클래스로더로부터 할당된 바이트코드는 익스큐션 엔진을 통해 명령어 단위로 하나씩 가져와 실행된다.