Java - JVM(Java Virtual Machine), JRE(Java Runtime Environment), JDK(Java Developement Kit)

Junburg
3 min readFeb 13, 2018

--

1. JVM(Java Virtual Machine)

Java 프로그램을 컴파일하면 바이트 코드가 만들어지는데요. 이것을 실행시키기 위한 가상의 기계가 JVM입니다. 자바 프로그램은 모두 JVM에서만 실행될 수 있습니다. Java 프로그램이 운영체제 독립적으로 실행될 수 있는 것도 JVM 덕분입니다. 하지만 JVM은 운영체제에 독립적이지 않습니다. 사용 OS에 맞는 JVM이 필요한 것이죠. 아래의 친절한 그림을 보면서 더 이야기 해보겠습니다.

운영체제 독립적인 Java 프로그램

HelloWorld.java라는 소스 코드를 하나 작성했다고 가정하겠습니다. Java 컴파일러인 javac.exe가 소스 코드를 Byte code(HelloWorld.class)로 컴파일 합니다. JVM은 Byte code를 해당 OS의 기계어로 변환하여 OS에 전달합니다. 이러한 방식으로 Java 프로그램은 JVM에 의해 운영체제에 독립적으로 동작할 수 있게되는 것이죠!

2. JRE(Java Runtime Environment)

JRE는 HelloWorld.class 파일을 JVM으로 로딩시키는 역할을 합니다. JVM은 HelloWorld.class 파일을 해석해 실행할 수 있는 상태로 만들죠. 헷갈릴 수 있지만 HelloWorld.class 파일은 아까 말한 Byte code 파일입니다. 한마디로 Java 프로그램이 실행되기 위한 최소환경입니다. Java 프로그램을 개발하지 않고 실행만 시킬 거라면 JRE만 있으면 됩니다.

3. JDK(Java Developement Kit)

Java 환경에서 돌아가는 프로그램을 개발하는 데 필요한 툴들을 모아놓은 소프트웨어 패키지입니다. 그러므로 Java 프로그래밍을 하기 위해서는 JDK를 설치해야 합니다. JDK안에는 아래와 같은 것들이 있습니다.

  • JRE = JVM + Java API
  • javac.exe = 컴파일러. HelloWorld.java > HelloWorld.class
  • java.exe = 인터프리터. Byte code(HelloWorld.class)해석, 실행
  • javap.exe = 역어셈블러. HelloWorld.class > HelloWorld.java
  • javadoc.exe = 자동문서생성기. 소스 파일의 주석을 이용해 Java API 문서와 같은 형식의 문서를 자동으로 생성함
  • jar.exe = 압축 프로그램. 클래스 파일과 프로그램의 실행에 관련된 파일을 jar 파일로 압축하거나 해제함

이외에도 굉장히 많습니다. 더 궁금하신 분들은 아래 링크를 참고해 보세요.

참고자료

--

--