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");
        }
}

java 컴파일

javac 명령어를 통해 해당 파일을 바이트 코드로 컴파일할 수 있다.

컴파일 후 javap 명령어를 통해 어떤 바이트 코드 파일이 어디서부터 나왔고, 어떠한 필드와 메서드를 갖고 있는 파일인지 확인할 수 있다.

위와 같은 방식으로 java의 바이트 코드를 확인해 보았다.

 

※ 결론적으로 JVM은 바이트 코드(클래스 파일)를 OS에 특화된 코드로 변환하여 실행해 주는 자바 가상 머신이다.

 

JRE (Java Runtime Environment) 

: 자바 애플리케이션을 실행할 수 있도록 구성된 배포판 (JVM + 라이브러리)

- JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다.

- 자바를 개발하는데 필요한 툴은 JDK 에서 제공한다.

- java 11버전부터는 JRE를 따로 제공하지 않는다.

 

JDK (Java Development Kit)

: JRE + 개발에 필요한 툴을 모아놓은 소프트웨어 패키지