JAVA

JAVA 실행구조 이해하기

winhwi 2024. 11. 15. 16:46

컴퓨터와 코드 실행 방식: 컴파일과 인터프리터

컴퓨터는 0과 1로 구성된 기계어만 이해할 수 있습니다. 그렇기 때문에 사람이 작성한 프로그래밍 코드를 컴퓨터가 이해할 수 있도록 컴파일하거나 인터프리트하는 과정이 필요합니다.

 

 

컴파일 방식

컴파일(Compile)이란, 프로그래밍 언어로 작성된 코드를 미리 기계어로 번역하는 과정입니다. 실행 전 번역 작업을 통해 컴퓨터가 바로 이해할 수 있는 형태로 변환해두며, 이로 인해 실행 속도가 빠르고 번역 과정에서 많은 오류를 걸러낼 수 있습니다.

C 계열 언어들과 자바가 여기에 속하지만, 자바는 다른 C 계열 언어와 다르게 JVM(Java Virtual Machine)을 사용하여 운영체제에 독립적인 방식으로 실행됩니다. 자바 코드가 바이트코드로 변환된 후 JVM에서 실행되므로, Windows, macOS, Linux 등 운영체제에 관계없이 동일한 코드로 실행될 수 있습니다. Kotlin, Scala 등도 자바 바이트코드를 사용하는 언어입니다.

 

 

인터프리터 방식

인터프리터(Interpreter) 방식은 코드가 실행될 때마다 실시간으로 번역을 수행하는 방식입니다. 코드를 작성 후 그대로 두었다가 실행 시점에서 인터프리터가 코드 한 줄 한 줄을 읽어 즉시 실행합니다. 이 방식은 빠른 수정과 테스트가 가능하지만, 컴파일 방식에 비해 실행 속도는 느릴 수 있습니다. 파이썬, JavaScript 등이 인터프리터 언어의 예입니다.

 

 

JDK와 JRE, JVM의 역할

  • JDK (Java Development Kit): 자바 프로그램을 개발하는 데 필요한 모든 도구를 포함하는 자바 개발 키트입니다. 컴파일러, 디버거, 프로파일러 등이 포함되어 있어 자바 코드를 작성하고 디버깅할 수 있게 도와줍니다.
  • JRE (Java Runtime Environment): 자바로 작성된 프로그램을 실행하는 환경을 제공하며, JVM과 표준 라이브러리가 포함되어 있습니다. JRE가 설치되어 있어야 자바 애플리케이션을 실행할 수 있습니다.
  • JVM (Java Virtual Machine): 운영체제와 관계없이 자바 바이트코드를 실행할 수 있도록 돕는 가상 환경입니다. JVM이 바이트코드를 운영체제에서 사용할 수 있는 기계어로 변환하여, 자바가 다양한 운영체제에서 실행될 수 있게 합니다.

 

 

 

 

Java 컴파일 과정의 특징

 

  1. 컴파일 단계
    • .java 파일을 컴파일러(javac)가 바이트코드(.class)로 변환
    • 문법 검사, 타입 체크 등 수행
    • 최적화 작업 진행

  1. 실행 단계
    • JVM이 .class 파일을 로드
    • 바이트코드 검증기(Bytecode Verifier)가 코드 검증
    • JIT(Just-In-Time) 컴파일러가 필요한 부분을 기계어로 변환
    • 실행 엔진이 바이트코드 실행

 

Java의 컴파일 및 실행 방식의 장단점

 

장점

  • 플랫폼 독립성 ("Write Once, Run Anywhere")

  • 강력한 타입 체크와 보안

  • JIT 컴파일러를 통한 성능 최적화

  • 자동 메모리 관리 (GC)

 

단점

  • 네이티브 코드보다 상대적으로 느린 실행 속도

  • JVM이 필요하므로 추가적인 메모리 사용

  • 초기 구동 시간이 필요