저는 Java를 주 언어로 사용하고 있음에도 불구하고, JVM, JDK, JRE가 뭔지, 뭐가 다른지를 제대로 이해하고 있지 못했습니다.
공부가 필요하다고 판단하여, 해당 내용을 학습하였고 이를 정리 해보았습니다.
해당 글에서는 차이점에 집중하여 정리하고, 자세한 내용은 추 후 다른 글에 정리하려고 합니다.
JVM (Java Virtual Machine)
- 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환하는 역할을 합니다.
- JVM 자체는 바이트 코드를 실행하는 표준 입니다.
- JVM 구현체가 있는데, 이는 특정 밴더가 구현한 JVM을 의미합니다. (밴더 > 오라클, 아마존, ...)
- 특정 플랫폼에 종속적입니다. (네이티브 코드가 OS에 맞춰서 실행되어야 하기 때문!)
JRE (Java Runtime Environment)
- JVM + 라이브러리
- JVM은 홀로 제공되지 않고, 최소한의 배포 단위가 JRE입니다..
- JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있습니다.
- 개발 관련 도구는 포함되지 않습니다.
JDK (Java Development Kit)
- JRE + 개발에 필요한 툴
- javadoc, jar, javap, jhat... 등의 툴을 제공합니다.
- 소스 코드를 작성할 때 사용하는 자바 언어는 플랫폼에 대해 독립적입니다.
- 오라클에서는 Java11 부터는 JDK만 제공합니다. (JRE를 제공하지 않습니다.)
- JDK에 들어있는 자바 컴파일러(javac)를 사용하여 바이트 코드(.class)를 컴파일 할 수 있습니다.
- Write Once, Run Anywhere
JVM 언어
- JVM 기반으로 동작하는 프로그래밍 언어를 말합니다.
- 대표적으로 Java, Groovy, Kotlin, Scala 등이 있습니다.
간단히 말해, Java 애플리케이션 개발자라면 컴퓨터에 JDK가 설치되어 있어야 합니다. 하지만, Java로 빌드된 애플리케이션만 실행하면 된다면 JRE만 설치되어 있어도 됩니다.
출처
https://howtodoinjava.com/java/basics/jdk-jre-jvm/
https://www.inflearn.com/course/the-java-code-manipulation/dashboard
'Java' 카테고리의 다른 글
자바 클래스 초기화 탐구 (0) | 2023.01.13 |
---|---|
Java의 상속과 생성자 (0) | 2022.10.21 |
Class Loader의 역할과 동작 방식 (0) | 2022.10.20 |
JVM(Java Virtual Machine)의 구조 (0) | 2022.10.20 |
댓글