본문 바로가기
[이직 면접] 질의 응답

[Java] JVM, JRE, JDK의 차이점과 역할에 대해 설명하세요

by 막개발자 2021. 1. 19.

# 질의 응답 상황

[면접관]

지원자님 JAVA를 주로 사용하셨는데 JVM, JRE, JDK에 대해서 간략하게 설명해주세요.

 

[막개발자] 

JVM (Java Virtual Machine)은 자바 가상 머신으로, 자바 바이트코드를 실행하는 환경을 제공합니다.

JRE(Java Runtime Environment)는 자바 애플리케이션을 실행하는 데 필요한 라이브러리와 JVM을 포함하고 있는 실행 환경이며,

JDK(Java Development Kit)는 자바 프로그램을 개발하기 위한 모든 도구가 포함된 개발 환경입니다.

간단히 말해서, JVM은 자바 바이트코드를 실행하는 핵심 요소이고, JRE는 애플리케이션 실행을 위한 환경을, JDK는 개발에 필요한 모든 도구를 포함합니다.

 

 

# 상세 설명

 

JVM, JRE, JDK의 차이점과 역할에 대해 알아보겠습니다.

 

JVM (Java Virtual Machine)
JVM은 Java 바이트코드를 실행하는 가상 머신입니다. Java의 가장 큰 특징 중 하나는 플랫폼 독립성인데, JVM은 이를 실현하는 핵심 요소입니다. Java 프로그램은 운영체제와 관계없이 동일한 바이트코드를 실행할 수 있도록 JVM 위에서 동작합니다. JVM은 메모리 관리가비지 컬렉션을 통해 불필요한 객체를 자동으로 삭제하고 메모리를 회수하여 효율적으로 시스템 자원을 관리합니다. JVM은 각 운영체제마다 다르게 구현되며, Windows, macOS, Linux 등 다양한 플랫폼에서 사용할 수 있습니다.

 

JRE (Java Runtime Environment)
JRE는 Java 애플리케이션을 실행할 수 있는 환경을 제공합니다. JVM을 포함하고 있으며, Java 애플리케이션을 실행하기 위한 필수적인 라이브러리들이 함께 제공됩니다. 예를 들어, 파일 처리, 데이터 구조, 네트워크 통신 등을 위한 Java 클래스 라이브러리들이 포함되어 있습니다. JRE는 애플리케이션 실행에 필요한 환경을 제공하지만, 개발 도구는 포함되어 있지 않기 때문에 개발자는 JDK를 사용해야 합니다.

 

JDK (Java Development Kit)
JDK는 Java 애플리케이션을 개발하기 위한 모든 도구와 라이브러리를 포함하는 개발 키트입니다. JDK는 JRE를 포함하고 있어, Java 애플리케이션을 실행하는 데 필요한 환경을 제공합니다. 또한, 컴파일러( javac ), 디버깅 도구, 문서화 도구( javadoc ), 아카이브 도구( jar ) 등 다양한 개발 도구가 함께 제공됩니다. JDK는 Java 애플리케이션을 개발, 빌드, 실행하는 데 필요한 모든 요소를 갖춘 도구 세트를 제공합니다.

JVM, JRE, JDK 간의 관계

  • JVMJava 바이트코드를 실행하는 가상 머신입니다.
  • JRE는 JVM과 Java 클래스 라이브러리를 포함하는 실행 환경입니다.
  • JDKJRE를 포함하며, Java 애플리케이션 개발에 필요한 도구들이 포함된 개발 키트입니다.

이 세 가지 구성 요소는 Java 환경을 구축하고 활용하는 데 필수적인 요소들입니다. JDK는 개발을 위해 설치해야 하며, JRE는 Java 애플리케이션을 실행하는 데 사용됩니다. JVM은 이 모든 과정에서 바이트코드를 실행하는 중요한 역할을 담당합니다.


JVM, JRE, JDK의 차이를 이해하는 것은 Java 개발을 원활하게 진행하는 데 중요한 첫걸음입니다. Java는 플랫폼 독립성을 제공하는 언어로, 이를 가능하게 하는 핵심 기술이 JVM입니다. Java 애플리케이션을 개발하고 실행하려면 JDK와 JRE를 적절하게 활용해야 하며, 이를 통해 효율적인 개발 환경을 구축할 수 있습니다.