전산학/Java

[Java] 2. JDK의 구성 요소 (JRE, JVM, Development Tools)

이신선 2022. 4. 27. 12:32
728x90

 

지난 포스팅에서 Java 소스 코드를 컴파일 후 실행시켜 Hello World!를 출력하기 위해 JDK라는 것을 설치했었다. 그러면 대체 JDK가 뭐길래 우리는 Java 코드를 실행할 수 있었을까? 그리고 java와 javac는 어떻게 사용할 수 있었던 걸까? 이번 포스팅에서는 위 질문들에 대한 정답을 알기 위해 JDK의 구성 요소를 알아보고자 한다.

 

 

[Java] 1. 터미널에서 Java로 "Hello, World!" 출력하기 (JDK 설치, java, javac)

사람들이 새로운 언어를 배울 때 보통 IDE를 사용해서 개발을 시작한다. IDE를 사용하면 빌드, 컴파일이 버튼 하나로 되고, 디버깅도 손쉽게 가능해 편하긴 하지만, '그런데 내 코드가 어떻게 실행

sinseonlee.tistory.com

 


 

0. JDK란?

 

Java Development Kit의 약자. 말 그대로 Java 개발에 필요한 툴들을 모아놓은 패키지이다. JDK가 있으면 Java로 만든 프로그램을 실행할 수 있고, Java 코드를 작성하여 프로그램을 개발할 수도 있다. Oracle, IBM 등 여러 벤더에서 제공하고 있고, OpenJDK도 제공된다. Oracle의 JDK를 많이 사용하는 듯 하다. JDK의 버전이 곧 Java의 버전이기 때문에, 원하는 버전에 맞춰 JDK를 사용하면 된다.

 

참고로 Java 11 버전 전까지는 JRE 형태로도 제공이 되었지만, 11부터는 오로지 JDK 형태로만 제공이 된다.

 

 

1. JDK의 구성 요소

 

JDK는 크게 두 가지로 구분된다. Java 프로그램을 실행하기 위한 JRE와 개발을 위한 Development Tools이 그것이다.

 

JDK는 JRE와 Development Tools 두 부분으로 구성된다.

 

(1) JRE(Java Runtime Environment) : Java 프로그램을 실행하기 위한 JVM과 Library로 구성된다

  • JVM(Java Virtual Machine) : class 파일 형태로 만들어진 바이트코드를 실행 환경(OS)에 특화된 코드로 변환하여 실행해준다. Java 프로그램은 다른 언어들과 다르게 가상 머신 형태의 JVM 위에서 실행된다. 그렇기 때문에 JVM은 특정 OS에 종속적이고, 같은 JDK 버전이더라도 각 벤더별로 제공되는 JVM이 다르다.
  • Library : Java 핵심 Library 및 Property Setting, Resource File 등 실행에 필요한 파일들이 담겨있다. Java 프로그램 실행 시에 사용된다.

OS에 종속된 JVM이 존재하기 때문에, 동일한 Source Code가 다른 환경에서 동일한 결과로 실행될 수 있다.

 

(2) Development Tools : 말 그대로 Java 프로그램 개발을 위한 Tool들이다. java, javac 뿐만 아니라 appletviewer, extcheck 등 다양한 Tool들이 제공된다. Java 설치 디렉토리 내 bin 파일에서 확인 가능하다.

 

많은 수의 Tool들이 있음을 확인할 수 있다.

 

2. 그럼 Java는 무엇인가?

 

Java는 프로그래밍 언어일 뿐이다. 우리가 .java 파일을 만들고 문법에 맞춰서 Java 코드를 작성했다고 하자. 그러면 우리는 Java라는 프로그래밍 언어로 코드를 작성한 것이다. 이 코드를 컴파일하고 실행해주는 역할을 하는 것이 바로 JDK인 것이다. 실제로 JVM은 바이트 코드를 실행해주는 역할이기 때문에, Java 뿐만 아니라 Kotlin, Scala와 같은 언어들도 JVM에서 실행이 가능하다. (얘네들을 JVM 기반 언어라고 한다)

 

위 내용을 기반으로 Hello.java 파일을 실행하는 과정을 다음과 같이 설명할 수 있다. 우선 Hello.java 파일을 작성하고 Development Kit에 있는 javac를 이용해 컴퓨터가 이해할 수 있는 언어인 바이트코드(Hello.class)로 Compile 한다. 그리고 java 명령어로 Hello를 실행하면 JVM가 필요한 Library를 가져다가 바이트코드를 실행한다.

 


 

본 포스팅에서는 JDK의 구성요소들에 대해서 알아보았다. JDK, JRE, JVM의 개념과 Java 코드가 어떻게 실행되는지 대략적으로 알 수 있지만, Java 프로그램이 실행되는 곳은 JVM이기 때문에 결국 JVM 내에서 어떤 일이 벌어지는 것인지를 알아야 Java 코드가 어떻게 실행되는지 이해했다고 말할 수 있을 것이다. 다음 포스팅에서는 JVM 내에서 구체적으로 어떤 작업을 하는지, JVM의 구성 요소에 대해서 다뤄보고자 한다.

 

 

728x90