전공공부/자바 (JAVA)

[JAVA] JVM, JRE, JDK의 차이점이 뭘까?

jooona 2022. 1. 16. 01:13
반응형

JAVA를 사용해 개발을 진행하다 보면 JDK, JRE, JVM과 같은 단어들을 쉽게 접할 수 있습니다. 이 셋은 자바 프로그램의 개발과 실행을 위해 필요한 컴포넌트로, 오늘은 이 용어들의 정의에 대해 알아보도록 하겠습니다. 

 

1. JVM (Java Virtual Machine)

이름 그대로 자바 코드를 실행하기 위한 가상 머신이라고 생각하면 편합니다. 기능을 간단하게 언급하자면, JVM은 아래의 역할들을 수행합니다.

 

1. 자바 코드로부터 컴파일되어 생성된 자바 바이트 코드를 실행합니다. JVM 덕분에 어떤 운영체제를 사용하든지 상관없이 자바 코드를 실행시킬 수 있습니다.

2. Garbage Collection을 통한 메모리 관리를 수행합니다.

 

JVM에 대해서는 아래의 글에 더 자세히 작성되어 있습니다.

https://jooona.tistory.com/158

 

[JAVA] 자바 가상 머신, JVM에 대해 알아보자!

JVM은 Java Virtual Machine의 약자로 자바 프로그램을 OS 환경과 상관없이 구동될 수 있도록 해주는 가상 머신입니다. 1. JVM의 역할 1. OS에 구애받지 않는 실행 사용자가 작성한 자바 코드는 자바 컴파

jooona.tistory.com

 

2. JRE (Java Runtime Environment) 

JRE도 이름 그대로 해석이 가능합니다. 자바를 실행하기 위한 환경을 조성해 주기 위한 소프트웨어로서, 크게 JDK, JAVA Class Loader(자바 클래스 로더), JAVA Class Library(자바 클래스 라이브러리)로 구성됩니다. 1번에서 살펴보았던 JDK는 JRE에 포함되는 구성요소였던 것이죠!

 

작동 순서는 다음과 같습니다.

 

1. 자바 클래스 로더가 클래스를 로드하여 자바 클래스 라이브러리에 연결하여준다.

2. 자바 클래스 라이브러리에서 코드 동작에 필요한 라이브러리들을 결합시킨다.

3. JVM에서 실행된다.

 

3. JDK (Java Development Kit)

JDK는 개발자들이 자바를 이용하여 개발을 진행하는데 필요한 툴들을 모아놓은 패키지입니다. 2번에서 살펴본 JRE는 역시 JDK에 포함되는 구성 요소이죠. 

 

JRE와 JDK의 차이는 바로 JRE는 자바 코드를 실행하기 위한 도구의 패키지이고, JDK는 자바 프로그램을 개발하기 위한 도구의 패키지라는 점입니다. 따라서 JRE는 JDK에 포함되어 있기는 하지만, 자바 개발은 필요 없고 실행만 하면 되는 상황이라면 전체 JDK가 아닌 JRE만 사용해도 됩니다.

 

참고로 Oracle은 JAVA 11부터는 JRE를 따로 제공하지 않고 JDK 통째로만 제공한다고 합니다.

 

 

정리하자면, 자바 개발 및 실행을 위한 컴포넌트들의 구조는 아래의 그림과 같습니다.

 

JVM vs. JRE vs. JVM

 

 

 

이 글은 아래의 글들을 참조하여 작성하였습니다. 

 

https://www.itworld.co.kr/news/110817

https://siahn95.tistory.com/entry/Java-JRE%EB%9E%80

https://namu.wiki/w/JDK

https://www.redhat.com/ko/topics/cloud-native-apps/what-is-a-Java-runtime-environment

 

반응형