Home Java가 컴파일되는 과정
Post
Cancel

Java가 컴파일되는 과정

Java 컴파일 순서

자바 프로그램의 실행 과정은 주로 소스 코드 작성, 컴파일, 로드, 실행의 네 가지 주요 단계로 나눌 수 있다.

0. 개발자가 자바 소스코드(.java)를 작성한다.

1. 컴파일 단계

작성된 자바 소스 코드는 자바 컴파일러를 사용하여 바이트 코드(.class)로 컴파일되며 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드이다.

2. 로드 및 검증

컴파일된 바이트코드는 클래스 로더를 통해 메모리로 로드되고, 로딩된 클래스는 JVM에 의해 안정성 검증을 거친다. 이는 자바의 안정성과 보안을 유지하기위한 중요한 단계이다.

클래스 로더 세부 동작

  1. 로드 : 클래스 파일을 가져와서 JVM의 메모리에 로드한다.
  2. 검증 : 자바 언어 명세(Java language Specification) 및 JVM 명세에 명시된 대로 구성되어 있는지 검사한다.
  3. 준비 : 클래스가 필요로 하는 메모리를 할당한다. (필드, 메서드, 인터페이스 등등)
  4. 분석 : 클래스의 상수 풀 내 모든 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변경한다.
  5. 초기화 : 클래스 변수들을 적절한 값으로 초기화 한다.(static 필드)

3. 실행 엔진

로딩된 클래스는 JVM 내에서 실행 엔진을 통해 실행된다. 이 과정에서 바이트코드는 해석되거나, JIT 컴파일러를 통해 해당 플랫폼에 최적화된 기계어로 변환된다.

4. 최종 실행

해석된 또는 JIT 컴파일된 결과물은 JVM 내에서 실행되며, 이를 통해 자바 프로그램은 어떤 플랫폼에서도 실행 가능한 특성을 가지게된다.




핵심 키워드 : 바이트 코드, class 파일, 기계어, 자연어


나의 답변
자바 프로그램의 실행 과정은 소스 코드 작성, 컴파일, 로드, 실행의 네 가지 주요 단계로 나눌 수 있습니다. 우리가 자바 언어로 작성한 코드를 자바 컴파일러를 통해 바이트코드로 변환합니다. 이 바이트코드는 운영체제와 하드웨어에 독립적이며, 이후 자바 가상 머신(JVM)에서 실행됩니다. JVM은 이 바이트코드를 해당 플랫폼에 맞게 해석하거나, 필요하면 JIT(Just-In-Time) 컴파일을 통해 기계어로 변환하여 실행합니다. 이렇게 하면 자바 프로그램은 어떤 환경에서도 동일한 실행 결과를 얻을 수 있게 되어 플랫폼 독립성을 제공합니다.

모범 답안
우선 자바 클래스 파일이 자바 컴파일러에 의해 바이트코드로 컴파일되고, 클래스 로더에 의해 로딩된 필요한 클래스들과 함께 JVM의 런타임 환경으로 이동됩니다. JVM 안에서는 Execution Engine이 바이트코드들을 한 줄씩 불러와 실행하게 됩니다. 이 때 내부적으로 특정 메서드가 자주 수행되는지 체크하고 일정 정도를 넘으면 바이트코드전체를 컴파일하고 실행하는 JIT 컴파일러 방식을 적용합니다.