본문 바로가기
Java

JVM, JRE, 그리고 JDK의 개념

by kmmguumnn 2019. 2. 4.

 

 

JVM

 

-  JVM (Java Virtual Machine)은 추상적인(abstract) 머신이다. 즉 JVM이 가상(virtual) 머신인 것은 그것이 물리적으로는 존재하지 않기 때문이다. 

 

-  JVM은 Java 바이트코드가 실행될 수 있는 런타임 환경을 제공하는 명세(specification)다. 

   (ex. HotSpot: JVM 구현체)

 

-  Java가 아닌 다른 언어(ex. Kotlin, Scala, Groovy 등)로 쓰여진 프로그램도 Java 바이트코드로 컴파일 되어 JVM이 실행할 수 있다.

 

-  JVM은 다양한 하드웨어와 소프트웨어 플랫폼에서 이용할 수 있다. JVM, JRE, JDK는 플랫폼 의존적인데, 각 OS의 설정이 서로 다르기 때문이다. 하지만 Java 언어 자체는 플랫폼 독립적이다. 

 

-  JVM의 3가지 개념: 명세(specification), 구현(implementation), 그리고 인스턴스(instance)이다.

 

-  JVM은 다음의 주된 작업을 수행한다.

  • 코드를 읽는다(load).
  • 코드를 검사한다(verify).
  • 코드를 실행한다(execute).
  • 런타임 환경을 제공한다.

 

 

JRE

 

-  JRE는 Java Runtime Environment의 약자로, RTE(Runtime Environment)라고 쓰여지기도 한다. Java 어플리케이션을 개발하는 데 사용되는 소프트웨어 툴들의 모음이며, 런타임 환경을 제공하는 데 쓰인다. 

 

-  런타임 시에 JVM이 사용하는 라이브러리(JCL; Java Class Library)와 다른 파일들의 모음이다.
    즉 JRE는 JVM라이브러리들(input/output, collections, security, XML 파싱 클래스, UI toolkit 등)로 구성되어 있다.

 

-  JVM의 구현(implementation)은 또한 Sun Micro Systems 뿐만 아니라 그 외 다른 회사들에 의해서도 활발히 릴리즈되고 있다.

 

JRE

 

 

JDK

 

-  JDK는 Java Development Kit의 약자로, Java 어플리케이션을 개발하는 데 사용되는 소프트웨어 개발 환경이다. JRE개발에 필요한 툴들을 포함한다.

 

-  Java application의 개발을 위한 private한 JVM과 인터프리터/로더(java), 컴파일러(javac), 아카이버(jar), 문서 생성기(Javadoc) 등을 포함한다. 
 
JDK

 

 

'Java' 카테고리의 다른 글

Java에서 String은 왜 불변일까?  (2) 2020.07.21
String Constant Pool이란? | Java String Pool  (2) 2020.07.20
JVM 아키텍처 / Garbage Collection  (0) 2019.04.05
POJO 이해하기  (0) 2018.12.12

댓글