Study · JDK · STEP 4 / 8 · 실행할 때
java는 JVM이 아니다 — 작은 런처가 JVM을 세우고 main을 부탁한다
장면
터미널에 java Hello를 쳤다. Hello.main의 첫 줄이 돌기까지 JDK 안에서는 누가 어떤 순서로 일할까?
아래 재생기의 ▶를 누르면 한 스텝씩 진행된다. 금색 테두리가 방금 바뀐 곳이고, 캡션이 무슨 일이 일어났는지 말해 준다. 굵게 밑줄 친 말은 누르면 뜻이 나온다.
장면 · java Hello를 친 순간
0 / 19
터미널에 java Hello를 쳤다. ▶를 누르면 런처 · JVM · JDK의 Java 코드 · 내 코드 네 칸 사이를 19스텝으로 따라간다.
키보드 · ← → 한 스텝 · Space 재생/멈춤 · Home 처음
내 Hello는 19스텝 중 스텝 13에서야 등장한다. 그 전에 JVM은 객체가 들어갈 힙, 바이트코드를 실행할 인터프리터, String · System.out 같은 기본 객체, 모듈, 클래스 로더를 먼저 세운다.
어떻게 확인했나
- 19스텝의 줄 번호는 저장소의 JDK 27 소스를 grep · sed로 한 줄씩 확인했다.
- 흔히 쓰는 public static void main(String[] args) 모양만 따라갔다. 최근 JDK는 static이 아니거나 인자가 없는 main도 받아서, 런처 안에 그 갈래가 따로 있다.