Lang/JAVA

JVM·JRE·JDK 개념 정리

quantumee 2024. 7. 9. 00:23

 

현업에서 Java 프로젝트 세팅을 하면서 간간히 JVM,JRE를 볼때가 있다.

 

여기 저기 찾아가면서 세팅은 했지만 정확한 개념을 모르니 왜 이렇게 세팅을 해야하는 지 불분명해서 찾아봤다.

 

 


 


JVM

( Java Virtual Machine )

 

JVM을 비유하자면 프로그램이라 할 수 있다.

 

Java는 컴파일 언어이다.

그리고 이 컴파일은 

Java 코드를 바이너리의 기계어로 바꾸는 작업을 말하고 그 작업을 하는 대상이 컴파일러이다.

 

이 컴파일되어 바이너리 기계어로 바뀐 자바 코드를 OS등의 컴퓨터의 환경에 맞게 언어가 작동하도록 하는

프로그램인 것이다.

 

즉, 바이트 프로그램을 돌리기 위한 프로그램이다.

 


 


JRE

( Java Runtime Environment )

 

JRE는 말 그대로 자바 런타임 환경이다

 

Java 개발자가 아닌 사용자가 Java 프로그램을 실행할 때 필요한 환경을 제공한다.

 

JRE에는 JVM을 포함하고 있다.

 

 



JDK

( Java Development Kit')

 

JDK는 말 그대로 자바 개발 도구이다

 

JDK는 개발자가 자바란 언어를 가지고 개발을 할 수 있도록 여러 기능을 제공한다.

 

더보기

*JDK 기능 예시 :

 

javac - Java 컴파일러

java - Java 인터프리터/Launcher

jdb - Java 디버거

jar - Java 아카이브 도구

javadoc - Java 문서 생성기

javap - Java 클래스 파일 디스어셈블러

jconsole - Java 콘솔

...

 

 

JDK는 JRE를 포함하고 있다.

 

 


 


JVM, JRE, JDK는 뚜렷한 구분이 없어지고 점점 모호해지고 있다.

최근에는 JVM이나 JRE를 개별로 설치하는 경우는 거의 없고 JDK 하나를 설치하는 것으로 끝내게된다.

 

JDK를 제공하는 곳은 유·무료를 포함해서 다양한데

일반적으로 많이 사용하는 것은 Oracle의 JDK인 것 같다.

 

대부분의 JDK는 성능과 기능이 비슷해서 무엇을 사용하던지 큰 차이가 없다.

( **아마존의 JDK는 AWS의 환경에 최적화 되어있다곤 한다.)