Skip to content

1. 자바 프로그램(Java Program)


1. 키워드

  • 자바 컴파일러(Java Compiler)
  • 자바 바이트 코드(Java Bytecode)
  • 자바 가상 머신(Java Virtual Machine)
  • 자바 인터프리터(Java Interpreter)
  • 클래스 로더(Class Loader)
  • JIT 컴파일러(Just-In-Time Compiler)
  • 가비지 컬렉터(Garbage Collector)


2. 자바 프로그램의 실행 과정

001


1) 자바 컴파일러(Java Compiler)

  • 자바 컴파일러는 자바를 가지고 작성한 자바 소스 코드를 JVM이 이해할 수 있는 자바 바이트 코드로 변환한다.


2) 자바 바이트 코드(Java Bytecode)

  • 자바 바이트 코드란 JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다.
  • 자바 바이트 코드의 확장자는 .class이며, JVM만 설치되어 있으면 어떤 OS에서도 실행될 수 있다.


3) 자바 가상 머신(Java Virtual Machine)

  • JVM이란 자바 바이트 코드를 실행시키기 위한 가상의 기계를 의미한다.
  • 각 OS별 JVM만 설치되어 있다면 OS에 구애받지 않고 자바 프로그램을 실행시킬 수 있다는 장점이 있다.
  • 하지만 일반적인 프로그램보다 JVM이라는 단계를 한 번 더 거쳐야 하므로, 상대적으로 실행 속도가 느리다는 단점이 있다.


4) JVM의 구성

  • JVM의 구성은 다음과 같다.


1] 자바 인터프리터(Java Interpreter)

  • 자바 인터프리터는 자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할을 한다.

2] 클래스 로더(Class Loader)

  • 자바는 동적으로 클래스를 읽어온다.
  • 그렇기 때문에 프로그램이 실행 중인 런타임에서야 모든 코드가 JVM과 연결된다.
  • 이렇게 동적으로 클래스를 로딩해 주는 역할을 하는 것이 클래스 로더이다.

3] JIT 컴파일러(Just-In-Time Compiler)

  • JIT 컴파일러란 프로그램이 실행 중인 런타임에 실제 기계어로 변환해 주는 컴파일러를 의미한다.
  • 동적 번역(Dynamic Translation)이라고도 불리며, 프로그램의 실행 속도를 향상시키기 위해 개발되었다.
  • 즉, JIT 컴파일러는 자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 바로 기계어로 변환하는 데 사용한다.

4] 가비지 컬렉터(Garbage Collector)

  • 가비지 컬렉터는 개발자가 따로 메모리를 관리하지 않을 수 있도록 더는 사용하지 않는 메모리를 자동으로 회수하는 것이다.

References