728x90
컴파일 vs 인터프리터
@2024.03.11
프로그래밍을 공부하다 보면 컴파일
과 인터프리터 언어
에 대해서 종종 듣게 된다.
그렇다면 도대체 둘의 차이점은 무엇일까?
컴파일
💡
고급 프로그래밍 언어로 작성된 코드를 컴퓨터가 처리할 수 있는 기계어로 한 번에 번역되는 과정
- 개발자가 짠 코드를 미리 번역해두었다가, 프로그램을 실행할 때 컴퓨터가 번역본을 읽는다.
- 소스코드 → 컴파일러 (컴파일) → 기계어 → 실행
- 전체를 번역하기에 초기 실행 시간은 오래 거리지만, 전체적인 실행 시간은 상대적으로 더 빠르다.
- 초기 실행 파일을 한번 만들어 놓은 뒤 다음 실행할 때도 해당 실행 파일을 그대로 실행하면 되기 때문이다.
인터프리터
💡
고급 프로그래밍 언어로 작성된 코드를 컴퓨터가 처리할 수 있는 기계어로 한 줄 한 줄 즉시 통역되는 과정
- 개발자가 짠 코드를 그대로 가지고 있다가, 프로그램을 실행하면, 그때그때 통역 프로그램이
실시간으로 통역하는 것과 같다.
- 소스코드 → 인터프리터 → 바로 번역 및 실행
- 별도의 컴파일 과정을 거치지 않고 소스코드를 각각 한 줄씩 읽어 실행함
- 별도의 실행 파일을 생성하지 않기에 실행 시마다 인터프리터 과정이 반복되어 실행 시간이 오래 걸린다.
- 오류를 만나면 그 즉시 프로그램을 중지하기 때문에 수정이 쉽다.
Java
💡
자바는 컴파일러 언어기도 하고, 인터프리터 언어기도 하다.
.java → javac(컴파일러) → .class → JVM → 010101(기계어) → 실행
.java → javac(컴파일러) → .class → JVM → 010101(기계어) → 실행
해당 내용을 보면서 다수의 글은 JAVA는 컴파일 언어라고 한다. 하지만 종종 JAVA가 인터프리터 언어라고 하는 글을 보았다. 정말 혼동이 와서 여러 가지 찾아보니까 둘 다 맞았다고 결론을 내렸다.
- 자바는 다른 컴파일 언어와 동일하게 자바 컴파일러를 이용해 전체 코드를 한 번에 번역한다.
- 이 과정은 컴파일러 언어와 같다.
- 자바 컴파일러는 바로 기계어로 번역해 주는 것이 아닌, 자바 가상 머신(JVM)이 실행시킬 자바 바이트 코드로(.class)로 번역한다.
- 자바 인터프리터는 이런 .class 파일 내의 바이트코드를 특정 환경의 기계에서 실행될 수 있도록 바이트 코드를 한 줄 씩 읽으면서 기계어로 변환해 준다.
728x90
'JAVA' 카테고리의 다른 글
While문 (0) | 2024.03.30 |
---|---|
Hello World! (0) | 2024.03.30 |
IDE - IntelliJ 설치 (0) | 2024.03.30 |
환경 변수 & 설정 (0) | 2024.03.30 |
JVM/JRE/JDK&JDK설치 (2) | 2024.03.30 |