일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데이터내보내기
- 티스토리챌린지
- codeium
- 도커이미지
- 컬렉션프레임워크
- git pat
- 르세라핌
- docker
- gtihub
- 애널리틱스4
- Python
- DBMS
- spring
- ANTIFRAGILE
- JPA
- java
- analytics4
- ci/cd
- docker 명령어
- db종류
- JPQL
- 명령어
- datagrip
- 11월순위
- pat발급
- IntelliJ
- git branch 삭제
- bigquery
- 오블완
- Today
- Total
hanker
JAVA - JDK, JRE, JVM의 차이점은 무엇일까? 본문
자바를 처음 접하다 보면 다양한 용어에 혼란을 느낄 수 있다.
특히 JDK, JRE, JVM이라는 용어는 자바 개발자라면 필수적으로 알아야 하지만 혼동하기 쉬운 개념들인데,
이 글에서 이 세 가지의 차이점을 명확히 알아보자
1. JVM (Java Virtual Machine)
JVM은 자바 프로그램이 실제로 실행되는 가상 머신이다.
자바 코드를 작성하고 컴파일하면, JVM은 그 컴파일된 바이트코드를 읽고 기계가 이해할 수 있는 형태로 변환해 실행해준다.
즉, JVM은 자바 프로그램이 플랫폼에 독립적으로 동작할 수 있도록 해주는 핵심 요소이다.
각 운영 체제마다 JVM이 다르게 구현되어 있지만, 자바 바이트코드의 실행은 동일하게 보장된다.
이를 통해 "Write Once, Run Anywhere"라는 자바의 철학이 구현된다.
기능
- 바이트코드 실행: .class 파일에 있는 바이트코드를 해석 및 실행
- 메모리 관리: 힙 메모리와 스택 메모리를 관리하고, 가비지 컬렉션을 수행하여 불필요한 메모리 해제
- 플랫폼 독립성 제공: JVM이 바이트코드를 운영 체제에 맞게 해석
구성 요소
- 클래스 로더: .class 파일을 메모리에 로드
- 실행 엔진: 인터프리터와 JIT 컴파일러를 통해 바이트코드를 네이티브 코드로 변환하여 실행
용도
- JVM은 Java 프로그램이 실행될 때 이를 해석하고 관리
사용자
- Java 애플리케이션의 실행을 담당하는 모든 경우에서 사용되며, JVM은 개발자 뿐 아니라 최종 사용자에게도 필수적인 컴포넌트이다.
2. JRE (Java Runtime Environment)
JRE는 JVM이 자바 프로그램을 실행할 수 있도록 지원하는 환경이다.
JRE에는 JVM뿐만 아니라 자바 프로그램을 실행하기 위해 필요한 라이브러리와 클래스 파일들도 포함되어 있다. 따라서 JRE는 자바 프로그램을 실행하는 환경이라고 생각할 수 있다.
JRE는 개발 도구는 포함하지 않기 때문에, 자바 애플리케이션을 실행할 수는 있지만 새로운 코드를 작성하거나 컴파일할 수는 없다.
구성 요소
- JVM (Java Virtual Machine) : Java 바이트코드를 실제 운영체제에서 실행시켜주는 가상 머신
- 클래스 라이브러리: Java 애플리케이션에서 사용할 수 있는 다양한 클래스와 라이브러리를 포함한다.
용도
- JRE는 이미 작성되고 컴파일된 Java 프로그램을 실행하는 데 사용된다. 즉, 개발이 끝난 JAVA 프로그램을 실행하기 위해 사용자 시스템에 필요한 환경을 제공한다.
사용자
- JRE는 Java 프로그램을 실행하려는 사용자가 필요하다. 예를 들어 Java 기반의 애플리케이션을 실행하기 위해 사용자가 JRE를 설치해야한다.
3. JDK (Java Development Kit)
JDK는 자바 개발을 위한 전체 도구 모음이다.
JDK에는 JRE와 함께 자바 프로그램을 작성하고 컴파일하기 위한 도구들이 포함되어 있다.
예를 들어, javac와 같은 컴파일러, 디버깅 도구, JAR 파일을 생성하는 유틸리티 등이 JDK에 포함된다.
즉, 자바 개발자가 새로운 프로그램을 개발하고 컴파일하기 위해서는 JDK가 필요하다. 쉽게 말해, JDK = JRE + 개발 도구라고 생각하면 이해하기 쉽다.
구성 요소
- JRE (Java Runtime Environment) : Java 프로그램을 실행할 수 있는 런타임 환경
- 컴파일러: Java 소스 코드를 바이트 코드로 컴파일 하는 도구
- 개발 도구 : 디버깅, 프로파일링 및 모니터링 도구 등이 포함
용도
- JDK는 Java 애플리케이션을 개발하는 개발자들을 위한 도구이다. 애플리케이션을 컴파일하고 빌드하며, 실행하기 위한 환경을 제공한다.
사용자
- JDK는 Java 애플리케이션 개발자가 필요로 한다. Java 코드를 작성하고, 컴파일 후 디버깅하려면 JDK가 필요하다.
요약
- JVM (Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신이다.
- JRE (Java Runtime Environment): JVM과 자바 실행에 필요한 라이브러리가 포함된 실행 환경이다.
- JDK (Java Development Kit): 자바 개발을 위해 필요한 모든 도구(JRE + 개발 도구)를 포함하는 키트이다.
항목 | JDK (Java Development Kit) | JRE (Java Runtime Environment) | JVM (Java Virtual Machine) |
주요 역할 | Java 애플리케이션 개발 도구 | Java 애플리케이션 실행 환경 | Java 바이트코드 실행 |
구성 요소 | JRE + 컴파일러 및 기타 도구 | JVM + 라이브러리 | 클래스 로더, 실행 엔진, GC |
사용자 | Java 개발자 | Java 프로그램 실행 사용자 | 모든 Java 프로그램 실행 환경 |
포함 관계 | JDK > JRE > JVM | JRE > JVM | JVM 단일 구성 |
이 세 가지 개념은 서로 연결되어 있지만, 그 역할은 조금씩 다르다.
자바를 개발하기 위해서는 JDK가 필요하고, 자바 프로그램을 실행하기 위해서는 JRE가 필요하며, 그 실행을 담당하는 것이 바로 JVM이다.
각각의 역할을 명확히 이해하면 자바 환경에 대해 더 깊이 있게 접근할 수 있을 것이다.
'JAVA' 카테고리의 다른 글
Java - 문자열 내 Tab 문자 지우기 (0) | 2024.11.25 |
---|---|
JAVA - JAVA에서 인터페이스와 추상 클래스의 차이점은 무엇일까? (0) | 2024.11.25 |
JAVA - 자바의 주요 특징은 무엇일까? (0) | 2024.11.23 |
JAVA - 파일 입출력 방식 (Java Input/Output) (0) | 2024.11.18 |
JAVA - int to String ↔ String to int (정수 ↔ 문자열로 변경) (1) | 2024.11.12 |