JAVA는 인터프리터 언어일까, 컴파일 언어일까?
결론부터 말하자면 JAVA는 인터프리터이면서 컴파일 언어이다.
우선 인터프리터와 컴파일의 차이부터 알아야 한다.
인터프리터 언어
인터프리터는 코드를 한 줄씩 읽어 내려가며 실행하는 프로그램이다.
인터프리터는 자체적으로 실행 기능이 없기 때문에 목적 프로그램(.exe)을 만드는 곳만
컴파일 언어를 사용하고 대부분의 코드는 인터프리터 언어로 작성한다.
실행 시마다 소스 코드를 한 줄씩 읽는 방식이기 때문에 컴파일 언어보다 속도가 느리다.
하지만 인터프리터 언어는 수정이 간단하다는 장점을 가지고 있다.
컴파일 언어는 소스 코드를 번역하여 실행 파일을 만들기 때문에 수정 시 소스 코드를
다시 컴파일해야 한다.
그에 비해 인터프리터 언어는 소스 코드를 수정하여 실행 시키면 끝이다.
실행 속도는 느리지만 코드 수정 시 빌드 없이 바로 실행하기 때문에 소스 코드를 고치고
서버를 다시 시작하지 않아도 변경 사항이 반영된 상태로 테스트가 가능하다.
이 장점을 최대한 살려 사용하는 것이 스크립트 언어(javaScript, JSP, Python)이다.
컴파일 언어
컴파일 언어는 프로그래머가 작성한 코드를 모두 기계어로 번역한 후에 기계어 코드를 실행한다.
소드 코드를 기계어로 번역하는 빌드 과정에서는 인터프리터 언어에 비해 시간이 소요된다.
하지만 런타임에서는 이미 모든 소스 코드가 기계어로 변환이 되었기 때문에 빠르게 실행된다.
대표적인 언어로는 C, C++ 등이 있다.
빌드는 소스 코드 파일을 실행 파일로 생성하는 과정이다.
개발자가 작성하는 고급 언어를 저급 언어인 기계어로 변환하여 실행 파일로 생성한다.
인터프리터 언어는 빌드 과정 없이 바로 고급 언어를 한 줄씩 읽어 실행하고,
컴파일 언어(C, C++)는 .class 파일 등과 같이 변환하여 실행한다.
그렇다면 자바는 왜 인터프리터 언어이면서 컴파일 언어일까?
자바는 원래 인터프리터 언어라고 할 수 있었다.
과거에는 코드를 한 줄씩 읽고 실행하는 방식으로 작동이 되었지만,
영원한 숙제였던 성능 문제가 튀어나오면서 JIT Compiler가 들어가게 되었다.
이로 인해 자바는 컴파일과 인터프리터를 병행하여 사용하게 되었다.
자바 컴파일러의 JAVAC 명령으로 자바 프로그램의 중간 형태인 바이트 코드로
컴파일하고(.java -> .class), 이를 자바 인터프리터가 한 줄씩 읽어가며 실행한다.
자바의 컴파일 과정 및 JVM에 대해서는 따로 다루도록 하겠다.
'JAVA' 카테고리의 다른 글
[JAVA] JAVA는 Call-By-Value? Call-By-Reference? (0) | 2022.02.28 |
---|---|
[JAVA] JAVA 컴파일 과정과 JVM (0) | 2022.02.27 |
[JAVA] 자바는 무엇인가?(자바의 특징) (0) | 2022.02.27 |
[JAVA] for문, 향상된 for문, for Each문 (0) | 2022.01.13 |
[JAVA] Map - HashMap, TreeMap, LinkedHashMap (0) | 2022.01.12 |