본문 바로가기

IT · 인터넷

[Java] 컴파일 시점과 런타임 시점

반응형

Java는 강타입 언어로, 프로그램의 실행 과정에서 발생할 수 있는 다양한 오류를 사전에 방지하기 위해 컴파일 시점과 런타임 시점에 대한 명확한 구분을 가지고 있습니다.

이 글에서는 Java의 컴파일 시점과 런타임 시점의 차이점과 각각의 중요성에 대해 알아보겠습니다.

 

컴파일 시점 (Compile Time)

컴파일 시점은 Java 소스 코드가 컴파일러에 의해 바이트코드로 변환되는 과정입니다. 

이 과정에서 컴파일러는 문법 오류, 타입 오류, 접근 제어 오류 등을 검사합니다. 

즉, 코드가 올바른지 확인하는 단계입니다.

컴파일 시점 오류 예제 

public class Example {
    public static void main(String[] args) {
        int number = "Hello"; // 타입 오류
    }
}


위 코드에서 문자열 "Hello"를 정수형 변수 number에 할당하려고 하면, 

컴파일러는 타입 불일치로 인해 오류를 발생시킵니다. 

이 오류는 컴파일 시점에 발견되므로, 프로그램이 실행되기 전에 수정할 수 있습니다.

 

런타임 시점 (Run Time)

런타임 시점은 프로그램이 실행되는 단계로, 이 시점에서는 컴파일 시점에서 발견되지 않은 오류가 발생할 수 있습니다. 

런타임 오류는 프로그램이 실행 중에 발생하며, 예외 처리 없이 프로그램이 비정상적으로 종료될 수 있습니다.

 

런타임 시점 오류 예제 

public class Example {
    public static void main(String[] args) {
        String[] array = new String[2];
        System.out.println(array[2]); // ArrayIndexOutOfBoundsException 발생
    }
}


위 코드에서 배열의 인덱스 범위를 초과하여 접근하려고 하면, ArrayIndexOutOfBoundsException이 발생합니다.

이 오류는 런타임 시점에 발생하므로, 프로그램이 실행된 후에야 발견됩니다.

 



컴파일 시점과 런타임 시점의 중요성

컴파일 시점의 오류는 개발자가 코드를 작성할 때 즉시 수정할 수 있는 기회를 제공합니다. 

이는 코드의 품질을 높이고, 나중에 발생할 수 있는 런타임 오류를 줄이는 데 큰 도움이 됩니다.

반면, 런타임 오류는 프로그램의 실행 중에 발생하므로, 예외 처리를 통해 안정성을 높이는 것이 중요합니다.

예외 처리의 중요성

런타임 오류를 방지하기 위해 Java에서는 예외 처리 메커니즘을 제공합니다.

try-catch 블록을 사용하여 예외를 처리함으로써 프로그램이 비정상적으로 종료되는 것을 방지할 수 있습니다. 

 

public class Example {
    public static void main(String[] args) {
        try {
            String[] array = new String[2];
            System.out.println(array[2]); // 예외 발생
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("배열 인덱스가 범위를 초과했습니다: " + e.getMessage());
        }
    }
}


위와 같이 예외를 처리하면, 프로그램이 안전하게 실행될 수 있습니다.

 

마무리

Java의 컴파일 시점과 런타임 시점은 각각의 역할이 다르며, 프로그램의 안정성과 품질을 높이는 데 중요한 요소입니다. 

컴파일 시점에서의 오류를 사전에 방지하고, 런타임 시 발생할 수 있는 오류에 대해 적절히 예외 처리를 하는 것이 중요합니다. 

반응형