
1. JDK (Java Development Kit)
- 자바 개발 키트로, Java 프로그램을 개발하기 위해 필요한 도구 모음이다.
- 자바 소스 코드를 컴파일 하고 디버깅 할 수 있는 도구를 제공한다.
구성 요소
JDK에는 JRE, 컴파일러(javac), 디버깅 도구, JVM 등이 포함되어 있다.
JDK 버전
- JAVA의 버전은 JDK의 버전이다.
- 각 버전별로 새로운 기능이 추가되거나 기존 기능이 사라질 수 있습니다.
- ex) JDK 1.8에는 람다와 스트림이 추가되었다.
JDK 종류
Oracle JDK: 오라클에서 만든 JDK로, 개인에게는 무료지만 기업용은 유료이다.
Open JDK: Oracle JDK와 비슷한 성능을 제공하며, 언제나 무료이다.
2. JRE (Java Runtime Environment)
- 자바 런타임 환경으로, JVM을 동작시키는 데 필요한 각종 자바 라이브러리를 담고 있다.
- 자바 애플리케이션을 실행할 수 있는 환경을 제공한다.
구성 요소
JRE는 JVM과 자바 프로그램 실행에 필요한 라이브러리 파일 등으로 구성되어 있다.
3. JVM (Java Virtual Machine)
- 자바 가상 머신으로, 자바 애플리케이션을 실행하는 런타임 엔진 역할을 한다.
- 자바 프로그램을 OS에 맞게 번역하여 실행한다. (JVM은 운영체제마다 다른 '컴파일러'가 필요 없게 한다)
구성 요소
JVM은 JRE의 일부로 포함되어 있다.
클래스 로더
- 자바 클래스 파일을 로드하고, 필요한 클래스들을 찾아 JVM 내로 가져오는 역할을 한다.
- 런타임에 동적으로 클래스를 로드할 수 있다.
런타임 데이터 영역
- JVM이 실행될 때 사용하는 메모리 공간이다.
- 내부에 메서드 영역, 스택 영역, 힙 영역, PC 레지스터, 네이티브 메서드 스택이 존재한다.
실행 엔진(Execution Engine)
- 자바 바이트코드를 실제로 실행하는 컴포넌트이다.
- 바이트코드를 한 줄씩 읽고 실행하는 인터프리터와, 자주 사용되는 바이트코드를 네이티브 코드로 변환하여 실행 속도를 높이는 JIT Compiler가 함께 작동한다.
가비지 컬렉터
- 더 이상 참조되지 않는 객체를 메모리에서 자동으로 해제한다.
+ Additional
컴파일? 런타임?
컴파일: 프로그램을 위해 작성한 소스 코드를 기계가 처리하기 용이한 형태로 바꾸는 과정이다.
런타임: 컴파일 과정을 마친 컴퓨터 프로그램이 실제로 실행되고 있는 시간이나 환경을 의미한다.
JAVA_HOME
JDK가 설치된 디렉토리 경로를 가리킨다.
설정 방법: PATH 변수에 JAVA_HOME\bin 경로를 추가하여, 명령 프롬프트에서 자바 명령어를 사용할 수 있게 한다.
자바를 설치한다는 것은?
JDK 또는 JRE를 설치하는 것을 의미한다. 일반적으로 개발 목적으로 JDK를 설치한다.
JDK에는 JRE가 포함되어 있고, JRE에는 JVM이 포함되어 있어 구성 관계는 다음과 같다.
따라서 JDK를 설치하면 JRE와 JVM도 함께 설치된다.
ref.
[java] JDK란 무엇인가?(+JRE,JVM)
https://cloudsoswift.github.io/post/develop/java/architecture-of-jvm/
https://www.ibm.com/kr-ko/topics/jre
https://betterdev.tistory.com/2
https://www.youtube.com/watch?v=f0cAmTYo4tQ