자바의 정석 강의를 듣다가 위 키워드들에 대한 좀 더 자세한 보충설명이 필요할 것 같아 따로 이 글을 작성했습니다.
검색해보니 워낙 잘 정리해둔 글이 많아서 출처를 남기고 정리해보았습니다.
먼저 큰틀을 살펴보면 JDK > JRE > JVM 순으로 종속되는 관계를 갖는 개념이라고 볼 수 있습니다.
흔히 자바를 받아서 설치했다고 하면 가장 큰 단위인 JDK를 다운로드 받은 것을 의미합니다.
JVM 즉, 자바 가상 머신은 자바를 실행하기 위한 가상 환경이라고 볼 수 있습니다.
자바가 어떤 OS(window, linux, mac)위에서도 돌아갈 수 있는 이유가 바로이 JVM덕분입니다.
자바라는 언어 자체는 컴퓨터가 읽을 수 없어 자바의 컴파일러가 java파일을 class파일로 변경해주면 자바코드는 byte코드로 변경됩니다.
그러나 byte코드도 기계어가 아니고 또 os별로 기계어를 읽는 방식이 틀리기 때문에 컴퓨터가 읽게 하려면 또 한번
컴파일 과정을 거쳐야하는데 그때 JIT(Just In Time)컴파일러가 사용이 되고 이 JIT컴파일러는 JVM안에 내장되어 있습니다.
JRE는 JVM과 자바 라이브러리API를 함께 묶어서 배포되는 패키지 입니다.
그러나 JRE에서 의미하는 라이브러리는 개발할 때 사용할 수 있는 라이브러리가 아닌 이미 작성된 자바코드를 읽을때 사용되는 라이브러리라는 점을 유의해야합니다.
자바 프로그램이 돌아가기 위한 최소단위의 패키지입니다.
마지막으로 JDK는 JRE와 실질적인 자바 개발에 필요한 툴을 합쳐놓은 키트입니다.
JDK에 javac.exe라는 프로그램이 내장되어서 .class파일로 컴파일할 수 있습니다.
그래서 자바개발을 하려면 반드시 JDK가 필요합니다.
사실 JVM에서 좀 더 깊게 저수준의 단계를 정리해야 완벽하겠지만 시간이 너무 오래걸릴것 같고 제가 적는것보다 훨씬 더 잘 정리해 놓은 블로그가 있어서 아래 링크를 첨부해 놓겠습니다. ㅠㅜ
아래는 기타 참고 블로그들입니다.
https://ncucu.me/139
https://yonechu.github.io/java/2021/06/18/Java-JDK_JRE%EB%93%B1.html