티스토리 뷰
▶컴파일(Compile)과 런타임(Runtime)
🔎 컴파일(Compile) ?
개발자가 프로그램을 위해 작성한 소스코드를 다른 프로그램이나 기계(H/W)가 처리하기 용이한 형태로 바꾸는 과정을 말한다.
Java, C, C++ 같은 언어들이 컴파일 언어이며
실행(런타임)되기 위해서는 반드시 컴파일 과정을 거쳐야 합니다.
반면에, Javascript, Python 같은 언어들은 스크립트 언어이며
이런 언어들은 컴파일 과정 없이 기계어로 번역되는 즉시 동작하도록 되어 있습니다.
따라서 컴파일 과정은 필요하지 않지만 작동 시에는 컴파일 언어에 비해 느리다는 단점이 있습니다.
이런 컴파일을 진행하는 일련의 과정을 컴파일 타임이라고 합니다.
📌 Java 언어와 컴파일
기본적으로 컴파일(Compile)은 소스코드를 기계(H/W)가 이해할 수 있는 기계어로 바꿔주는 역할을 하지만
자바(Java)언어 같은 경우는 조금 다르게 생각해야 합니다.
자바 언어를 컴파일 하면 바이트코드가 생성됩니다.
이는 컴퓨터(H/W)가 이해할 수 없는 언어인데요.
자바가 컴파일한 언어를 이해할 수 있는 기계는 바로 JVM(Java Virtual Machine)입니다.
즉, 자바 언어를 컴파일한 바이트 코드를 이해할 수 있는 기계는 바로 JVM을 의미한다는 것을 알 수 있습니다.
📌 컴파일 에러
컴파일 에러는 프로그램이 컴파일링되는 과정에서 발생하는 에러로
일반적으로 컴파일 에러 발생 시 컴파일러는 문제를 일으킨 소스코드 라인을 지적해준다.
ex. Syntax Error, Type 체크 에러, 파일 참조 에러
🔎 런타임(Runtime) ?
컴파일 과정을 마친 컴퓨터 프로그램이 실행되고 있는 환경 또는 동작되는 동안의 시간을 말한다.
위키피디아의 런타임은 런타임과 런타임 환경을 구분해서 말하고 있는데
우리가 대부분 이야기하는 런타임은 위키피디아의 런타임 환경을 의미하는 것 같습니다.
예를 들어, Javascript가 브라우저에서 실행된다면 런타임 환경은 브라우저가 되고
Javascript가 Node.js에서 동작한다면 런타임 환경은 Node.js이 됩니다.
📌 런타임 에러
소스코드가 이미 실행가능한 프로그램으로 성공적으로 컴파일이 되었더라도
여전히 프로그램의 실행 중에 버그를 일으킬 수 있다.
이렇게 프로그램의 실행 중에 발생하는 형태의 오류를 런타임 에러라고 한다.
ex. 0 나누기 오류, Null 참조 오류, 메모리 부족 오류
'백엔드 > Java' 카테고리의 다른 글
[Java] API란? 자바에서 API(.jar) 배포 | 빌드하는 방법 (0) | 2023.02.09 |
---|---|
[Java] getter와 setter - 데이터를 보호하자 | 단축키는 alt+shift+s, r (0) | 2023.02.09 |
[Java] Try-Catch문 - 예외 처리/커스텀 예외/예외던지기 (0) | 2023.02.09 |
[Java] 자바의 함수형 인터페이스(Functional Interface) - 추상 메소드가 오직 한 개인 인터페이스 (0) | 2023.02.05 |
[Java] 자바의 다중상속 그리고 모호성(ambiguity)에 대하여 (0) | 2023.02.05 |
- Total
- Today
- Yesterday
- 자바
- next.js
- 타입스크립트
- styled-components
- 머신러닝
- 디프만
- TypeScript
- 프론트엔드 기초
- jest
- 자바스크립트
- 딥러닝
- HTML
- 프론트엔드
- rtl
- 프론트엔드 공부
- 자바스크립트 기초
- 리액트 훅
- react
- 스타일 컴포넌트 styled-components
- testing
- 인프런
- JSP
- frontend
- CSS
- 파이썬
- 데이터분석
- Python
- 리액트
- react-query
- 프로젝트 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |