JDK는 개발자가 자바 애플리케이션을 작성, 컴파일, 디버그, 실행할 수 있게 해주는 종합 툴킷입니다. 자바 컴파일러(javac), 핵심 클래스 라이브러리, 디버거, JavaDoc 같은 개발 도구 모음을 포함합니다. Windows, macOS, Linux, Solaris용으로 제공되며 여러 버전이 동일 머신에 공존 가능합니다.
JRE(Java Runtime Environment)란?
JRE는 컴퓨터가 자바 프로그램을 실행할 수 있게 해주는 런타임 패키지입니다. JVM(Java Virtual Machine), 핵심 라이브러리, 지원 파일을 번들로 제공합니다. 개발자가 아닌 단순히 자바 애플리케이션만 실행하려는 사용자는 전체 JDK 대신 JRE만 설치하면 됩니다.
JVM(Java Virtual Machine)이란?
JVM은 자바 바이트코드를 네이티브 머신 언어로 해석하거나 JIT(Just-In-Time) 컴파일하는 엔진입니다. 자바 플랫폼의 핵심으로, 플랫폼 독립적 실행, 메모리 관리, 보안을 제공합니다.
왜 JDK를 사용하는가?
자바 애플리케이션 빌드에 필요한 컴파일러, 디버거, 런처 포함
개발자가 모든 JVM에서 실행 가능한 바이트코드 생성 가능
성능 튜닝, 코드 분석, 문서화 도구 제공
왜 JRE를 사용하는가?
개발 도구 오버헤드 없이 자바 애플리케이션 실행 환경 즉시 제공
대부분 자바 프로그램이 필요로 하는 전체 핵심 라이브러리 포함
자바 소프트웨어를 실행만 하려는 최종 사용자에게 이상적
왜 JVM을 사용하는가?
호환되는 JVM이 있는 모든 플랫폼에서 자바 바이트코드 실행, 'write once, run anywhere' 실현
JIT(Just-In-Time) 컴파일러로 런타임 성능 최적화
메모리 할당, 가비지 컬렉션, 보안 검사 처리
JDK 주요 특징
완전한 개발 도구 모음: 컴파일러, 디버거, JavaDoc 등
제네릭 다이아몬드 연산자(<>) 등 현대 언어 기능 지원
크로스 플랫폼: Windows, macOS, Linux, Solaris 설치 가능
JRE의 모든 구성요소 포함하므로 상위 집합
JRE 주요 특징
자바 애플리케이션 실행에 필요한 JVM과 핵심 클래스 라이브러리 포함
Java Web Start, Java Plug-in 같은 배포 기술 제공
JDBC, RMI, JNDI 등 네트워킹 및 데이터베이스 API 포함
개발 도구 제외로 패키지 경량화
JVM 주요 특징
바이트코드 해석 또는 JIT 컴파일로 효율적 실행
메모리, 가비지 컬렉션, 보안 정책 관리
유연한 아키텍처: 클래스 로더, 메서드 영역, 힙, 스택
하드웨어 독립적: 호환 JVM만 있으면 같은 바이트코드 어디서든 실행
JDK 작동 방식
JDK는 JRE에 개발 도구를 통합합니다. 개발자가 코드 작성, javac로 바이트코드 컴파일, 자바 런처(java)로 JVM 시작해 프로그램 실행.
JRE 작동 방식
JRE는 JVM, 클래스 로더, 런타임 라이브러리를 포함. 프로그램 실행 시 JVM이 클래스 로드, 바이트코드 검증, 해석기나 JIT로 실행.