☕ Java

JDK vs JRE vs JVM

date
Jul 6, 2023
slug
jdk-jre-jvm
author
status
Public
tags
Java
JDK
JVM
JRE
summary
자바 플랫폼에 대해 이해하고 JDK / JRE / JVM 의 정의와 동작에 대해 알아봅시다
type
Post
thumbnail
제목을-입력해주세요_-001.png
category
☕ Java
updatedAt
Jul 27, 2023 12:47 PM
Java 개발자들은 Java 코드를 작성합니다.
그리고 그 Java 코드를 컴퓨터가 알아듣고 의도에 맞게 동작합니다.
이 두 과정 사이에 Java 코드를 컴파일하고 실행하는데 동작하는 작업들과 플랫폼 독립성이라는 중요한 개념을 살펴보고자 합니다.

플랫폼 독립성


우선 모두들 아시다시피 컴퓨터는 0과 1만을 알아듣습니다.
이걸 우리는 기본 명령이라고 하는데, 이런 기본 명령 들을 운영체제가 알아듣고 그에 맞게 동작하게 됩니다.
Java나 Python 같은 다른 언어들도 결국은 0과 1로 변환되어 운영체제를 위한 기본 명령의 형태로 바뀌어야 합니다.
하지만 여기서 운영체제에 따른 기본 명령 이 다르기 때문에, Windows에서의 명령과 Unix에서의 명령, Linux에서의 명령까지 전부 다릅니다.
이렇게 다양한 운영체제에서 전부 작동하는 성질이 플랫폼 독립성 입니다.
 

자바의 플랫폼 독립성


저희가 짠 Java 코드는 한 가지 코드만으로 모든 운영체제에서 잘 동작하길 원합니다.
Java는 이러한 문제를 어떻게 해결하였을까요?
Java는 플랫폼 독립성 확보를 위해 중간 표현을 사용합니다.
Java는 모든 운영체제에서 사용되는 표현인 바이트 코드 (Byte Code) 라는 표현을 만들어 사용합니다.
바이트 코드는 운영체제에 관계없이 같은 형태로 컴파일됩니다.
하지만 바이트 코드 를 운영체제가 바로 알아듣지는 못합니다. 아까 언급하였든 기본 명령 만 알아듣습니다.
그럼 어떻게 이 바이트 코드기본 명령 으로 바뀌게 되는 걸까요?
 
이때, JVM 이 나타납니다.

JVM


JVM (Java Virtual Machine)바이트 코드 를 운영체제의 특정한 기본 명령 의 형태로 바꾸어 실행시키는 소프트웨어입니다.
각 운영체제마다 기본 명령 의 형태가 다르니 JVM 도 각 운영체제마다 다릅니다.
notion image
저희가 Java 코드를 처음 짜고 실행할 때, 처음으로 해야 하는 것은 컴파일 이라는 동작입니다.
그러면 우리가 짠 Java 코드가 바이트 코드 의 형태로 변환되고 .class 확장자로 변환되어 저장됩니다.
그러한 클래스 파일을 JVM 이 불러와 실행하여 각 운영체제에 맞는 기본 명령 의 형태로 바꾸어 주게 됩니다.
 

JVM vs JRE vs JDK


JVM 에 대해선 위에서 살펴보았죠, 그러면 JRE 는 무엇이고 JDK 는 무엇일까요?
 
JRE (Java Runtime Environment) 는 자바 실행 환경을 말합니다.
자바 실행 환경은 JVM + 자바 관련 라이브러리를 모두 합친 것을 말합니다.
예를 들어 저희가 원하는 데이터를 출력하는 System.out.println() 메서드와 같은 여러 내장 메서드가 정의된 자바 라이브러리를 JRE 가 가지고 있습니다.
 
JDK (Java Development Kit) 는 자바 개발 키트를 말합니다.
자바 개발 키트는 JRE + 컴파일러 + 디버거를 합친 소프트웨어입니다.
자바 프로그램을 개발하고 실행할 때 사용되는 모든 툴을 포함하는 거죠!
 
그림으로 알아보면 다음과 같습니다.
notion image
 
이러한 자바의 특성과 장점을 이해하고 잘 사용하는 개발자가 되기 위해 노력해보겠습니다!!!
 
notion image