0Pricing
Java Academy · 강의

네이티브 이미지 빌드

사전 컴파일을 알아봅니다

네이티브 이미지 빌드은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

네이티브 이미지 빌드하기

native-image 도구는 컴파일된 Java 바이트코드를 하나의 독립 실행형 네이티브 실행 파일로 변환합니다. 이 레슨에서는 빌드 과정, 내부에서 일어나는 일, 결과 실행 방법을 살펴봅니다.

일반적인 Java로 시작하기

네이티브 이미지는 일반적으로 컴파일된 클래스에서 시작합니다. 여기서는 네이티브 코드로 컴파일한다고 가정할 간단한 프로그램을 살펴봅니다.

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello from a native binary!");
    }
}

컴파일한 다음 빌드하기

두 단계로 진행됩니다. 먼저 javac Hello.java가 Hello.class를 생성하고, 그다음 native-image Hello가 hello라는 이름의 실행 파일을 생성합니다. 전체 프로그램을 분석해야 하므로 빌드는 컴파일보다 훨씬 오래 걸립니다.

폐쇄 세계 분석

네이티브 이미지는 폐쇄 세계 분석을 수행하므로, 실행될 가능성이 있는 모든 코드를 확인해야 합니다. main에서 시작해 도달 가능한 모든 메서드를 따라가며, 그 메서드만 바이너리에 포함합니다. 도달할 수 없는 항목은 모두 제거됩니다(링크 시점의 죽은 코드 제거).

사전 컴파일

도달 가능한 메서드는 사전에 네이티브 기계어로 컴파일됩니다. 해석할 바이트코드가 남아 있지 않고 JIT도 필요하지 않으므로 워밍업도 없습니다. 프로그램은 첫 명령부터 최고 속도로 실행됩니다.

빌드 시점 초기화

빠르게 시작하기 위해 네이티브 이미지는 빌드 시점에 정적 초기화 구문을 실행하고, 그 결과로 만들어진 힙을 이미지에 포함할 수 있습니다(이미지 힙). 따라서 프로그램이 시작되는 순간부터 일부 객체가 이미 존재합니다.

실행 파일 실행하기

출력물은 일반적인 OS 실행 파일입니다. 직접 실행하면 되므로 java -jar도 필요 없고 대상 컴퓨터에 JVM을 설치할 필요도 없습니다. 플래그에 따라 완전히 정적이거나 대부분 정적인 형태로도 만들 수 있습니다.

일반적인 빌드 플래그

유용한 옵션은 다음과 같습니다.

  • -o name — 출력 파일 이름입니다.
  • --no-fallback — JVM에 의존하는 대체 이미지를 생성하는 대신 실패합니다.
  • -O2 / -O3 — 최적화 수준입니다.
  • --static — 완전히 정적으로 링크된 바이너리입니다(Linux).

메모리와 디스크

빌드 자체는 메모리를 많이 사용합니다. 대규모 애플리케이션은 수 기가바이트의 RAM과 몇 분의 CPU 시간을 필요로 할 수 있습니다. 이 비용은 빌드 시점에 한 번 지불하고, 그 대가로 빠르고 저렴한 실행 시점 시작을 얻습니다.

Maven/Gradle을 통한 빌드

실제 프로젝트에서는 네이티브 이미지를 직접 호출하는 일이 거의 없습니다. GraalVM의 네이티브 빌드 도구 플러그인은 이를 Maven(native:compile)과 Gradle(nativeCompile)에 통합하므로, 바이너리가 일반 빌드 파이프라인의 일부가 됩니다.

시작 속도 확인하기

빌드한 후 시작 속도를 비교해 보십시오. java -jar 실행은 수백 밀리초가 걸릴 수 있지만 네이티브 바이너리는 한 자릿수 밀리초 안에 응답합니다. 이 차이를 측정하는 것이 네이티브 방식을 사용하는 핵심 목적입니다.

빠른 확인

네이티브 이미지를 빌드하는 방법을 제대로 이해했는지 테스트해 보십시오.

복습

네이티브 이미지 빌드 과정을 배웠습니다.

  • 컴파일된 바이트코드에서 시작하며, native-image가 독립 실행형 실행 파일을 생성합니다.
  • 폐쇄 세계 분석은 main에서 도달할 수 있는 모든 코드를 찾습니다.
  • 도달 가능한 코드는 AOT 컴파일되고, 도달할 수 없는 코드는 제거됩니다.
  • 빌드 시점 초기화는 빠른 시작을 위해 이미지 힙을 포함합니다.
  • 빌드는 느리고 메모리를 많이 사용하므로 Maven/Gradle 플러그인을 통해 통합하십시오.

자주 묻는 질문

“네이티브 이미지 빌드” 강의는 무료인가요?

네 — “네이티브 이미지 빌드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“네이티브 이미지 빌드”에서 뭘 배우나요?

사전 컴파일을 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“네이티브 이미지 빌드” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. GraalVM이란 무엇인가
  2. 네이티브 이미지 빌드
  3. 리플렉션과 구성
  4. 네이티브 이미지의 장단점
← Java Academy(으)로 돌아가기