자바개발자라면 반드시 알아야할 JVM, JRE, JDK에 대해서 알아보겠다.

JDK (Java Development Kit)
JDK는 자바 애플리케이션을 개발하기 위한 모든 도구와 라이브러리를 포함하는 개발 키트이다.
- 개발자가 java로 무언갈 하고 싶을 때 가장 먼저 다운로드 하는 것이 바로 이 JDK이다. (예: Spring Boot)
- 여기에는 자바 코드를 컴파일하는 javac (자바 컴파일러), 자바 애플리케이션을 실행하는 자바 런처, 디버거, 문서화 도구 등이 포함된다.
- Platform specific -> OS별로 각자 제공이 된다
- 컴파일러, JRE등 이런 도구들은 특정 운영체제에서만 실행될 수 있도록 컴파일 되어있다 (예를 들면 javac 실행파일은 windows와 linux용이 다르다)
- 따라서 JDK는 windows, macos, linux용 각 운영체제에 맞는 별도의 설치 파일로 제공이 된다
- 여기 안에 JRE(Java Runtime Environment)와 JVM(Java Virtual Machine)도 함께 설치된다.
JDK는 자바의 프로그램의 실행을 가능하게 한다:
- 개발자가 .java파일 에 java로 코드를 쓴다.
- javac 컴파일러가 .java 파일들을 bytecode로 변환시켜서 .class에 저장한다. (여기서 bytecode는 특정 운영체제나 하드웨어에 종속되지 않는 중간 언어이다)
- .class에 저장된 bytecode들은 컴퓨터에 깔려있는 JVM (Windows JVM, Linux JVM, Mac JVM)이 해석해서 실행시켜준다.


JRE (Java Runtime Environment)
- JVM과 자바 프로그램 실행에 필요한 핵심 라이브러리(Java API)들로 이루어져 있다. 자바 프로그램을 '실행'하는 데 필요한 모든 것을 담고 있는 환경이다.
- JDK에 이미 담겨져있다.
- 이미 만들어진 자바 프로그램을 사용자 컴퓨터에서 실행시키고 싶을 경우, JRE만 따로 설치해서 그 프로그램을 실행시킬 수 있다. 개발 환경은 필요 없고, 이렇게 오직 실행만 필요한 경우에 사용되는 경우가 많다고 한다.
- java 어플리케이션을 개발해야하는 개발자라면 JDK를, 개발이 아니라 단순 실행만 해야 한다면 JRE를 다운하자
JVM (Java Virtual Machine)
- JVM은 자바 코드를 실행하는 가상 머신이다. 자바의 유명한 "Write Once, Run Anywhere"를 가능하게 하는 핵심이다.
- 방금 JDK 섹션에 나온 그림처럼, 컴파일러에가 개발자가 작성한 자바 소스 코드( bytecode()로 변환시켜준 후, 그 bytecode를 읽고 네이티브 머신 코드 (native machine code)로 번역해 어플리케이션을 실행시켜주는 역할을 한다.
- JDK에 이미 담겨져있다.
- 메모리 관리와 가비지 컬렉션 등 주요 기능들이 있는데, JVM은 조금 복잡하므로 JVM에 더 자세한 내용은 다른 포스트에 다루려고 한다.
- https://www.geeksforgeeks.org/differences-jdk-jre-jvm/
- https://www.digitalocean.com/community/tutorials/difference-jdk-vs-jre-vs-jvm
- https://delusidiot.tistory.com/201
'Java' 카테고리의 다른 글
| [Java] HashSet의 내부 동작 방식과 중복 제거 메커니즘 (1) | 2025.06.09 |
|---|---|
| [Java] Stream API의 map과 flatMap의 차이점 (1) | 2025.06.02 |
| [Java] JVM (Java Virtual Machine) 노트정리 (3) | 2025.05.30 |
| [Java] Garbage Collection 노트정리 (1) | 2025.05.29 |