Java (자바)

[Java] JDK · JRE · JVM

Oscar:) 2024. 3. 4. 16:57

 

 

 

JDK · JRE · JVM에 대해 알아보자.

 

 

 


 

 

 

JDK

 

Java Development Kit

 

Java로 프로그램을 개발하는데 필요한 툴을 모아놓은 소프트웨어 패키지다.

 

 

JDK는 JRE, JVM을 포함하고 있다.

 

 

그렇기에 JDK를 설치하면 JRE · JVM이 함께 설치된다고 볼 수 있다.

 

 

이외에도 다음과 같은 요소를 포함한다.

 

- java : 자바 인터프리터

- javac : 자바 컴파일러

- jdb : 자바 디버거

- jar : 자바 클래스 압축 파일을 관리하는 프로그램

- javap : 컴파일된 클래스 파일을 원래의 소스 코드로 변환해주는 프로그램

 등

 

 

 

 

✅ JDK 버전

 

흔히 말하는 Java의 버전은 곧 JDK의 버전이다.

 

JDK 버전 히스토리는 다음과 같다.

 

Version Release Date
JDK 1.0 1996.01
JDK 1.1 1997.02
JDK 1.2 1998.12
J2SE 1.3 2000.05
J2SE 1.4 2002.02
J2SE 5.0 2004.09
Java SE 6 2006.12
Java SE 7 2011.07
Java SE 8 (LTS) 2014.03
Java SE 9 2017.09
Java SE 10 2018.03
Java SE 11 (LTS) 2018.09
Java SE 12 2019.03
Java SE 13 2019.09
Java SE 14 2020.03
Java SE 15 2020.09
Java SE 16 2021.03
Java SE 17 (LTS) 2021.09
Java SE 18 2022.09
Java SE 19 2022.09
Java SE 20 2023.03
Java SE 21 (LTS) 2023.09
Java SE 22 2024.03

 

 

JDK 버전이 곧 Java의 버전이었다가,

어느 순간부터 Java SE로 버전 명이 통합되었다.

 

 

우리는 흔히 Java8 또는 Java11을 사용해 왔는데, 그 이유는 LTS 다.

 

*LTS : Long Term Support

= 장기 지원을 약속하는 버전

 

LTS가 없는 버전은 대부분 3~4년 후 지원이 중단된다.

 

 

현재는 17, 21 버전도 LTS에 해당하지만,

최신 버전의 경우 잦은 버그 수정으로 인해 안정화될 때까지 사용이 꺼려지는 감이 있다.

 

요즘 17 버전은 은근 많이들 사용한다.

 

 

 


 

JRE

 

Java Runtime Enviroment

 

자바 런타임 환경

 

 

 

JVM을 포함해 자바 프로그램을 실행시킬 때 필요한 도구 모음이다.

 

또한 JVM이 원활히 동작할 수 있는 환경을 제공해주는 역할도 한다.

 

 

우리가 흔히 사용하는 System.out.print, Scanner 등이 JRE에 들어있다.

 

 

 


 

JVM

 

Java Virtual Machine

 

자바를 실행하기 위한 가상 머신

* 가상 머신 : 프로그램 실행을 위한 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것.

 

 

 

자바의 대표적인 특징 중 하나는 플랫폼에 종속적이지 않다는 것이다.

하지만 플랫폼(OS)마다 실행되는 방식은 분명히 다르다.

 

각기 다른 플랫폼에 종속되지 않고 자바를 실행할 수 있게 해주는 것이 JVM이다.

 

JVM은 플랫폼보다 상위 계층에서 자바를 실행한다.

 

 


 

 

컴퓨터는 0과 1밖에 못 알아 듣는다.

(어떻게 보면 멍청한건가)

 

그래서 우리가 작성한 코드를 컴퓨터가 이해할 수 있도록

0과 1로 된 이진수 파일로 변환해줘야 한다.

 

이 과정을 컴파일이라고 하며, 이 과정을 해주는 프로그램이 컴파일러다.

 

컴파일된 이진수 파일은 바이트 코드 또는 바이너리 코드라고 한다.

 

 

하지만 이 0과 1의 조합은 플랫폼(OS)마다 다르다.

 

 

✅ C 언어 실행 방식

 

C 언어 실행

 

 

C 언어의 경우, 각 운영 체제에 알맞는 컴파일러를 사용해야 한다.

 

즉, 윈도우 컴파일러가 컴파일한 바이트 코드를 맥은 이해하지 못한다는 것이다.

 

 

 

하지만 Java는 다르다.

 

 

✅ Java 실행 방식

 

Java 실행

 

 

각 운영 체제 위에 JVM이 위치하며,

컴파일된 바이트 코드를 JVM이 운영 체제에 맞게 다시 번역해준다.

 

결론적으로, JVM이 있기에 여러 플랫폼에 맞는 바이트 코드를 준비할 필요 없이

하나의 바이트 코드가 여러 플랫폼에서 사용될 수 있다는 것이다.

 

 

 

 


 

 

 

 

 

이번 포스팅에서는 JDK · JRE · JVM에 대해 알아보았다.

 

 

자바를 다루는 개발자라면 당연히 알아야 하는 개념이기에

미루고 미루다 결국 정리했다.

 

 

'Java (자바)' 카테고리의 다른 글

[Java] Garbage Collector  (0) 2024.03.06
[Java] JVM 메모리 할당 방식 - Stack · Heap Memory  (2) 2024.03.05
[Java] HashMap / 해시맵  (0) 2024.02.06
[Java] 확장 for문 / Collection  (0) 2024.02.05
[Java] 삼항 연산자  (0) 2024.02.04