Java Virtual Machine, 자바 바이트코드를 실행할 수 있는 주체
*자바 바이트코드 = Java Source File을 자바컴파일러가 컴파일 시 생성
ref. https://medium.com/@neil.wilston123/why-java-is-platform-independent-1d82c2249a69
같은 자바 프로그램은 어느 플랫폼에서 생성되든 같은 바이트코드를 갖는다. 따라서, 어느 플랫폼에서 생성되었는지와 무관하게 어느 플랫폼의 JVM에서든 동일하게 동작한다.(모든 자바 프로그램은 CPU나 운영체제의 종류와 무관하게 동작을 보장)
따라서 자바는 플랫폼에 독립적이라는 특징을 갖는다!
① 프로그램이 실행되면 JVM은 OS로부터 필요한 메모리를 할당받음
② javac가 자바 소스코드(.java)를 자바 바이트코드(.class)로 변환
③ Class Loader를 통해 class 파일들을 JVM으로 로딩(@Method area)
④ 로딩된 class 파일들을 Excution Engine을 통해 해석(기계어 생성)
⑤ 해석된 바이트코드(기계어)를 Runtime Data Area에 배치해 실질적인 수행이 이루어짐
과정 중 코드의 변환과정만 보면 다음과 같다