
Java 개발 필수 상식: JDK와 JRE의 차이점 완벽 정리
Java를 처음 배우거나 개발 환경을 구축할 때 가장 헷갈리는 부분 중 하나가 바로 JDK와 JRE입니다. 이 둘의 차이를 제대로 알아야 내 상황에 맞는 올바른 선택을 할 수 있어요. 오늘은 이 두 개념을 쉽고 명확하게 정리해드릴게요!
🎯 JRE (Java Runtime Environment)란?
JRE는 Java 애플리케이션을 실행하기 위한 환경입니다.
JRE의 구성요소
- JVM (Java Virtual Machine) - 바이트코드를 실행하는 가상머신
- Java 표준 라이브러리 - String, ArrayList 등 기본 클래스들
- 런타임 도구들 - 애플리케이션 실행에 필요한 각종 도구
JRE로 할 수 있는 일
# 이미 컴파일된 Java 프로그램 실행
java MyProgram.class
java -jar myapp.jar
JRE를 사용하는 사람들
- 일반 사용자: Java로 만든 프로그램만 실행하는 경우
- 서버 관리자: 웹 애플리케이션 배포 및 실행만 하는 경우
⚡ JDK (Java Development Kit)란?
JDK는 Java 애플리케이션을 개발하기 위한 전체 도구 모음입니다.
JDK의 구성요소
JRE 전체 + 개발 도구들
- JRE 전체 (JVM + 표준 라이브러리 + 런타임 도구)
- 개발 도구들:
- javac - Java 컴파일러
- jar - JAR 파일 생성/관리 도구
- javadoc - 문서 생성 도구
- jdb - 디버거
- 기타 개발 유틸리티들
JDK로 할 수 있는 일
# Java 소스코드 컴파일
javac MyProgram.java
# JAR 파일 생성
jar cvf myapp.jar *.class
# 컴파일된 프로그램 실행 (JRE 기능)
java MyProgram
JDK를 사용하는 사람들
- Java 개발자
- 프로그램을 직접 작성하고 컴파일하는 사람
🔍 쉬운 비유로 이해하기
요리 비유
- JRE = 완성된 요리를 먹을 수 있는 식탁과 수저
- JDK = 요리를 만들 수 있는 주방 전체 (식재료, 조리도구, 식탁, 수저 포함)
자동차 비유
- JRE = 자동차 (운전만 가능)
- JDK = 자동차 + 정비소 도구 (운전 + 수리/개조 가능)
📋 상황별 선택 가이드
일반 사용자인 경우
Minecraft, IntelliJ IDEA 등 Java 프로그램만 실행
→ JRE만 설치하면 충분
개발자인 경우
Java 코드 작성, 컴파일, 실행 모두 필요
→ JDK 설치 (JRE 자동 포함)
서버 환경의 경우
개발 서버: 로컬에서 코드 작성 및 컴파일
→ JDK 필요
운영 서버: 이미 컴파일된 JAR 파일만 실행
→ JRE만 있어도 충분 (보안상 JRE 권장)
✅ 설치 확인 방법
JDK가 설치되어 있는지 확인
javac -version # 컴파일러 버전 확인
java -version # JVM 버전 확인
JRE만 설치된 경우
javac -version # ❌ 명령어를 찾을 수 없음
java -version # ✅ 정상 출력
📢 최근 변화사항 (알아두면 좋아요!)
Java 11부터의 주요 변화:
- Oracle JDK는 상용 라이센스 정책이 변경되었습니다
- OpenJDK가 더 널리 사용되고 있습니다
- JRE 별도 배포가 중단되고 JDK에 통합되었습니다
🎉 정리
구분 JRE JDK
| 용도 | Java 프로그램 실행만 | Java 개발 + 실행 |
| 포함 요소 | JVM + 표준 라이브러리 | JRE + 개발 도구들 |
| 대상 사용자 | 일반 사용자, 서버 관리자 | 개발자 |
| 설치 권장 | 실행만 필요한 경우 | 개발하는 경우 |
💡 한 줄 요약: 개발을 한다면 JDK를 설치하고, 단순히 Java 프로그램만 실행한다면 JRE면 충분합니다. 하지만 최근에는 대부분 JDK를 설치하는 추세입니다!
이 포스트가 도움이 되셨나요? 댓글로 궁금한 점을 남겨주세요! 👍
태그: #Java #JDK #JRE #자바개발 #프로그래밍 #개발환경
'Java > Java' 카테고리의 다른 글
| JRE의 숨겨진 보물들: 런타임 도구들 완전 해부 (0) | 2025.09.03 |
|---|---|
| 서블릿 컨테이너란? 자바 웹 애플리케이션의 보이지 않는 조력자! (1) | 2025.04.14 |
| [Java] 서블릿(Servlet)이란? (1) | 2025.04.09 |
| [Java(자바)] 현재 날짜, 현재 시간 구하기 (1) | 2025.03.04 |