
JVM(Java Virtual Machine): 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램 (메모리 관리, GC 수행)
- 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환
- 바이트 코드를 실행하는 표준이자 구현체
- JVM 밴더: 오라클, 아마존, Azul, ...
- JDK는 특정 플랫폼에 종속적 (JDK를 다운받을 때에 mac OS용, Windows용, Linux용이 따로 있다.)
- 자바는 플랫폼에 독립적이다.
JRE(Java Runtime Environment)
- 자바 애플리케이션을 실행할 수 있도록 구성된 배포판
- 개발 관련 도구는 포함하지 않는다. (그건 JDK에서 제공)
JDK(Java Development Kit)
- JRE + 개발에 필요한 툴(javac, jar, apt 등)
- 오라클은 자바 11부터 JDK만 제공하며 JRE를 따로 제공하지 않는다.

JVM 동작 방식
- 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당한다.
- 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일한다.
- Class Loader를 통해 JVM Runtime Data Area로 로딩한다.
- Runtime Data Area에 로딩 된 .class들은 실행 엔진을 통해 해석하여 실행된다.
'Development > Java' 카테고리의 다른 글
자바의 컬렉션과 관련된 클래스 정리 (0) | 2023.03.09 |
---|---|
JVM GC (0) | 2023.02.03 |
업 캐스팅 / 다운 캐스팅, 자동 형변환 / 강제 형변환, 오토 박싱 / 언 박싱 (0) | 2023.02.01 |