컴파일
사람이 작성한 코드를 컴퓨터가 실행할 수 있는 형태로 변환하는 것입니다.
과정
소스 코드 (.java) → 컴파일러 → 실행 파일 (.class)
사람이 읽음 변환 컴퓨터가 실행
// Main.java (사람이 작성)
public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}
javac Main.java # 컴파일
java Main # 실행
컴파일 vs 런타임
| 컴파일 타임 | 런타임 | |
|---|---|---|
| 언제 | 코드 변환 시점 | 프로그램 실행 시점 |
| 에러 예시 | 문법 오류, 타입 오류 | NullPointerException |
// 컴파일 에러: 문법이 틀림
int x = "hello"; // 컴파일 시점에 발견됨, 실행 자체가 안 됨
// 런타임 에러: 문법은 맞지만 실행 중 문제 발생
String str = null;
str.length(); // 컴파일은 됨, 실행하면 터짐
언어별 차이
| 언어 | 방식 |
|---|---|
| Java, C, Go | 컴파일 언어 (미리 변환) |
| Python, JavaScript | 인터프리터 언어 (실행하면서 변환) |
컴파일 언어는 실행 전에 오류를 잡을 수 있고, 실행 속도가 빠릅니다.