[JAVA] 04. 자바에서 헷갈리는 용어 정리 - JVM, JRE, JDK
오늘은 자바 언어를 사용하다 보면 나오는 다양한 용어들을 정리해 보겠습니다. 특히 현장에서도 종종 사용되고, 헷갈리기 쉬운 3가지 용어에 대해서 알아보도록 하겠습니다. 본 포스팅은 해당 용어들의 차이점에 대해 간단히 다뤄보는 포스팅입니다. 따라서 추후 특정 용어에 대한 상세한 설명이 필요할 경우 별도의 포스팅에서 다루도록 하겠습니다.
본격적인 포스팅에 앞서 JDK, JRE, JVM 각각의 용어가 가지고 있는 범위에 대해서 도식화해 보면 아래와 같습니다.
JVM -> JRE -> JDK 순으로 안에 담고 있는 기능상의 범위가 점점 넓어지는데요. 해당 적용범위를 기준으로 아래의 포스팅을 보시면 도움이 되시리라 생각합니다.
JVM (Java Virtual Machine)
JVM은 Java Virtual Machine의 약자로서 우리나라 말로 번역해 보면 자바 가상 머신 정도로 해석할 수 있습니다.
[JAVA] 03. 자바의 5가지 특징에서 언급했던 범용성의 핵심이 되는 역할을 하는 프로그램이 바로 JVM입니다. JVM은 아래에서 언급한 기능을 담당하고 있습니다.
- 자바의 실행환경을 만들어 준다.
- 자바 코드를 컴파일하는 기능을 담당하며 .class 라는 이름의 바이트 코드를 생성하여 자바 소스코드의 실행을 도와준다.
- JVM은 운영체제 별로 JAVA소스가 동작하기 위해 내부 프로그램이 운영체제에 따라 종속적으로 구성되어 있다.
JRE (Java Runtime Environment)
JRE는 Java Runtime Environment의 약자로서 우리나라 말로 번역해 보면 자바 실행 환경 정도로 해석할 수 있습니다. JVM은 자바를 실행할 수 있는 기본이 되는 코어 프로그램을 의미한다면, JRE는 JVM 코어 프로그램을 기반으로 사용자가 JAVA를 실행하기 위해 필요한 도구들의 모음 정도로 이해하면 좋을 것 같습니다. JRE에 대한 간단한 특징은 아래와 같습니다.
- JRE는 JVM과 자바 프로그램의 실행에 필요한 시스템 라이브러리(ex) 자바 클래스 라이브러리, 자바 명령, 인프라 등)가 포함되어 있다.
- JRE는 JAVA 프로그램을 사용하는 일반사용자(ex) 비 개발자)들에게 JAVA 프로그램 이용 환경을 제공해 준다.
- JRE는 JVM을 기반하여 프로그램 전반의 실행 및 운영을 관장한다.
JDK (Java Development Kit)
JDK는 Java Development Kit의 약자로서 우리나라 말로 번역해 보면 자바 개발 도구 정도로 해석할 수 있습니다. 보통 자바를 처음 접한 경우 JRE와 JDK에 대해서 헷갈리는 경우가 종종 있는데요. 두 용어 간의 차이를 간단히 말해보면 JRE는 일반 사용자들의 JAVA 프로그램의 원활한 사용 및 실행에 포커스를 두었다고 하면, JDK는 JAVA 프로그램을 개발하는 개발자를 중심으로 만들어진 도구의 집합으로 이해하면 좋을 것 같습니다. JDK에 대한 간단한 특징은 아래와 같습니다.
- 자바 프로그램을 작성하고, 컴파일할 수 있는 도구가 포함되어 있다.
- 개발자가 자바 프로그램을 개발해야 할 경우 반드시 JDK를 설치하여 개발을 진행해야 한다.
- Oracle JDK를 이용하게 될 경우 이용 목적에 따라 Oracle에 비용을 지불해야 할 수 있다. 이러한 이유로 개발자들은 다른 회사 또는 커뮤니티에서 만든 Open JDK 도입을 적극 검토하고 있는 상황이다. ([JAVA] 02. 자바의 유료화)
마치며
지금까지 JAVA에서 헷갈릴 수 있는 JVM, JRE, JDK 3가지의 차이점에 대해서 알아보았습니다. 특히 처음 자바 언어를 접하게 되면 JVM은 다른 용어와 크게 헷갈리는 편은 아니지만 JRE와 JDK에 대해서 헷갈리는 경우가 종종 있습니다. 특히 이러한 용어에 대해서 정확히 알고 있어야 실제 현장에서 작업을 진행 때도 해당 용어들이 빈번하게 사용되고 있으니 이번 기회에 JVM, JRE, JDK에 대한 용어의 차이에 대해 간단하게나마 파악하셨으면 좋겠습니다.
'IT > JAVA' 카테고리의 다른 글
[JAVA] 06. 자바(JAVA) JDK 설치 - Open JDK 설치 (Temurin JDK) (1) | 2023.02.24 |
---|---|
[JAVA] 05. Oracle JDK 설치 (3) | 2023.02.22 |
[JAVA] 03. 자바의 5가지 특징 (0) | 2023.02.16 |
[JAVA] 02. 자바의 유료화 (1) | 2023.02.06 |
[JAVA] 01. 자바란 (1) | 2023.01.27 |