Language/Java
[JAVA] JVM, JRE, JDK 자바의 동작원리
비독개
2023. 1. 13. 14:01
이 글은 백기선 님의 "더 자바, 코드를 조작하는 다양한 방법" 강의를 수강 후 참고하여 작성한 글입니다.
JVM (Java Virtual Machine)
: 자바 가상 머신
- 바이트 코드를 OS에 특화된 코드로 변환하여 실행해 준다.
바이트 코드란?
- 자바 가상 머신이 실행하는 명령어의 형태
설명만으로는 이해하기 어려울 수 있기 때문에 직접 java 파일을 컴파일하여 어떤 식으로 동작하는지 살펴보았다.
HelloWorld.java라는 간단한 파일을 생성하였다. 내용은 다음과 같다
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
javac 명령어를 통해 해당 파일을 바이트 코드로 컴파일할 수 있다.
컴파일 후 javap 명령어를 통해 어떤 바이트 코드 파일이 어디서부터 나왔고, 어떠한 필드와 메서드를 갖고 있는 파일인지 확인할 수 있다.
위와 같은 방식으로 java의 바이트 코드를 확인해 보았다.
※ 결론적으로 JVM은 바이트 코드(클래스 파일)를 OS에 특화된 코드로 변환하여 실행해 주는 자바 가상 머신이다.
JRE (Java Runtime Environment)
: 자바 애플리케이션을 실행할 수 있도록 구성된 배포판 (JVM + 라이브러리)
- JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다.
- 자바를 개발하는데 필요한 툴은 JDK 에서 제공한다.
- java 11버전부터는 JRE를 따로 제공하지 않는다.
JDK (Java Development Kit)
: JRE + 개발에 필요한 툴을 모아놓은 소프트웨어 패키지