IT Common Sense

JVM JRE JDK 역할 및 차이 + Java Program 동작 원리

고수트 2021. 6. 1. 23:48
반응형

JVM(Java Virtual Machine)

.java 로 생성된 소스코드를 컴파일하여 생성된 .class 인 바이트코드를 

각각의 OS(리눅스, 윈도우, 맥) 에 맞는 코드로 변환하여 실행시킬 수 있게 해주는 도구

이때 

인터프리터로 코드의 명령어를 기계어로 변환하고 

JIT 를 이용해 속도를 빠르게하고

Garbage Collection 을 통해 메모리를 효율적으로 관리함

즉, 바이트 코드 를 OS 에 맞게 변환하여 실행

 

인터프리터 (Interpreter)

코드의 명령어를 하나씩 기계어로 변환

JIT (Just In Time)

실행시 자주 사용하는 코드를 기계어로 변환하여 저장한 뒤 재사용하여

느린 인터프리터의 속도를 빠르게 함

Garbage Collector

heap 영역(객체와 배열 저장)에 생성된 객체들 중 참조되지 않은 객체들을 메모리에서 제거



JRE(Java Runtime Environment)

JVM 이 JAVA 를 동작시킬 때 필요한 라이브러리 파일들을 갖고 있어 실행 할 수 있게 환경을 제공하는 설치 환경 도구

즉, JRE = JVM + 환경 라이브러리

 

JDK(Java Development Kit)

java 실행 파일 + 자바 설치 환경 에 개발에 필요한 도구들을 갖춘 패키지

즉, JDK = JRE + 개발 툴(ex. javac) 

 

JAVA

단순한 언어 => jdk 속 자바 컴파일러인 javac를 사용하여 .class 인 바이트코드로 사용가능함

따라서 JAVA 언어를 이용하여 개발 하려면 JDK 가 필요하다. 

 

Java Program 동작 원리

JAVA (.java)파일을 

JDK 속 자바컴파일러인 javac 로 컴파일 하여 자바 바이트코드(.class)로 변환하고

JRE 에서 구축된 실행 환경을 바탕으로  

JVM 속에서 OS 에 맞게 변환하여 실행한다.

 

반응형