컴파일(Compile)
개발자가 작성한 소스 코드를 기계어(machine code) 또는 중간 코드(intermediate code)로 변환하는 과정이다.
예를 들어, C++ 소스코드(.cpp)를 컴파일하면 목적 파일(.obj)이 생성된다
컴파일러는 코드의 문법적 오류를 검사하고, 최적화를 수행한다.
Java의 경우 소스코드(.java)를 바이트코드(.class)로 변환한다.
빌드(Build)
컴파일을 포함한 더 큰 개념으로, 실행 가능한 소프트웨어를 만드는 전체 과정이다.
소스 코드 컴파일, 리소스 파일 복사, 라이브러리 연결, 실행 파일 생성 등을 포함한다.
예를 들어 Java 프로젝트 빌드 시
- 소스 코드 컴파일
- 리소스 파일 복사
- 외부 라이브러리 연결
- JAR/WAR 파일 생성
런타임(Runtime)
프로그램이 실제로 실행되는 시점과 환경을 의미한다.
프로그램 실행 중에 발생하는 모든 동작과 상황을 포함한다.
예시
- Java Runtime Environment (JRE)는 자바 프로그램 실행에 필요한 환경을 제공
- 메모리 할당/해제, 예외 처리 등이 런타임에 발생
차이점
발생 시점
- 컴파일 : 프로그램 실행 전
- 빌드 : 프로그램 실행 전 (컴파일 포함)
- 런타임 : 프로그램 실행 중
목적
- 컴파일 : 소스 코드를 기계어로 변환
- 빌드 : 실행 가능한 소프트웨어 패키지 생성
- 런타임 : 프로그램 실행 환경 제공 및 관리
오류 유형
- 컴파일 : 문법 오류(Syntax Error)
- 빌드 : 종속성 오류(Dependency Error), 설정 오류
- 런타임 : 실행 중 발생하는 오류(예: NullPointerException)