실행 과정

- Java 언어로 소드코드를 작성한다. (
Test.java) - 자바 컴파일러가 해당 Java파일을 컴파일 하여 바이트 코드로 만든다. (
Test.class) - 컴파일된 class 파일은 JVM의 클래스 로더에게 전달됩니다.
- 클래스 로더는 동적 로딩을 통해 필요한 클래스를 JVM의 메모리에 올린다.
- 실행 엔진은 JVM 메모리에 올라온 코드를 interpreter와 JIT Compiler로 해석한다.
코드로 확인하기
Test.java
.java 파일을 컴파일한다.
// Test.java
public class Test {
public static void main(String[] args) {
System.out.println("테스트");
}
}javac Test.java인텔리제이에서는 바이트 코드를 다시 디컴파일한 코드를 볼 수 있다.

인텔리제이에서는 상단 패널의 view → Show Bytecode를 통해 모습을 확인할 수 있다.

바이트 코드에서 아래와 같은 라인을 확인할 수 있다.
해당 코드는 Object 클래스의 생성자를 호출해서 객체 인스턴스를 초기화하는 명령어이다.
INVOKESPECIAL java/lang/Object.<init> ()V
Test.class
.class 파일을 실행한다.
java TestINFO
IDE에서 자바 코드를 실행하면
.class파일이 같은 폴더에 생성되는 것이 아닌 특정 경로로 저장되어 소스코드와 컴파일된 결과물을 엄격하게 분리하여 관리한다.
- 일반적인 인텔리제이 프로젝트 (IntelliJ IDEA):
out/production/프로젝트명/패키지경로/- Gradle 프로젝트:
build/classes/java/main/패키지경로/- Maven 프로젝트:
target/classes/패키지경로/
출처 및 참고자료
https://steady-snail.tistory.com/67#%EC%8B%A4%ED%96%89_%EC%97%94%EC%A7%84(Execution_Engine)
https://icea.tistory.com/50