본문 바로가기

Backend Study/Java

[Java ] JVM, JRE, JDK 차이점

자바 개발을 하면 JVM, JRE, JDK에 관해 많이 들어봤을거다! 자바의 특징을 짧게 정리하고, 이 3가지에 대해 알아보자. 😊

 

1.  자바는 플랫폼에 독립적이다? 

프로그래밍 언어는 기본적으로 [컴파일]되는 언어와 [인터프리트]되는 언어로 나누어진다. 

[컴파일 언어]는 프로그래밍 언어로 코드를 짜고 나서 실행 전에, 컴퓨터가 이해할 수 있는 언어로 번역 작업을 해서 미리 가지고 있다.  

[인터프리트 언어]는 코드를 컴퓨터에 그대로 전달하고, 인터프리터가 실시간으로 통역을 한다. 

 

자바와 C계열등의 언어들은 컴파일 언어에 속하는데, 자바는 기존 컴파일 언어들과 차이점이 있다! 

컴퓨터도 종류마다 쓰는 언어가 다른데 (ex. 윈도우, 맥, 리눅스 등) 기존 컴파일 언어들은 번역본을 따로 컴파일하여 다르게 보내야하는 매우 큰 불편함을 가지고 있었다.

자바는 각 환경에 JVM - 가상 머신을 두어서 이 문제를 해결했다.

 

2. JVM? 

JVM은 가상머신(Java Vurtual Machine)의 약자이다. 

JVM은 자바의 공통 언어(JB)를 이해할 수 있고, 각 환경의 언어를 알고 있어서 환경이 다르다고 해서 따로 컴파일하지 않아도 된다. 

즉 자바 개발자들은 JVM 프로그램만 설치해두면 개발할 때 어떤 언어로 컴파일할지 고려하지 않아도 된다 !! (현재는 자바처럼 가상 머신을 사용하는 언어들이 많다. )

 

3. 그럼 JRE과 JDK는 뭘까? 

결론적으로 JDK > JRE > JVM 의 관계를 갖는다. 

JVM는 각 환경(ex. 윈도우, 맥, 리눅스 등)에 파견되어 번역해주는 역할을한다.

 

JRE는 자바 실행 환경 (Java Runtime Environment)의 약자이다.

자바를 실행할 환경에는 JRE이 설치되어야 실행이 가능하다. JRE은 JVM을 포함하며, 추가로 표준 라이브러리들을 포함하고있다. 

 

JDK는 자바 개발 키트 (Java Development Kit) 의 약자이다.

개발자가 자바로 프로그래밍하는 전 과정을 도와주는 자바 코드 제작 키트이다. JRE를 포함하며 따라서 JVM도 포함된다. 추가로 컴파일러(소스 코드를 JVM이 이해할 수 있도록 만들어줌), 디버거(버그의 근본 원인을 찾고 해결하도록 도움), jar 도구( 코드를 실행용으로 압축해줌) 등이 포함된다. 

 

4. 그럼 어디서 관리할까? 

현재는 자바는 오라클에서 개발하고 관리한다. JDK는 현재 20버전까지 출시되었고, LTS 버전이 따로 있는데 장기 지원 버전으로 안정성을 보장하는 버전이다. 회사에서는 LTS 버전을 주로 사용한다. 

오라클에서는 유로로는 Oracle JDK, 무료로는 Open JDK를 지원한다. 

자바는 오라클에서 관리하지만 JDK는  아마존, Ibm, 이클립스 등에서도 개발하고 사용되고 있다. 

 

 

참고 ) https://www.youtube.com/watch?v=OxvtGYvVkRU

 

 

 

 

'Backend Study > Java' 카테고리의 다른 글

[Java] Collection이란?  (0) 2023.08.19
[Spring boot] 스프링부트의 어노테이션들  (0) 2023.08.07
[JAVA] 오토 박싱 & 오토 언박싱  (0) 2023.02.14
[JAVA] 람다와 스트림  (0) 2023.02.13
[JAVA] 힙 메모리 사용률  (0) 2023.02.09