Java virtual machine 을 줄인 말로 '자바를 실행하기 위한 가상 기계' 라고 할 수 있다. 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.
Java 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경없이 실행이 가능한 것이다.
단, JVM은 OS에 종송적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.

Class Loader
JVM내로 클래스파일을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 Runtime시에 동적으로 클래스를 로드한다. jar파일 내 저장된 클래스들을 JVM위에 탑재하고 사용하지 않는 클래스들은 메모리에서 삭제한다. 클래스를 처음으로 참조할 때, 해달 클래스를 로드하고 링크한다.
Execution Engine
클래스를 실행시키는 역할이다. 클래스 로더가 JVM내의 런타임 데이터 영역에 바이트 코드를 배치시키고, 이것은 실행엔진에 의해 실행된다. 자바 바이트코드는 기계가 바로 수행할 수 있는 언어보다는 비교적 인간이 보기 편한 형태로 기술된 것이다. 그래서 실행엔진은 이와 같은 바이트코드를 실제로 JVM내부에서 기계가 실행할 수 있는 형태로 변경한다.
Garbage collector
GC를 수행하는 모듈이 있다.
Runtime Data Area
프로그램을 수행하기 위해 OS에서 할당받은 메모리 공간