프로그래밍 언어에서의 컴파일 타임"(compile-time)과 "런타임"(run-time)
프로그램의 생애 주기에서 서로 다른 단계
이 두 단계는 프로그램이 작성되고 실행되는 과정에서 중요한 역할!
컴파일 타임 Compile-time
▶ 소스 코드가 컴파일러에 의해 기계어(바이트코드)로 번역되는 단계
→ 이 단계에서는 프로그램의 구문 및 타입 오류가 발견됨
주요 활동:
- 소스 코드 분석: 컴파일러는 소스 코드를 구문 분석(파싱)하여 오류를 찾습니다.
- 타입 체크: 변수의 타입, 메서드 호출, 반환 타입 등이 올바른지 확인합니다.
- 코드 최적화: 일부 컴파일러는 코드를 더 효율적으로 실행하기 위해 최적화를 수행합니다.
- 바이트코드 생성: 자바에서는 소스 코드(.java 파일)가 바이트코드(.class 파일)로 변환됩니다.
컴파일 타임 오류:
- 문법 오류: 잘못된 구문
- 타입 오류: 잘못된 타입 사용
- 클래스나 메서드가 존재하지 않는 경우
public class CompileTimeExample {
public static void main(String[] args) {
int x = 10;
String y = "Hello";
// 컴파일 타임 오류: 타입 불일치
// x = y; // int 타입 변수에 String을 할당하려고 하면 오류 발생
// 컴파일 타임 오류: 메서드 호출 오류
// System.out.println(y.toUpperCae()); // 오타로 인해 메서드 호출 실패
}
}
런타임 Run-time
▶ 컴파일된 프로그램이 실제로 실행되는 단계
→ 이 단계에서는 프로그램이 메모리에 로드되고, CPU에 의해 명령이 수행됨
주요 활동:
- 프로그램 실행: 컴파일된 바이트코드를 JVM이 로드하여 실행합니다.
- 동적 할당: 객체 생성과 메모리 할당이 수행됩니다.
- 입출력 작업: 파일 읽기/쓰기, 사용자 입력 처리 등
- 예외 처리: 실행 중 발생하는 예외를 처리합니다.
런타임 오류:
- NullPointerException: 참조가 null인 객체에 접근하려 할 때 발생
- ArrayIndexOutOfBoundsException: 배열의 유효한 인덱스를 벗어날 때 발생
- ArithmeticException: 0으로 나누기 등 잘못된 산술 연산
- ClassNotFoundException: 클래스를 찾지 못할 때 발생
public class RuntimeExample {
public static void main(String[] args) {
String str = null;
// 런타임 오류: NullPointerException
// System.out.println(str.length()); // str이 null이기 때문에 메서드 호출 시 오류 발생
int[] arr = new int[5];
// 런타임 오류: ArrayIndexOutOfBoundsException
// System.out.println(arr[10]); // 유효한 배열 인덱스를 벗어나 접근하려고 하면 오류 발생
}
}
요약
- 컴파일 타임 (Compile-time): 소스 코드가 컴파일될 때 발생하는 시간. 주로 구문 오류 및 타입 오류를 검사합니다.
- 주요 활동: 구문 분석, 타입 체크, 코드 최적화, 바이트코드 생성
- 오류 유형: 문법 오류, 타입 오류
- 런타임 (Run-time): 프로그램이 실제로 실행되는 시간. 실행 중에 발생하는 오류를 처리합니다.
- 주요 활동: 프로그램 실행, 동적 할당, 입출력 작업, 예외 처리
- 오류 유형: NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException
'Language > Studying' 카테고리의 다른 글
[JS] (소괄호) · {중괄호} · [대괄호] (0) | 2024.07.25 |
---|---|
[JS] 1급객체와 콜백함수 (0) | 2024.07.24 |
[Java] Exception 예외처리 (0) | 2024.07.18 |
[Java] Overload와 Override (feat. 다형성) (0) | 2024.07.17 |
[Java] Java API (0) | 2024.07.17 |