자바의 JVM, JRE, JDK의 차이를 설명해주세요.
자바 개발과 실행 환경에서 자주 등장하는 용어인 JVM, JRE, JDK는 각각의 역할과 기능이 다릅니다.
이 세 가지를 명확히 이해하는 것은 자바 개발 및 배포에 매우 중요합니다.
아래에서 각 용어의 정의와 차이점을 자세히 설명하겠습니다.
1. JVM (Java Virtual Machine) - 정의 : 자바 가상 머신(Java Virtual Machine)은 자바 바이트코드(.class 파일)를 실행시키는 가상화된 머신입니다.
- 역할 : - 자바 프로그램을 운영체제에 독립적으로 실행할 수 있도록 해줍니다.
- 자바 바이트코드를 실제 머신 코드(운영체제/하드웨어에 맞는 기계어)로 변환하여 실행합니다.
- 메모리 관리, 쓰레드 관리, 보안 검사 등 JVM 내부에서 프로그램 실행에 필요한 여러 기능을 담당합니다.
- 특징 : - 하드웨어나 운영체제에 종속적이지 않은 중간 실행 환경입니다.
- JVM의 구현은 다양한 플랫폼별로 다르지만, 바이트코드를 동일하게 실행한다는 공통 규약이 있습니다.
2. JRE (Java Runtime Environment) - 정의 : 자바 런타임 환경은 JVM과 자바 표준 라이브러리(클래스 라이브러리)로 이루어진 실행 환경입니다.
- 역할 : - 자바 애플리케이션이 실행될 수 있도록 필요한 환경을 제공합니다.
- 내부에 JVM이 포함되어 있어 자바 프로그램을 실행합니다.
- 자바 API(예: java.lang, java.util 등)와 다양한 기본 라이브러리를 포함합니다.
- 특징 : - 자바 프로그램을 실행만 할 수 있습니다.
- JRE 단독으로는 자바 소스 코드를 컴파일하거나 개발할 수 없습니다.
3. JDK (Java Development Kit) - 정의 : 자바 개발 키트는 자바 개발에 필요한 모든 도구들의 모음으로, JRE와 개발자 도구를 포함합니다.
- 구성 : - JRE (JVM + 라이브러리) - 자바 컴파일러(javac) - 디버거(jdb) - 여러 유틸리티 도구(jar, javadoc 등) - 역할 : - 자바 애플리케이션을 개발(소스 코드 작성 및 컴파일)하고, - 테스트 및 진단을 수행하는 데 필요한 도구를 제공합니다.
- 특징 : - JDK를 설치하면 개발과 실행이 모두 가능합니다.
- 일반적으로 개발자는 JDK를 설치하여 작업합니다.
- JRE는 JDK의 하위 집합이라고 볼 수 있습니다.
--- 요약 | 구분 | 역할 | 포함 내용 | 용도 | |------------|-----------------------|----------------------------------|------------------------| | JVM | 자바 바이트코드 실행 | 바이트코드 해석 및 실행 환경 | 자바 프로그램 실행 | | JRE | 실행 환경 제공 | JVM + 자바 라이브러리 | 자바 프로그램 실행 | | JDK | 개발 환경 제공 | JRE + 컴파일러 및 개발 도구 | 자바 프로그램 개발 및 실행 | --- 결론 - JVM 은 자바 프로그램을 실제로 실행하는 가상 머신입니다.
- JRE 는 JVM과 자바 API 라이브러리를 포함한 자바 실행 환경으로, 자바 프로그램 실행에 필요합니다.
- JDK 는 JRE에 개발에 필요한 컴파일러, 디버거 등 도구가 추가된 개발 키트로, 자바 개발자는 JDK를 설치해 사용합니다.
자바를 단순히 실행하고자 하는 사용자는 JRE만 설치해도 되고, 자바 프로그램을 개발하려면 JDK를 설치해야 합니다.