상세 컨텐츠

본문 제목

[자바 CS지식] 자바 컴파일 동작 과정

JAVA

by 소란한소란 2024. 2. 10. 20:57

본문

728x90

Java 컴파일 프로세스: 자바 코드를 실행 가능한 바이트코드로 변환하기

자바는 플랫폼 독립적인 프로그래밍 언어로, 개발자가 작성한 코드를 Java Virtual Machine (JVM)에서 실행할 수 있는 바이트코드로 변환하는 과정을 거칩니다. 이번 글에서는 자바 컴파일 프로세스에 대해 간략하게 살펴보겠습니다.

 

Java 파일 -> 컴파일러 (바이트코드 변환) -> class 파일 -> 클래스 로더 -> JVM 메모리에 로드 -> 실행엔진

 

JVM 메모리 구조

1. 자바 소스 코드 작성

먼저, 개발자는 Eclipse, IntelliJ IDEA, 또는 Visual Studio Code와 같은 통합 개발 환경(IDE)이나 일반 텍스트 편집기를 사용하여 자바 프로그램을 작성합니다.

2. 소스 코드 저장

작성한 자바 소스 코드는 .java 확장자로 저장됩니다. 예를 들어, 프로그램 이름이 MyProgram이라면 MyProgram.java로 저장합니다.

3. 컴파일

자바 컴파일러(javac)를 사용하여 자바 소스 코드를 바이트코드로 컴파일합니다. 컴파일러는 코드의 문법 및 의미를 확인하고 바이트코드 파일을 생성합니다. 이 단계는 일반적으로 명령 줄에서 수행됩니다.

javac MyProgram.java

 

문법 오류가 없다면, 컴파일러는 하나 이상의 .class 파일을 생성합니다. 각 파일은 프로그램 내의 하나의 클래스에 해당합니다.

4. 바이트코드

생성된 바이트코드는 JVM에서 실행 가능한 명령어 집합입니다. 이는 플랫폼에 독립적이며, 호환되는 JVM이 설치된 모든 장치에서 실행될 수 있습니다.

5. 바이트코드 검증

바이트코드가 실행되기 전에 JVM은 바이트코드 검증을 수행하여 특정 보안 및 구조적 제약을 준수하는지 확인합니다. 이는 악성 코드가 피해를 일으키는 것을 방지하기 위한 중요한 단계입니다.

6. 실행

JVM이 바이트코드를 실행합니다. 실행 중에 JVM은 성능을 향상시키기 위해 Just-In-Time (JIT) 컴파일을 수행할 수 있습니다. 이는 JVM이 특정 플랫폼에 맞는 기계 코드로 바이트코드를 번역하는 과정입니다.

7. 런타임 라이브러리

JVM은 Java 런타임 환경(JRE)의 일부인 Java 런타임 라이브러리에 의존합니다. 이 라이브러리는 실행 중에 Java 프로그램이 입출력, 네트워킹 및 데이터 구조와 같은 필수 기능을 제공합니다.

요약하면, 자바 컴파일 프로세스는 소스 코드 작성, 바이트코드로 컴파일 및 JVM에서 실행으로 구성됩니다. 이 접근 방식은 "한 번 작성하면 어디서든 실행 가능"한 능력을 제공하여 자바를 플랫폼 독립적인 프로그래밍 언어로 만듭니다.

 

 

 

728x90

관련글 더보기