- 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다.
- 바이트 코드를 실행하는 표준(JVM 자체는 표준)이자 구현체(특정 밴더가 구현한 JVM)다.
- JVM 밴더 : 오라클, 아마존, Azul...
- 특정 플랫폼에 종속적 (네이티브 코드를 OS에 맞춰서 실행해야 하기 때문에)
위와 같이 HelloJava라는 Java 파일을 만들고
javac HelloJava.java
로 Java를 Compile하면 위의 사진과 같이 class 파일이 생성된다.
그리고 class 파일 안에 있는 파일을 보면 위와 같이 바이트 코드로 구성되어 있다.
이 바이트 코드를 실행하는 것이 인터프리터와 JIT 컴파일러를 사용해 Native OS에 맞춰서 Machine 코드로 변경된다음 실행된다.(ex 10111011....)
JVM은 JVM 혼자 제공되지 않고 최소한의 배포 단위인 JRE로 구성되어있다.
- 자바 애플리케이션을 실행할 수 있도록 구성된 배포판
- JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다.(JVM + 라이브러리)
- 개발 관련 도구는 포함하지 않는다. (JDK에서 제공)
- JRE + 개발에 필요한 툴
- 소스 코드를 작성할 때 사용하는 자바 언어는 플랫폼에 독립적
- 오라클은 자바 11부터는 JDK만 제공하며 JRE는 따로 제공하지 않는다.
- 프로그래밍 언어
- JDK에 들어있는 자바 컴파일러(javac)를 사용하여 바이트코드(.class 파일)로 컴파일 할 수 있다.
- JVM 기반으로 동작하는 프로그래밍 언어
- 클로저, 그루비, 코틀린, JRuby, Jython, Scala