hanker

Java - 컴파일타임(Compile Time)과 런타임(Run Time)이 뭘까? 본문

JAVA

Java - 컴파일타임(Compile Time)과 런타임(Run Time)이 뭘까?

hanker 2024. 12. 5. 00:00
반응형

프로그램의 실행과 관련된 중요한 개념인 컴파일 타임(Compile Time)런타임(Run Time)에 대해서 알아보자!

 


컴파일 타임 (Compile Time)

 

정의

- 컴파일 타임은 소스 코드를 기계어로 변환하는 컴파일 과정에서 발생하는 시간을 의미한다.

- 프로그램이 실행되기 전에 코드가 컴파일러에 의해 번역되고 오류를 검사하는 단계이다.

 

주요 특징

오류 감지: 컴파일러는 문법 오류(Syntax Error), 타입 오류(Type Error), 선언되지 않은 변수, 잘못된 메서드 호출 등을 검사한다.

정적 분석: 프로그램 실행 전 정적인 코드 구조만을 분석한다.

바이트코드 생성: Java의 경우, 컴파일 타임에 소스 코드(.java)가 바이트코드(.class)로 변환된다.

 

문법오류 예 : 

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

 

타입오류 예 : 

int number = "string";

 


런타임 (Run Time)

 

정의

- 런타임은 프로그램이 실행되고 있는 실제 동작 시간을 의미합니다.

- 프로그램이 사용자의 입력, 외부 환경, 파일, 네트워크 등과 상호작용하는 시점입니다.

 

주요 특징

- 실시간 실행: 런타임에 프로그램이 실행되며 사용자와 상호작용이 이루어진다.

- 예외 발생 가능: 프로그램이 실행 중 예상치 못한 상황에서 오류(예: NullPointerException, Division by Zero 등)가 발생할 수 있다.

- 동적 동작: 메모리 할당, 파일 입출력, 네트워크 연결 등 실행 중에만 처리할 수 있는 작업이 이루어진다.

 

NPE 예제

    public static void main(String[] args) {
        String text = null;
        System.out.println(text.length()); // NullPointerException 발생
    }

 

배열 인덱스 초과

    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException 발생
    }

 

 


주요 차이점

 

특징 컴파일타임 런타임
시점 프로그램 컴파일 중 프로그램 실행 중
오류 유형 문법 오류(Syntax Error), 타입 오류 논리 오류, 예외(Runtime Exception)
오류 처리 여부 컴파일러가 자동으로 감지 프로그래머가 직접 처리하거나 방어적 코딩 필요
주요 작업 코드 분석 및 바이트코드 생성 메모리 할당, 외부 리소스와 상호작용
실행 환경 컴파일러 JVM 또는 CPU

 

 

 

컴파일 타임 오류는 개발 단계에서 발견되므로 비교적 수정이 쉽고,

런타임 오류는 실행 중에 발생하므로 사전에 예방하기 위해 철저한 테스트와 예외 처리가 필요하다.

 


 

반응형