Study · JDK · STEP 1 / 8 · 컴파일할 때

Java는 번역을 두 번으로 나누고, OS 차이는 JDK가 떠안는다

장면

같은 프로그램을 Windows · Linux · macOS에서 돌리고 싶다. C로 짜면 무엇을 해야 하고, Java는 무엇이 다를까?

아래 재생기의 ▶를 누르면 한 스텝씩 진행된다. 금색 테두리가 지금 이야기하는 곳이고, 캡션이 무슨 일이 일어났는지 말해 준다. 굵게 밑줄 친 말은 누르면 뜻이 나온다. 빨간 딱지는 그때 벌어지는 일의 이름이고, 캡션 바로 위 회색 글자는 지금 스텝이 속한 묶음의 이름이다.

카드 아래 회색 줄은 그 일이 실제로 적혀 있는 소스의 파일 이름 : 줄 번호와 함수 이름이다. 글 안에 (:669)처럼 줄 번호만 적힌 것은 바로 앞에 적은 파일의 그 줄이라는 뜻이다. 캡션 한가운데 박힌 긴 영어 이름과 괄호 속 파일 · 줄 번호도 같다 — 건너뛰고 한글만 읽어도 뜻이 통하게 써 두었다.

장면 · JDK는 왜 있나 0 / 8

같은 프로그램을 Windows · Linux · macOS에서 돌리고 싶다. ▶를 누르면 C일 때와 Java일 때 무엇이 다른지 한 단계씩 본다.

키보드 · ← → 한 스텝 · Space 재생/멈춤 · Home 처음

내 .class가 한 벌일 수 있는 건 JDK가 OS · CPU마다 따로 만들어지기 때문이다. OS 차이는 사라진 게 아니라 JDK 안으로 옮겨 갔다.

어떻게 확인했나

소스 어디를 보고 적었는지와 무엇을 돌려서 쟀는지를 남긴 자리다. 처음 읽을 때는 건너뛰어도 된다.

  • JVM의 역할은 JVM 명세 §1.2의 문장을 그대로 옮겼다.
  • 파일 수는 저장소의 JDK 27 소스(src/hotspot, src/java.base)를 직접 셌다.