JVM이란 Java Virtual Machine의 줄임말로 자바를 실행하기 위한 가상 머신이라고 할 수 있다. Java는 OS에 종속적이지 않다는 특징을 가지고 있는데 그 이유는 JVM이 OS 위에 있는 구조 이기 때문이다.
Java 컴파일러는 .java 파일을 .class라는 Java 바이트 코드로 변환시켜준다. OS는 기계어가 아닌 Java 바이트 코드는 해석할 수 없으므로 Java 바이트 코드를 JVM이 기계어로 변환 시켜주는 구조이다.
바이트 코드는 가상 머신에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 위 Java 바이트 코드는 JVM이 이해할 수 있는 언어로 변환된 자바 소스코드이다. JVM에서 Java 바이트 코드를 JIT 컴파일러에 의해
기계어로 변환이 된다.
JIT 컴파일 또는 동적번역이라고 하는데 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일러이다. 인터프리터 방식의 단점을 보완하기 위해 도입되었다.
인터프리터 방식으로 실행하다가 적절한 시점에 바이트 코드 전체를 컴파일하여 기계어로 변경하고, 이후에는 해당 더 이상 인터프리팅 하지 않고 기계어로 직접 실행하는 방식이다.
Java 를 사용하기 위해 필요한 모든 기능을 갖춘 Java용 SDK(Software Development Kit)이다.
JDK는 JRE를 포함하고 있다. JRE에 있는 모든 것 뿐만 아니라 컴파일러(javac)와 jdb, javadoc 과 같은 도구도 있다. 즉, JDK는 프로그램을 생성, 실행, 컴파일할 수 있다.
JVM + 자바 클래스 라이브러리(Java Class Library) 등으로 구성되어 있다.
컴파일 된 Java 프로그램을 실행하는데 필요한 패키지이다.
참고 문서 및 링크