[CS] | 컴파일(Compile)과 런타임(Runtime)

제롬·2022년 6월 2일
0

컴파일(Compile)이란?

개발자가 프로그램을 위해 작성한 소스코드를 다른 프로그램이나 기계(H/W)가 처리하기 용이한 형태로 바꾸는 과정을 말한다.

Java, C, C++ 같은 언어들이 컴파일 언어이며 실행(런타임)되기 위해서는 반드시 컴파일 과정을 거쳐야한다.

반면에, JavaScript, Php, Python 같은 언어들은 스크립트 언어이며 이런 언어들은 컴파일 과정없이 기계어로 번역되는 즉시 동작하도록 되어있다. 따라서 컴파일과정은 필요하지 않지만 작동시에는 컴파일 언어에 비해 느리다는 단점이 있다.

이런 컴파일을 진행하는 일련의 과정을 컴파일 타임이라고 한다.

Java 언어와 컴파일

기본적으로 컴파일(Compile)은 소스코드를 기계(H/W)가 이해할 수 있는 기계어로 바꿔주는 역할을 하지만 자바(Java)언어같은 경우는 조금 다르게 생각해야 한다.

자바 언어를 컴파일 하면 바이트코드가 생성된다. 이는 컴퓨터(H/W)가 이해할 수 없는 언어이다. 자바가 컴파일한 언어를 이해할 수 있는 기계는 바로 JVM(Java Virtual Machine)이다.

즉, 자바 언어를 컴파일한 바이트 코드를 이해할 수 있는 기계는 바로 JVM을 의미한다는 것을 알 수 있다.

런타임(Runtime)이란?

컴파일 과정을 마친 컴퓨터 프로그램이 실행되고 있는 환경 또는 동작되는 동안의 시간을 말한다.

위키피디아의 런타임은 런타임과 런타임 환경을 구분해서 말하고 있는데 우리가 대부분 이야기하는 런타임은 위키피디아의 런타임 환경을 의미하는 것 같다.

예를 들어, JavaScript가 Web Browser에서 실행된다면 런타임 환경은 Web Browser가 되고 JavaScript가 Node.js에서 동작한다면 런타임 환경은 Node.js이 된다.

컴파일 에러

컴파일 에러는 프로그램이 컴파일링되는 과정에서 발생하는 에러로 일반적으로 컴파일 에러 발생시 컴파일러는 문제를 일으킨 소스코드라인을 지적해준다.

  • Syntax Error
  • Type 체크 에러
  • 파일 참조 오류

런타임 에러

소스코드가 이미 실행가능한 프로그램으로 성공적으로 컴파일이 되었더라도 여전히 프로그램의 실행중에 버그를 일으킬 수 있다. 이렇게 프로그램의 실행중에 발생하는 형태의 오류를 런타임 에러라고 한다.

  • 0 나누기 오류
  • Null 참조 오류
  • 메모리 부족 오류

[Reference]
위키피디아 - 컴파일러
위키피디아 - 런타임
ZUNOXI - 런타임과 컴파일타임
어떻게 짤것인가 - 런타임이란? 컴파일타임 과의 차이는?

0개의 댓글