Java 컴파일 과정

김석·2023년 6월 4일
0

Java

목록 보기
2/2

1. Java 컴파일 순서

  1. 개발자가 자바 소스 코드(*.java)를 작성함.
  2. 자바 컴파일러가 자바 소스 코드를 읽어 바이트 코드(*.class)로 컴파일함. 바이트 코드 파일은 아직 컴퓨터가 읽을 수 없지만, JVM이 읽을 수 있는 코드임.
  3. 컴파일된 바이트 코드를 JVM의 클래스 로더에게 전달함.
  4. 클래스 로더는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역, 즉 JVM의 메모리에 올림.
  5. 실행 엔진은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행함. 이 때 실행 엔진은 두 가지 방식으로 변경함.
    • 인터프리터: 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행함. 하나하나의 실행은 빠르지만, 전체적인 실행 속도는 느림.
    • JIT(Just-In-Time) 컴파일러: 인터프리터의 단점을 보완하기 위해 도입된 방식. 바이트 코드 전체를 컴파일하여 바이너리 코드로 변경하고, 이후에는 해당 메서드를 더 이상 인터프리팅 하지 않고, 바이너리 코드로 직접 실행하는 방식. 하나씩 인터프리팅하여 실행하는 것이 아니라 바이트 코드 전체가 컴파일된 바이너리 코드를 실행하는 것이기 때문에, 전체적인 실행 속도는 인터프리팅 방식보다 빠름.

2. JVM의 역할

  • 바이트 코드로 변환된 코드를 클래스 로더가 JVM의 메모리에 올리면, JVM의 실행 엔진인 인터프리터나 JIT 컴파일러가 해석하고 실행함.
  • JVM은 다른 java 프로그램을 실행시키는 것이 목적임.
  • java 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 함.
  • 프로그램 메모리를 관리하고 최적화함.

출처

https://yang-droid.tistory.com/48

profile
handsome

0개의 댓글