Java 실행 과정과 JDK | JRE | JVM

습토리·2025년 2월 12일

Java

목록 보기
6/32

많은 분들이 처음 Java를 공부할 때 JDK(Java Development Kit)JRE(Java Runtime Environment)의 차이를 헷갈려 합니다. 오늘은 Java 프로그램이 실행되는 과정과 함께 JDK와 JRE의 차이를 쉽게 정리해보겠습니다! 😊



출처: https://nbcamp.gitbook.io/java-handbook/part-01.-hello-world/java

Java 프로그램의 실행 과정

Java는 단순히 코드 작성만으로 실행되는 것이 아닙니다. 다음과 같은 단계가 필요합니다.

1. [파란색 상자] Java 코드 작성 (소스 코드)

사람이 작성하는 Java 코드(.java 파일)는 컴퓨터가 직접 이해할 수 없습니다.

public void hello() {
    System.out.println("Hello, Java!");
}

2. [원형] Java 컴파일러 (Javac)

작성된 Java 코드는 Java 컴파일러(javac)에 의해 변환됩니다. 이 과정에서 바이트코드(Bytecode, .class 파일)로 변환됩니다.

바이트코드는 CPU가 직접 실행할 수 있는 기계어가 아니라, JVM이 해석할 수 있는 중간 언어입니다.

3. [초록색 상자, 이진수 나열] 바이트코드 변환

컴파일된 Java 프로그램은 .class 파일 형태로 저장됩니다.
이 파일은 직접 실행할 수 없고, 반드시 JVM(Java Virtual Machine)을 통해 실행해야 합니다.

4. [마름모 모양] JVM(Java Virtual Machine)에서 실행

바이트코드는 JVM(Java Virtual Machine)에 의해 실행됩니다. JVM은 운영체제(Windows, Mac, Linux 등)에 맞게 바이트코드를 변환하여 실행하기 때문에, 다른 환경에서도 같은 Java 프로그램을 실행할 수 있게 해 줍니다. 🎉


JDK vs JRE vs JVM, 차이점은?

이제 위 실행 과정을 이해했다면, JDK, JRE, JVM이 각각 어떤 역할을 하는지 정리해 보겠습니다.

개념역할
JDK (Java Development Kit)Java 개발을 위한 모든 도구 포함 (JRE 포함)
JRE (Java Runtime Environment)Java 프로그램 실행에 필요한 환경 제공 (JVM 포함)
JVM (Java Virtual Machine)바이트코드를 실행하는 가상 머신

JDK (Java Development Kit)

  • Java 애플리케이션을 개발할 때 필수입니다.
  • Java 컴파일러(javac)가 포함되어 있어, 사람이 작성한 Java 코드를 바이트코드(.class 파일)로 변환할 수 있습니다.
  • JDK 안에는 JRE가 포함되어 있습니다.

JRE (Java Runtime Environment)

  • Java 프로그램을 실행만 할 때 필요합니다.
  • Java 애플리케이션을 실행하기 위한 라이브러리와 JVM이 포함되어 있습니다.
  • 컴파일 기능(javac)은 없기 때문에 개발할 때는 JDK를 사용해야 합니다.

JVM (Java Virtual Machine)

  • Java 바이트코드를 실행하는 가상의 컴퓨터입니다.
  • 운영체제에 따라 다른 JVM이 존재하지만, 같은 바이트코드를 실행할 수 있도록 표준화되어 있습니다.

JDK와 JRE, 언제 사용할까?

Java 개발을 하려면? → JDK 필요

  • 개발자가 직접 Java 코드를 작성하고, 컴파일해서 실행해야 한다면 JDK를 설치해야 합니다. (JDK에는 JRE가 포함되어 있음)

Java 프로그램을 실행만 하면? → JRE만 필요

  • 예를 들어, 이미 개발된 Java 프로그램(예: Java 기반 게임, 애플리케이션 등)을 실행하려면 JRE만 설치하면 됩니다.

JDK, JRE, JVM 디렉터리 트리(Directory Tree)

JDK (Java Development Kit) ← Java 개발에 필요한 모든 것 포함
├── JRE (Java Runtime Environment) ← Java 실행 환경
│ ├── JVM (Java Virtual Machine) ← 바이트코드 실행
│ ├── Java 라이브러리 (rt.jar 등) ← 필수 API 제공 (java.lang, java.util 등)
│ ├── 클래스 로더 (Class Loader) ← .class 파일 로드

├── Javac (Java Compiler) ← .java → .class 변환
├── 기타 개발 도구 (디버거, Javadoc 생성기, JAR 도구 등)


💡 추가 팁: "Runtime"이란?

JRE에서 Runtime"실행 시간"이라는 뜻입니다. 즉, JRE(Java Runtime Environment)는 Java 애플리케이션이 실행(run-time)될 때 필요한 환경을 제공하는 역할을 합니다.

  • Compile-time(컴파일 시간): 프로그램을 작성하고 컴파일하는 단계 (JDK 필요)
  • Run-time(실행 시간): 프로그램이 실제로 실행되는 단계 (JRE 필요)
profile
재미난 삶을 살다

1개의 댓글

comment-user-thumbnail
2025년 2월 12일

https://nbcamp.gitbook.io/java-handbook/part-01.-hello-world/jvm
이거를 읽었는데, 너무 어려워서 일단 스킵하고, 다음에 다시 읽어보겠다.

답글 달기