[Java] 컴파일 언어일까 인터프리터 언어일까?

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 4월 11일
0

Java

목록 보기
2/4
post-thumbnail

프로그래밍 언어는 컴파일 언어와 인터프리터 언어의 두 그룹으로 분류할 수 있다.
C, C++, Go와 같은 컴파일 언어는 소스 코드를 한번에 기계 코드로 변환하는 반면,
Python, R, JavaScript와 같은 인터프리터 언어는 소스 코드를 한 줄씩 읽고 해석한다.



✔️ 컴파일 언어와 인터프리터 언어

▶︎ 컴파일 언어

컴파일 언어는 고급 언어로 작성된 소스 코드를 저급 언어로 번역하는 프로그램인 컴파일러를 사용한다.
고급 언어는 사람이 이해하고 작성하기 쉬운 반면, 저급 언어는 컴퓨터가 직접 이해하고 처리하기 쉽다.

컴파일러는 컴파일 타임전체 소스 코드기계어 코드로 변환한 후 실행 파일을 생성한다.
컴파일 단계와 실행 단계가 분리되어 있으며 컴파일은 한 번만 수행된다.

컴파일된 실행 파일은 프로그램 실행 중 바로 실행되기 때문에 코드 실행 속도가 빠르다.
하지만 프로젝트의 규모가 클 경우 컴파일 시간이 오래 걸린다는 단점이 있다.

▶︎ 인터프리터 언어

인터프리터 언어는 별도의 실행 파일을 생성하지 않는다.
대신 소스 코드를 한 줄씩 읽고, 바이트 코드로 변환하여 실행한다.

즉, 해석 단계와 실행 단계가 분리되지 않고 코드가 실행될 때마다 해석 과정이 수행된다.
따라서 실행 속도가 상대적으로 느리다.


✔️ Java의 실행 과정 살펴보기

▶︎ Java Compiler

Java Compiler는 Java 코드를 한 번에 Java 바이트 코드로 변환한다.
Java 바이트코드의 확장자는 .class이다.

.java 파일 → [Java Compiler] → .class파일

▶︎ Java Interpreter

변환된 코드는 JVM의 Java Interpreter를 사용하여 한 줄씩 실행된다.

.class 파일 → [JVM] → 바이너리 코드

✔️ 결론

▶︎ Hybrid Language

Java는 컴파일 언어이자 인터프리터 언어
처음에는 인터프리터 언어로 사용되다가, 컴파일 언어의 장점을 가져와 성능을 향상시켰다.

실행 속도를 높이기 위해 JVM의 JIT(Just In Time) 컴파일러는 반복되는 코드를 네이티브 코드로 변환하고, 인터프리터는 컴파일된 네이티브 코드를 직접 사용한다.

JIT 컴파일러란?

JIT(Just-In-Time)은 실제 실행 시점에 프로그램을 번역하는 컴파일 기법이다. 코드를 매번 해석하지 않고 동일한 코드를 캐싱한다. 자주 사용하는 메소드를 저장하고 해석 없이 바로 실행하여 성능을 향상시킨다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글