본문 바로가기

백엔드 기술/Java

컴파일(Compile)과 런타임(Runtime)

Java에서 개발 언어로 작성된 소스 코드를 실행 가능한 코드로 변환하고 실행하는 과정에는
#컴파일과 #런타임이라는 두 가지 주요 단계가 포함된다.

Java 소스 파일이 JVM에서 실행되는 과정

컴파일 (Compile)

컴파일 이란, 개발언어로 작성된 소스 코드(.java 파일들)를
컴퓨터가 인식 가능한 기계어 코드 (바이트코드 = .class파일)변환하여 실행가능한 프로그램이 되는 과정


Java, C, C++ 등의 언어는 #컴파일 언어이며, 실행(Runtime)을 위해서 반드시 #컴파일 과정을 거쳐야 한다.

반면, JavaScript, Php, Python 등의 언어는 #스크립트 언어이며,
#컴파일 과정 없이 기계어로 번역되는 즉시 동작하도록 되어 있다.
그래서 컴파일 언어와 비교하면 스크립트 언어는 실행할 때 마다 번역과정을 거쳐야 하므로 속도가 느리다.

컴파일 에러

컴파일 과정(소스코드 -> 바이트코드 변환 작업 중) 발견되는 에러(구문 오류, 유형 불일치).
즉, 프로그램이 컴파일링 되는 과정에서 발생하는 에러이다.
일반적으로 컴파일 에러 발생 시, 컴파일러는 문제를 일으킨 소스코드라인을 지적해준다.

1. Syntax Error
2. Type 체크 Error
3. 파일 참조 오류

 

런타임 (Runtime)

#컴파일 이후 생성된  #바이트코드(.class파일)를 실행하는 시점을 나타내는 말이다.

런타임 에러

Java 프로그램 실행 중에 발생하는 오류를 #런타임 오류, 예외 라고 한다.
null 포인터 예외, 범위를 벗어난 배열 인덱스 예외, 파일을 찾을 수 없는 예외 등이 대표적이다.
일반적으로 코드의 잘못된 작성으로 인해 발생하지만, #컴파일 단계에서 감지되지 않는다.

1. 0 나누기 오류
2. Null 참조 오류
3. 메모리 부족 오류

 

[요약]

#컴파일
개발자가 작성한 소스 코드(.java)를 바이트코드(.class)로 변환하고 오류를 확인하는 작업을 포함.

#런타임
JVM에서 바이트코드(.class)를 실행하고 메모리를 관리하며, 런타임 오류를 처리하는 작업을 포함.

'백엔드 기술 > Java' 카테고리의 다른 글

Multi-Thread & Multi Process  (0) 2023.04.20
SingleTon 디자인 패턴  (0) 2023.04.20
Java - Generic 제네릭이란 ?  (0) 2023.04.20
컬렉션과 스트림의 차이  (0) 2023.04.19
자료 구조에서 Array VS List  (0) 2023.04.18