JRE

Java 프로그램을 실행하기 위해 필요한 최소 환경으로, JVM과 표준 라이브러리를 묶은 패키지입니다.

포함 관계

┌──────────────────── JDK ────────────────────┐
│  javac, jdb, jar, jlink 등 개발 도구         │
│                                              │
│  ┌──────────── JRE ────────────┐            │
│  │                              │            │
│  │  ┌─────── JVM ───────┐      │            │
│  │  │ Class Loader       │      │            │
│  │  │ Runtime Data Area  │      │            │
│  │  │ Execution Engine   │      │            │
│  │  └────────────────────┘      │            │
│  │                              │            │
│  │  Java 표준 라이브러리 (rt.jar) │            │
│  │  java.lang, java.util,       │            │
│  │  java.io, java.net 등        │            │
│  │                              │            │
│  │  기타: 보안, 국제화, 배포 설정  │            │
│  └──────────────────────────────┘            │
└──────────────────────────────────────────────┘

JRE 구성 요소

구성 요소역할
JVM바이트코드 로딩·실행·메모리 관리·GC
표준 클래스 라이브러리String, List, Map, Stream, I/O 등 핵심 API
보안 모듈인증서, 암호화, 보안 정책 관리
국제화(i18n)다국어 문자셋, 로케일 지원
배포 기술Java Web Start, Applet 플러그인 (현재 제거됨)

JRE vs JDK vs JVM 비교

항목JVMJREJDK
바이트코드 실행OOO
표준 라이브러리XOO
컴파일러(javac)XXO
디버거(jdb)XXO
모니터링(jconsole)XXO
대상 사용자-실행만 하는 사용자개발자

실행 흐름에서 JRE의 역할

개발자 PC (JDK)                    사용자 PC (JRE만 있으면 됨)
─────────────                     ──────────────────────
Hello.java
   │ javac
   ▼
Hello.class  ──── 배포 ────→     Hello.class
                                     │ java 명령어
                                     ▼
                                  ┌─ JRE ──────────────┐
                                  │  JVM이 바이트코드 실행 │
                                  │  표준 라이브러리 참조   │
                                  └────────────────────┘
                                     │
                                     ▼
                                   프로그램 실행 완료

사용자가 Java 프로그램을 실행만 한다면 JRE만 설치하면 되고, 개발까지 한다면 JDK가 필요합니다.

Java 9 이후 변화

Java 9부터 모듈 시스템(JPMS) 이 도입되면서 JRE의 위상이 달라졌습니다.

변화설명
독립 JRE 배포 중단Java 11부터 Oracle은 JRE를 별도로 배포하지 않음
jlink 등장필요한 모듈만 골라 커스텀 런타임 이미지를 생성
경량 배포 가능앱이 사용하는 모듈만 포함 → 이미지 크기 대폭 감소
# jlink로 커스텀 런타임 생성 예시
jlink --module-path $JAVA_HOME/jmods \
      --add-modules java.base,java.sql \
      --output my-runtime

# 결과: java.base + java.sql만 포함된 경량 런타임
# 전체 JRE ~200MB → 커스텀 런타임 ~30MB

핵심 정리

JRE는 JVM + 표준 라이브러리를 합친 실행 전용 패키지입니다. Java 11 이후로는 독립 JRE 배포가 중단되고 jlink를 통한 커스텀 런타임이 대안이 되었으므로, 현재는 JDK를 설치하고 필요 시 jlink로 경량 런타임을 만드는 방식이 표준입니다.

CSLOG에서 보기