Java

[Java] JVM, JRE, JDK 노트정리

leejunkim 2025. 5. 30. 17:20

자바개발자라면 반드시 알아야할 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