Java 컴파일 과정

이창훈·2024년 9월 1일

컴파일이란?

컴파일은 원시코드(소스코드)를 컴퓨터가 이해할 수 있는 목적코드(바이트코드, 기계어)로 바꿔주는 것입니다.

컴파일 과정

1. 소스 코드 작성

Java 프로그램 개발은 .java 파일에 소스 코드를 작성하는 것에서 시작합니다. 이 파일에는 Java 언어로 작성된 클래스와 메소드들이 포함되어 있으며, 사람에게 이해할 수 있는 고수준의 코드로 이루어져 있습니다.

위의 예시를 Velog에 입력하면, 아래와 같이 코드 블록이 생성됩니다.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

위의 예제처럼, HelloWorld.java라는 파일에 간단한 코드가 작성되어 있다고 가정해봅시다.

2. 컴파일 : javac 명령어

Java 소스 코드는 컴퓨터가 직접 이해할 수 없습니다. 따라서, 컴퓨터가 이해할 수 있는 형식인 바이트코드로 변환해야 합니다. 이때 사용하는 것이 바로 javac 명령어입니다. javac는 Java 컴파일러로, .java 파일을 바이트코드 파일인 .class 파일로 변환합니다.

javac HelloWorld.java

위 명령어를 실행하면 HelloWorld.java 파일이 컴파일되어 HelloWorld.class 파일이 생성됩니다. 이 .class 파일은 Java 바이트코드로 이루어져 있으며, JVM이 이 바이트코드를 해석하여 프로그램을 실행하게 됩니다.

3. 실행 : java 명령어

컴파일된 바이트코드 파일은 직접 실행할 수 있는 형태는 아닙니다. 이를 실행하기 위해서는 Java Virtual Machine(JVM)이 필요합니다. java 명령어는 JVM을 통해 .class 파일을 실행하는 역할을 합니다.

java HelloWorld

위 명령어를 실행하면, HelloWorld.class 파일을 JVM 내부의 클래스로더가 가져와 동적로딩을 통해 JVM 메모라 상에 적재 됩니다.
이후 실행 엔진에 의해 바이트코드가 해석되어 프로그램이 실행됩니다. 이때, main 메소드가 호출되어 "Hello, World!" 메시지가 출력됩니다.

컴파일과정의 중요성

Java의 컴파일 과정은 프로그램의 실행 효율성과 보안을 높이는 중요한 역할을 합니다. 소스 코드가 바이트코드로 변환됨에 따라, 직접 코드가 노출되지 않으면서도 효율적으로 실행할 수 있는 구조로 변환됩니다. 또한, 컴파일 단계에서 코드의 문법 오류와 타입 오류 등을 미리 체크할 수 있어, 실행 시 발생할 수 있는 오류를 예방합니다.


참고자료 : https://github.com/devSquad-study/2023-CS-Study/blob/main/java/java_compile_sequence.md

profile
한화시스템 BEYOND SW CAMP 2기

0개의 댓글