JDK, JRE, JVM과 차이점을 알아보자.
먼저, 구조는 다음과 같다.

JVM(Java Virtual Machine)
JVM, 즉 자바 가상 머신은 자바 소스코드를 실행시키기 위한 가상 기계를 의미한다.
실행시키기 위한 구체적인 방식은 다음과 같다.
- 자바 소스코드를 컴파일하여 .class의 바이트코드 파일을 생성한다.
- 컴파일된 바이트코드(중간) 파일을 인터프리터와 JIT 컴파일러를 통해 기계어로 변환하여 실행한다.
※ 인터프리터: 바이트코드 명령어를 한 줄씩 읽어 기계어로 변환하는 방식
JIT 컴파일러: 반복되는 코드들을 기계어로 변환한 후 캐싱하여, 나중에 해당 코드가 나오면 바로 실행하는 방식
JVM에 대해 더 자세히 알고 싶다면
2025.08.30 - [Java] - [Java] JVM(Java Virtual Machine) 을 참고하도록 하자😊
JRE(Java Runtime Environment)
JRE은 자바 프로그램을 실행하기 위한 표준 환경으로,
프로그램 실행 엔진인 JVM과 자바 클래스 라이브러리(API)를 하나로 묶은 패키지를 의미한다.
JVM이 코드를 실행하는 엔진이라면, 자바 클래스 라이브러리는 엔진의 실행을 도와주는 부품과도 같다 !
자바 클래스 라이브러리는 다음과 같은 종류가 있다.
- 배포 솔루션
- 개발 툴킷
- 통합 라이브러리
- 언어 및 유틸리티 라이브러리
기존엔 자바 프로그램을 실행만 시키고 싶다면 JRE만 설치하면 되었다.
하지만 기본적으로 JDK에 JRE가 포함되어 있으며, JDK 11 이후로는 JRE를 따로 설치할 수도 없게 되었다❗️
JDK(Java Development Kit)
JDK는 JRE와 자바 개발 도구들을 포함한 자바 개발 키트를 의미한다.
자바 개발 도구는 위의 사진처럼 javac, java, javap, apt, jar, jdb, javadoc 등 여러 도구가 존재한다.
자주 쓰이는 개발 도구에 대해서 알아보도록 하자!
javac(자바 컴파일러)
자바 소스코드를 바이트코드(.class)로 변환하는 역할을 한다.
java(자바 실행 도구)
javac로 컴파일한 바이트코드를 읽어서, JVM을 가동시키고 프로그램을 실행시킨다.
javadoc(자바 문서 생성 도구)
소스코드 안의 주석을 추출해서 API 문서를 자동으로 생성해준다.
jar(자바 아카이버)
바이트코드 파일들, 설정 파일 및 메타데이터 등을 묶어 압축한 단일 파일을 의미한다.
이러한 jar 파일은 zip과 동일한 방식으로 압축된다.
jdb(자바 디버거)
자바 클래스를 디버깅할 수 있는 CLI 기반 디버거이다.
breakpoint를 설정한 후 디버깅을 실행하면, 멈춘 시점에서 변수나 객체 상태 등 값을 확인할 수 있다.
Java 버전
이러한 자바 개발 도구들이 묶인 JDK는 버전 별로 존재한다. (JDK는 곧 Java 버전과 동일)
흔히 들어본 jdk 8, 11, 17, 21 처럼 말이다!
버전의 전체 표기는 Java 8 버전을 기준으로 나뉜다.
Java 8 이하
Java 8 버전은 공식적으로 Java SE 8, 또는 JDK 1.8.0 으로도 불린다.
Java 9 이후
Java 8 이후 버전인 Java 11, 17 버전은 각각 Java SE 11, 17, 또는 JDK 11, JDK 17 버전으로도 불린다.
❗️ 참고로 Java SE는 표준 자바 플랫폼을 의미하며, Java EE는 Java SE 플랫폼 위에 구축되는 서버 측 개발을 위한 플랫폼을 의미한다.
😊
참고
'Java' 카테고리의 다른 글
| [Java] Reflection (0) | 2025.10.23 |
|---|---|
| [Java] 익명 클래스, 람다식 (0) | 2025.10.14 |
| [Java] 제네릭(Generic) (0) | 2025.10.06 |
| [Java] 인터페이스 vs 추상 클래스 (0) | 2025.10.03 |
| [Java] final vs static vs static final (0) | 2025.09.22 |