JDK JRE JVM 자바 개발 도구와 실행 환경
자바( Java )를 한번이라도 경험했다면 JDK, JRE, JVM이라는 용어를 접하게 된다.
처음에는 뭔지 잘 모르겠고, 어쨌든 자바로 개발을 할 때 필요하다는 것은 알게 된다.
JDK( Java Development Kit )는 자바 프로그램을 개발하는 데 필요한 컴파일러와 실행 환경을 위한 도구 모음이고, JRE( Java Runtime Environment )는 자바 프로그램을 실행하기 위한 환경이며, JVM( Java Virtual Machine )은 컴파일된 자바 바이트코드를 실행하는 가상 머신이다.
JDK, JRE, JVM 이 세 가지는 서로 관련되어 있고 담당하는 역할은 서로 다르다.
![]() |
| JDK JRE JVM 자바 개발 도구와 실행 환경 |
자바( Java ) 프로그램을 개발하고 실행하려면 자바 개발 도구와 실행 환경이 필요하다.
자바를 이용한 개발을 할 때 필요한 3가지는 JDK, JRE, JVM 이다.
JDK, JRE, JVM 이 3가지는 모두 자바 플랫폼과 관련되어 있고 역할과 목적은 서로 다르다.
JDK는 자바 프로그램을 개발하는 데 필요한 도구이다.
JRE는 자바 프로그램이 실행될 수 있는 환경을 제공한다.
JVM은 자바 바이트코드( .class )를 실행한다.
모두 자바 개발에 필요한 것이고, 자바 개발 환경의 구성과 프로그램 실행에 모두 필요한 것들이다.
![]() |
| JDK JRE JVM |
JDK / Java Development Kit
자바 프로그램 개발 도구
JDK( Java Development Kit )는 자바 개발 키트( 자바 개발 도구 )를 의미한다.
자바 프로그램을 작성하고 컴파일하며 실행하는 데 필요한 도구를 제공하는 소프트웨어 패키지이다.
JDK에는 자바 컴파일러, 실행 도구, 디버깅 도구, 자바 표준 라이브러리, JVM을 포함한 실행 환경 등이 제공된다.
JDK의 대표적인 도구는 다음과 같다.
- javac : 자바 소스 코드 컴파일
- java : 자바 프로그램 실행
- jar : JAR 파일 생성 및 관리
- javadoc : API 문서 생성
- jdb : 자바 프로그램 디버깅
- jlink : 사용자 정의 런타임 이미지 생성
자바 프로그램을 개발하는 경우 일반적으로 JDK를 설치한다.
JDK에는 프로그램 실행에 필요한 구성요소이 포함되어 있으며, 별도의 JRE를 설치할 필요는 없다.
단, 최신 JDK의 디렉터리 구조는 과거 버전과 다를 수 있기 때문에, JDK 설치시 버전은 확인하도록 한다.
![]() |
| JDK / Java Development Kit 자바 프로그램 개발 도구 |
JRE / Java Runtime Enviroment
자바 실행 환경
자바의 JRE( Java Runtime Environment )는 자바 실행 환경을 뜻한다.
컴파일된 자바 프로그램을 실행하는 데 필요한 소프트웨어 구성요소이다.
전통적인 JRE는 JVM과 자바 표준 클래스 라이브러리, 실행에 필요한 지원 파일 등으로 구성된다.
JRE의 주요 역할을 보자.
- 자바 프로그램 실행 환경 제공
- JVM 및 표준 라이브러리 제공
- 컴파일된 자바 프로그램 실행 지원
JRE에는 자바 소스 코드를 컴파일하는 javac와 같은 개발 도구가 포함되지 않으며, 독립형 JRE는 완성된 자바 프로그램을 실행하는 용도로만 사용된다.
![]() |
| JRE / Java Runtime Enviroment / 자바 실행 환경 |
JVM / Java Virtual Machine
자바 가상 머신
JVM( Java Virtual Machine )은 자바 가상 머신을 뜻한다.
자바 컴파일러가 생성한 바이트코드( Bytecode )를 실행하는 가상 실행 환경이다.
자바 소스 코드를 컴파일하면 .class 파일이 생성되며, 이 파일에는 JVM에서 실행을 하기 위한 바이트코드가 저장된다.
JVM은 바이트코드를 읽고 실행하며,
실행 과정에서 필요한 메모리 관리와 가비지 컬렉션 등의 기능을 수행한다.
JVM의 대표적인 역할을 보자.
- 클래스 로딩
- 실행에 필요한 클래스 로딩
- 바이트코드 실행
- 컴파일된 자바 코드 실행
- 메모리 관리
- 객체 및 실행 메모리 관리
- 가비지 컬렉션
- 불필요한 객체가 사용하는 메모리 회수
- JIT 컴파일
- 실행 중인 일부 바이트코드를 기계어로 컴파일하여 최적화
![]() |
| JVM / Java Virtual Machine / 자바 가상 머신 |
JDK, JRE, JVM 차이
목적에 따른 역할
자바 프로그램을 개발하기 위한 과정이 참 어렵다. ㅋ
JDK, JRE, JVM의 가장 큰 차이가 있다면 담당하는 역할일 것이다.
- JDK
- Java Development Kit
- 자바 개발 도구
- 자바 프로그램 개발
- 컴파일러 포함
- JVM 포함
- 표준 라이브러리 포함
- 개발자, 빌드 환경
- JRE
- Java Runtime Environment
- 자바 실행 환경
- 프로그램 실행
- 컴파일러 미포함
- JVM 포함
- 표준 라이브러리 포함
- 실행 환경
- JVM
- Java Virtual Machine
- 자바 가상 머신
- 바이트코드 실행
- 컴파일러 미포함
- JVM 자체 실행 엔진
- 표준 라이브러리 별도 실행 환경과 연계
- 자바 프로그램의 실행 처리
JDK, JRE, JVM 의 관계는 자바 배포 구조를 기준으로
JDK가 JRE의 기능을 포함하고, JRE는 JVM을 포함한다.
- JDK > JRE > JVM
JDK 11 이후에는 JDK 내부에 별도의 jre 디렉터리가 존재하지 않는다.
( 어차피, 설치만 잘되면 큰 문제는 없다. ㅋ )
JDK는 프로그램을 만드는 도구,
JRE는 프로그램을 실행할 환경,
JVM은 프로그램의 바이트코드를 실행하는 엔진 정도로 볼 수 있다.
![]() |
| JDK, JRE, JVM 차이 목적에 따른 역할 |
자바 JDK, JRE, JVM의 동작
자바 프로그램은 소스 코드 작성, 컴파일, 실행의 3가지 과정을 거친다.
일반적인 자바 프로그램의 처리 과정은 다음과 같다.
- 자바 소스 코드( .java )를 작성
- JDK의 javac 컴파일러가 소스 코드( .java )를 컴파일
- 컴파일 결과로 .class 바이트코드 파일이 생성
- 자바 실행 환경에서 JVM이 바이트코드를 실행
- 프로그램의 실행 결과가 화면에 출력
간단한 출력문을 이용해 위의 과정을 만들어 보자.
먼저 자바 코드를 만들어야 할 것이다.
public class Java_Sample {
public static void main(String[] args) {
System.out.println("Hello, K-POP RESCENE !! K팝 리센느 ");
}
}위의 자바 소스 코드를 확장자 .java 로 저장하고,
JDK의 컴파일러를 이용해 컴파일한다.
참고로, 파일명은 클래스명과 같아야 한다.
javac Hello.java컴파일에 성공하면 일반적으로 Hello.class 파일이 생성된다.
![]() |
| javac Hello.java |
java 명령어로 프로그램을 실행한다
java Hello실행 결과는 다음과 같다.
![]() |
| 자바 코드 실행 결과 |
javac는 JDK가 제공하는 컴파일러이며,
java 명령은 실행 환경을 시작하여,
JVM에서 프로그램을 실행하도록 한다.
![]() |
| 자바 JDK, JRE, JVM의 동작 |
JRE의 설치
지금의 자바 개발 환경의 경우, JRE를 별도로 설치할 필요가 없다.
이미 JDK에 자바 프로그램을 실행하기 위한 런타임 구성요소가 포함되어 있기 때문이다.
과거 JDK 8에서는 JDK와 JRE가 구분되어 제공되었으며,
JDK 내부에도 jre 디렉터리가 존재했다.
언제인지 기억은 나지 않지만, 자바 플랫폼의 큰 변화가 있었을 무렵, 자바의 모듈화와 배포 구조가 변경되었다.
- JDK 8
- JDK와 별도 JRE 제공
- JDK 내부 jre 디렉터리 존재
- JDK 9~10
- 모듈식 런타임 이미지 도입
- 별도 JDK, JRE 이미지 제공
- JDK 11 이후
- Oracle은 별도 JRE 다운로드를 미제공
- JDK 내부의 별도 JRE 이미지도 제거
JDK 9부터 제공되는 jlink 도구가 제공되고 있는데,
jlink는 프로그램에 필요한 모듈을 선택하여
사용자 정의 런타임 이미지를 생성할 수 있다.
버전의 차이는 실행 환경의 차이가 생길 수 밖에 없는데, 자바 프로그램을 개발하고자 한다면 버전 정도는 확인하자ㅏ.
2026년 11월 1일 기준
Oracle의 최신 Java SE 일반 릴리스는 JDK 27이며,
최신 장기 지원(LTS) 릴리스는 JDK 25이다.
( LTS 버전이 마음이 편하다. )
![]() |
| JRE의 설치 |
JDK 설치 확인
JDK가 설치되어 있는지 확인하려면 명령 프롬프트나 터미널에서 자바 명령어를 실행하면 된다.
명령 프롬프트 실행
윈도우즈 검색창에 cmd를 입력하고 명령 프롬프트를 실행한다.
자바 실행 환경 확인
명령 프롬프트에서 java -version 을 입력하고 실행한다.
해당 명령어가 정상적으로 실행되면 현재 명령어 경로에서 접근 가능한 자바 실행 환경의 버전 정보가 표시된다.
자바 컴파일러 확인
명령 프롬프트에서 javac -version 을 입력하고 실행하여,
자바 컴파일러의 버전 정보를 확인할 수 있다.
java 명령어는 실행되지만 javac 명령어를 찾지 못하는 경우,
런타임만 설치되어 있거나
JDK의 실행 파일 경로를 확인해 보도록 한다.
환경 변수 확인
필요한 경우 Windows의 JAVA_HOME 및 Path 환경 변수를 확인한다.
JAVA_HOME은 JDK의 설치 경로를 지정한다.
Path에는 JDK의 bin 디렉터리를 등록하여
java, javac 등의 명령어를 실행할 수 있도록 설정한다.
![]() |
| JDK 설치 확인 |











댓글
댓글 쓰기