[Java] JDK, JRE, JVM, JIT

dustle·2023년 6월 1일
1

JVM(Java Virtual Machine)

JVM은 자바 가상머신(Java Virtual Machine)의 약자입니다.

Java Byte Code 를 OS 에 맞게 해석 해주는 역할을 합니다.
컴파일러가 .java → .class 바이트 코드로 변환하면 JVM이 OS가 바이트 코드를 이해할 수 있도록 해석해줍니다.
그래서 JVM은 플랫폼에 의존적입니다.
하지만 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있습니다.
JVM 구조

JRE(Java Runtime Environment)

JRE는 자바 실행환경(Java Runtime Environment)의 약자입니다.

JRE는 JVM 이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있습니다.

JIT(Just-In-Time)

JIT(Just-In-Time)의 약자로 JRE 안에 존재합니다.

프로그램을 실행할 때 기계어로 컴파일하는 컴파일 기법입니다.
자바 바이트 코드는 인터프리터 언어입니다.
하지만 인터프리터가 한 줄씩 읽고 해석하며 기능을 실행시키기에 실행 속도가 C/C++와 같은 언어로 만들어진 실행 파일보다 느립니다.

이러한 이유로 같은 코드를 매번 새롭게 해석하는 대신, JIT를 이용해 반복적인 코드를 네이티브 코드로 전부 바꾸고 그 다음부터 인터프리터가 바로 네이티브 코드를 사용해 속도를 개선합니다.

JDK(Java Development Kit)

JDK는 자바 개발도구(Java Development Kit)의 약자입니다.

JRE + 개발을 위해 필요한 도구(javac, java등)들을 포함합니다.


Java 실행 과정

(.java) java source → compiler → (.class) Bytecode → JIT compiler → Native code

0개의 댓글