JAVA를 사용해 개발을 진행하다 보면 JDK, JRE, JVM과 같은 단어들을 쉽게 접할 수 있습니다. 이 셋은 자바 프로그램의 개발과 실행을 위해 필요한 컴포넌트로, 오늘은 이 용어들의 정의에 대해 알아보도록 하겠습니다.
1. JVM (Java Virtual Machine)
이름 그대로 자바 코드를 실행하기 위한 가상 머신이라고 생각하면 편합니다. 기능을 간단하게 언급하자면, JVM은 아래의 역할들을 수행합니다.
1. 자바 코드로부터 컴파일되어 생성된 자바 바이트 코드를 실행합니다. JVM 덕분에 어떤 운영체제를 사용하든지 상관없이 자바 코드를 실행시킬 수 있습니다.
2. Garbage Collection을 통한 메모리 관리를 수행합니다.
JVM에 대해서는 아래의 글에 더 자세히 작성되어 있습니다.
https://jooona.tistory.com/158
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 통째로만 제공한다고 합니다.
정리하자면, 자바 개발 및 실행을 위한 컴포넌트들의 구조는 아래의 그림과 같습니다.
이 글은 아래의 글들을 참조하여 작성하였습니다.
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
'전공공부 > 자바 (JAVA)' 카테고리의 다른 글
[JAVA] Overloading과 Overriding의 차이 (0) | 2022.01.24 |
---|---|
[JAVA] Scanner vs BufferedReader & System.out vs BufferedWriter (0) | 2022.01.20 |
[JAVA] Static? 그거 왜 붙이는건데? (4) | 2022.01.19 |
[JAVA] 자바 가상 머신, JVM에 대해 알아보자! (2) | 2021.12.28 |
[JAVA] JAVA는 컴파일 언어일까, 인터프리터 언어일까? (2) | 2021.12.27 |