자바 가상 머신은 어렵게 쓰여있지만 일종의 프로그램이다. 그렇다면 무엇을 하는 프로그램일까요?
0,1로 작성된 기계어라고 해서 모든 컴퓨터에서 똑같이 동작하는 것이 아님! 윈도우에서 돌게 컴파일한 기계어는 맥이나 리눅스에서는 돌지 않음
->따라서 일일히 환경에 따라 맞는 기계어로 번역해야하는 문제가 발생
바로 이런 문제를 해결하기 위한 것이 JVM
Hello.java(소스 코드) -- javac --> Hello.class (바이트 코드) -- jvm --> 기계어
컴파일러: 우리가 작성한 프로그래밍 언어를 컴퓨터가 알아들을 수 있는 기계어로 바꿔주는 작업을 한다! C, 자바 같은 언어가 컴퍼일 언어임
cf) 파이썬은 인터프리터 언어
JIT 컴파일 방식: 실행 시점에 그때그때 기계어로 통번역 해주는 방식
W-O-R-A: 자바의 원칙! 한번 작성하면 모든 곳에서 실행한다! (Write Once Run Anywhere)
Java 애플리케이션을 생성하고 실행하기 위한 일련의 구성 요소입니다. JRE는 Java 개발 키트(Java Development Kit, JDK)의 일부입니다
JDK가 JRE를 포함함. 추가로 javac, jdb, jar 등 프로그래머를 위한 기능도 탑재함!
대표적으로 오라클 JDK, Zulu 등 다양한 JDK 존재함
출처
https://www.redhat.com/ko/topics/cloud-native-apps/what-is-a-Java-runtime-environment