JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다.
Java와 OS(운영체제) 사이에서 중개자 역할을 수행하여 Java가 OS(운영체제)에 구애받지 않고 독립적으로 작동이 가능하다.
즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터

*.java )는 CPU가 인식하지 못하기 때문에 기계어로 컴파일을 해줘야 한다.-> 하지만, Java는 JVM 이라는 가상머신을 거쳐서 OS에 도달하므로 OS가 인식할 수 있는 기계어로 바로 컴파일 되는게 아니라 JVM이 인식할 수 있는 Java bytecode (*.class)로 변환된다.
*.java->Java Compiler (변환)->*.class (Java bytecode)
변환된 bytecode는 기계어가 아니므로 OS에서 바로 실행되지 않는다 !
-> 이때, JVM이 OS가 bytecode를 이해할 수 있도록 해석해준다.
JVM이 이해할 수 있는 언어로 변환된 자바 소스코드