JVM, JRE, JDK

2024. 11. 27. 17:12Java/Java

1. JVM (Java Virtual Machine)

JVM자바 애플리케이션을 실행하는 가상 머신입니다. 자바 소스 코드를 컴파일한 후 생성된 바이트 코드(.class 파일)를 실제로 실행하는 역할을 합니다. JVM은 자바 코드가 플랫폼 독립적으로 실행되게 만드는 핵심 요소입니다.

  • 역할: 자바 프로그램이 운영 체제에 독립적으로 실행될 수 있도록 하는 가상 환경을 제공합니다.
  • 주요 기능:
    • 바이트 코드 실행: 자바 소스 코드가 컴파일되어 생성된 바이트 코드를 실행합니다.
    • 메모리 관리: JVM은 힙(heap)과 스택(stack) 영역을 관리하고, 가비지 컬렉션(Garbage Collection)을 통해 메모리 관리를 자동으로 수행합니다.
    • 호환성 유지: 자바는 "Write Once, Run Anywhere"라는 슬로건을 가지고 있으며, JVM은 이를 가능하게 해줍니다. JVM이 모든 운영 체제에 맞게 적응하여 바이트 코드를 실행합니다.
  • 플랫폼 독립성: 자바 애플리케이션이 어떤 운영 체제에서 실행되든 동일한 바이트 코드가 JVM을 통해 실행되기 때문에, 자바는 플랫폼 독립적입니다.

 

2. JRE (Java Runtime Environment)

JRE자바 애플리케이션을 실행하기 위한 환경을 제공합니다. JRE는 JVM을 포함하고 있으며, 자바 애플리케이션이 실행되기 위해 필요한 기본적인 라이브러리와 자원을 제공합니다.

  • 역할: 자바 애플리케이션을 실행하는 데 필요한 실행 환경을 제공합니다.
  • 구성 요소:
    • JVM: 자바 프로그램을 실행하는 가상 머신
    • 자바 클래스 라이브러리 (Java Class Libraries): 자바 프로그램이 실행되는 데 필요한 기본적인 라이브러리들이 포함되어 있습니다. 예를 들어, 파일 입출력, 데이터베이스 연결, 네트워킹 등을 위한 클래스들이 포함됩니다.
    • 기타 리소스: 실행에 필요한 설정 파일과 다른 리소스들

JRE는 자바 애플리케이션을 실행하려는 사용자가 설치하는 환경입니다. 만약 자바 애플리케이션을 개발하려면 JDK를 설치해야 하지만, 이미 작성된 자바 프로그램을 실행하려면 JRE만 설치하면 됩니다.

 

3. JDK (Java Development Kit)

JDK자바 애플리케이션을 개발하기 위한 도구 모음입니다. JDK에는 자바 애플리케이션을 개발하는 데 필요한 모든 도구들이 포함되어 있습니다. 즉, 컴파일러, 디버깅 도구, JRE 등이 모두 포함된 종합 개발 패키지입니다.

  • 역할: 자바 애플리케이션을 개발하고, 컴파일하고, 실행하는 데 필요한 도구들을 제공합니다.
  • 구성 요소:
    • JRE: 자바 프로그램을 실행할 수 있는 환경을 제공
    • 자바 컴파일러 (javac): 자바 소스 코드를 바이트 코드로 변환하는 도구입니다. javac는 자바 코드(.java)를 컴파일하여 .class 파일로 만듭니다.
    • 디버거 (jdb): 자바 프로그램을 디버깅하는 도구입니다.
    • 자바 API 문서: 자바의 다양한 라이브러리 및 클래스에 대한 공식 문서가 포함되어 있습니다.
    • 기타 도구들: 자바 애플리케이션을 배포하거나 테스트하는 데 도움이 되는 다양한 도구들이 포함됩니다.

JDK는 자바 개발자가 자바 애플리케이션을 작성, 컴파일, 테스트할 수 있도록 필요한 모든 도구를 제공합니다. 즉, 자바 개발을 하려면 반드시 JDK를 설치해야 합니다.

 

4. JVM, JRE, JDK 관계

  • JVM: 자바 애플리케이션을 실제로 실행하는 가상 머신입니다. JVM은 바이트 코드를 해석하여 운영 체제에서 실행될 수 있도록 합니다.
  • JRE: 자바 애플리케이션을 실행하기 위한 환경입니다. JRE는 JVM을 포함하고 있으며, 자바 애플리케이션을 실행하는 데 필요한 클래스 라이브러리와 설정을 제공합니다.
  • JDK: 자바 애플리케이션을 개발하는 데 필요한 도구들이 모여 있는 패키지입니다. JDK는 JRE를 포함하고 있으며, 자바 프로그램을 개발하고 컴파일할 수 있는 도구들이 포함됩니다.
항목 정의 포함된 내용
JVM 자바 애플리케이션을 실행하는 가상 머신 자바 바이트 코드 실행, 메모리 관리, 가비지 컬렉션 등
JRE 자바 애플리케이션을 실행할 수 있는 환경 JVM, 자바 클래스 라이브러리, 리소스 등
JDK 자바 애플리케이션을 개발하는 데 필요한 도구 모음 JRE, 자바 컴파일러, 디버깅 도구 등