JVM은 크게 5가지 구성 요소로 되어 있습니다. 클래스 로딩을 위한 클래스 로더 시스템, 런타임 데이터 영역, 실행 엔진 그리고 C나 C++로 작성된 부분을 처리하기 위한 네이티브 메서드 라이브러리와 인터페이스가 그것입니다.
우리가 xxx.java 형식으로 소스코드를 작성하고 자바 컴파일러를 통해 컴파일을 하면, xxx.class 형식의 클래스 파일을 결과물로 얻습니다.
java 명령어와 함께 해당 클래스 파일의 이름을 넘겨주면 JVM은 클래스패스에서 해당 클래스 파일을 찾아 런타임 데이터 영역의 메서드 영역에 적재합니다.
그리고 클래스파일 안에 있는 바이트코드를 실행하는데요, 해당 작업은 실행 엔진의 인터프리터가 수행합니다.
인터프리터가 바이트코드를 기계어로 번역하고 명령을 실행함으로써 자바 프로그램이 동작합니다.