출처 : https://www.geeksforgeeks.org/jvm-works-jvm-architecture/
JVM(Java Virtual Machine) acts as a run-time engine to run Java applications. JVM is the one that actually calls the main method present in a java code. JVM is a part of JRE(Java Runtime Environment).
Java applications are called WORA (Write Once Run Anywhere). This means a programmer can develop Java code on one system and can expect it to run on any other Java-enabled system without any adjustment. This is all possible because of JVM.
When we compile a .java file, .class files(contains byte-code) with the same class names present in .java file are generated by the Java compiler. This .class file goes into various steps when we run it. These steps together describe the whole JVM.
JVM은 자바로 만들어진 애플리케이션을 구동 할 때 run-time engine처럼 동작한다. JVM은 자바 코드 내에 있는 main 메서드를 호출한다. JVM은 자바 런타임 환경의 한 부분이다.
자바 애플리케이션은 WORA(한번 쓰면 어디서든 동작한다)라고 부란다. 이것의 의미는 프로그래머가 어떤 한 시스템 상에서 자바 코드를 작성하면 자바가 가능한 시스템(즉, JRE가 준비된 시스템)이라면 어디에서든지 동작 가능하다. 이것은 JVM 덕분이다.
우리가 .java 파일을 컴파일 하면, .java 파일 안에 있는 클래스 이름과 똑같은 .class 파일이 자바 컴파일러에 의해 만들어진다. .class파일은 동작하기 위해 여러 단계를 거친다. 이 단계들이 JVM이 어떻게 구동 되는 지를 설명해준다.

Class Loader Subsystem
It is mainly responsible for three activities.
Loading: The Class loader reads the “.class” file, generate the corresponding binary data and save it in the method area. For each “.class” file, JVM stores the following information in the method area.