자바 프로그램 실행 과정

2024. 11. 27. 17:08Java/Java

출처: https://www.happykoo.net/@happykoo/posts/242

 

  1. Test.java (자바 소스 코드)
    • 사람이 이해할 수 있는 형태의 코드
    • 자바로 작성된 원시 코드
  2. javac.exe (자바 컴파일러)
    • 자바 컴파일러는 .java 파일을 받아들여 바이트 코드인 .class 파일로 변환합니다.
    • 이때, 자바는 소스 코드 바이트 코드로 변환하여 플랫폼에 독립적인 형태로 만듭니다.
    • 컴파일 단계에서는 소스 코드를 바이트 코드로 변환하는 작업만 이루어집니다.
    • 이때, 에러가 있으면 컴파일러가 오류 메시지를 출력합니다.
  3. Test.class (자바 바이트 코드)
    • .class 파일은 자바 바이트 코드가 저장된 파일입니다.
    • 자바 바이트 코드는 JVM(Java Virtual Machine)에서 실행될 수 있도록 변환된 코드입니다.
    • 이 바이트 코드는 운영 체제나 하드웨어에 의존하지 않기 때문에 "플랫폼 독립적"이라고 불립니다.
  4. JVM (자바 가상 머신)
    • JVM은 자바 바이트 코드를 해석하여 실행하는 역할을 합니다.
    • JVM은 자바 프로그램을 실행하기 위한 가상 머신으로, 각 운영 체제에 맞는 JVM이 존재합니다.
    • JVM은 바이트 코드를 읽고, 이를 네이티브 머신 코드(바이너리 코드)로 변환하여 운영 체제에 전달합니다.
    • 또한, JVM은 가비지 컬렉션, 스택 관리, 예외 처리 등 여러 기능을 제공하여 자바 프로그램이 원활하게 동작할 수 있도록 합니다.
  5. OS (운영 체제)
    • 운영 체제는 바이트 코드가 변환된 네이티브 코드(운영 체제가 이해할 수 있는 바이너리 코드)를 처리합니다. JVM이 네이티브 코드로 변환한 후 OS에 전달되어 하드웨어 자원을 관리하고, 필요한 입출력을 처리합니다.
  6. HW (하드웨어)
    • 마지막으로, 하드웨어는 실제 계산과 처리 작업을 담당합니다. 운영 체제와 하드웨어 사이의 인터페이스 역할을 하여, 프로그램이 원활하게 실행되도록 지원합니다.

 

추가 설명

  • JVM의 역할: JVM은 단순히 바이트 코드를 실행하는 것 외에도, 자바 프로그램이 실행되는 동안 메모리 관리, 예외 처리, 쓰레드 관리 등의 중요한 작업을 담당합니다.
  • JIT(Just-In-Time) 컴파일러: JVM 내부에는 JIT 컴파일러가 있어서 바이트 코드를 실행할 때 성능을 최적화하기 위해 자주 사용하는 코드가 네이티브 코드로 컴파일되어 실행됩니다.