JVM이란??
자바 가상 머신 JVM(JAva Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어이다. 자바 코드를 컴파일하여 .class 바이트 코드로 만들면 이 코드가 자바 가상 머신 환경에서 실행됩니다. JVM은 자바 실행 환경 JRE(Java Runtime Environment)에 포함되어 있습니다. 현재 사용하는 컴퓨터의 운영체제에 맞는 자바 실행환경(JRE)가 설치 되어 있다면 자바 가상 머신이 설치되어 있다는 뜻이다.
JVM의 이점
JVM을 사용하면 하나의 바이트 코드로(.class)로 모든 플랫폼에서 동작이 가능하다는 점이 가장 큰 이점이라고 할 수 있다.
여기서 .class 파일은 바이트 코드라고 하는데 사람이 쓰는 Java코드에서 컴퓨터가 읽는 기계어로 중간단계라고 생각하면 된다.
바이트 코드
자바 바이트 코드는 JVM이 이해 할 수 있는 언어로 변환된 자바 소스코드를 의미한다. 자바 컴파일러에 의해 변환된 코드의 명령어가 크기가 1바이트라서 자바 바이트 코드라고 불리고 있다. 여기서 바이트코드는 다시 실시간 번역기 또는 JIT 컴파일러에 의해 바이너리 코드로 변환된다.
JIT 컴파일러
JIT(Just-In-Time compliation)또는 동적 번역이라고 한다.
JIT 컴파일러는 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일러이다. 그렇다면 JIT 컴파일러가 등장한 이유는 무엇일까? 기본적으로 인터프리터 과정으로 번역하기에 JIT를 이용해 인터프리터 방식의 단점을 보완하기 위해 JIT가 등장하였다. 하지만 JIT 컴파일러가 컴파일 하는 과정은 바이트 코드를 인터프리터 방식으로 번역하는 과정 보다 훨씬 오래걸린다. 따라서 JIT 컴파일러를 사용하는 JVM들은 내부적으로 해당 메서드가 얼마나 자주 수행 되는지 체크하고 일정한 정도마다 컴파일을 수행한다.
JVM의 구성
- Class Loader(클래스 로더)
- Execution Engine(실행 엔진)
- Interpreter(인터프리터)
- JIT(JIT컴파일러)
- Garbage Collector(가비지 콜렉터)
- Runtime Data Area(런타임 데이터 영역)
'Language > Java' 카테고리의 다른 글
[Java] 자료형과 데이터 (0) | 2023.08.20 |
---|---|
[Java] java printf와 println 차이점 (0) | 2023.08.20 |
[Java] JRE와 JDK에 대해 알아보자 (0) | 2023.08.17 |
[Java] JVM 구조 및 동작 구조와 메모리 구조에 대해 알아보자 (0) | 2023.08.17 |
[Java] Java란? (0) | 2023.08.16 |