전공공부/자바 (JAVA)

[JAVA] JAVA는 컴파일 언어일까, 인터프리터 언어일까?

jooona 2021. 12. 27. 21:40
반응형

앞의 글에서 우리가 코딩 시에 사용하는 언어들은 컴파일 언어와 인터프리터 언어로 구분할 수 있다는 사실을 알게 되었다. 다시 기술하자면, C, C++, Go 등의 언어는 컴파일 언어이고, Python, R, JavaScript와 같은 언어들은 인터프리터 언어이다.

 

앞의 글은 아래의 링크에서 확인할 수 있다.

https://jooona.tistory.com/156

 

[프로그래밍 언어] 컴파일 언어 vs 인터프리터 언어

우리는 고급 언어를 이용해 프로그램을 짜곤 한다. 여기서 고급 언어란 우리가 사용하는 Java, C, Python 등의 언어를 뜻한다. 이 고급 언어는 크게 컴파일 언어와 인터프리터 언어로 구분할 수 있다

jooona.tistory.com

 

그렇다면, Java는 왜 예시에 포함되지 않는 것일까?

 

그 이유는 Java는 컴파일 언어이기도 하고, 인터프리터 언어이기도 하기 때문이다.

 

 

1. 컴파일 언어?

 

Java는 다른 컴파일 언어들이 작동하듯이 컴파일러를 이용해 전체 코드를 한번에 번역한다. 여기서 사용하는 컴파일러를 자바 컴파일러(Java Compiler)라고 하며, 이 자바 컴파일러는 우리가 작성한 Java 코드를 자바 가상 머신(Java Virtual Machine, JVM)이 실행시킬 수 있는 자바 바이트 코드로 번역한다.

참고: 자바 바이트 코드의 확장자는 .class이다.

 

여기까지의 과정을 보면 Java는 당연하게도 컴파일 언어로 분류하고 싶어 진다.

 

 

2. 인터프리터 언어?

 

하지만 자바 바이트 코드는 자바 가상 머신(JVM)의 자바 인터프리터(Java Interpreter)를 이용해 한 줄씩 실행된다. 조금 더 자세하게 말하자면, 자바 바이트 코드로 작성되어 있는 실행 프로그램을 자바 인터프리터가 한 줄씩 읽으면서 컴퓨터가 이해할 수 있는 2진 코드로 번역한 후 실행시킨다는 뜻이다. 

 

오, 이 부분은 충분히 인터프리터 언어로 생각할 만한 것 같다.

 

 

JAVA 작동 원리 (자바 컴파일러, 자바 인터프리터)

 

 

 

그래서 Java는 하이브리드 언어라는 괴상한 이름으로 불린다. 컴파일 언어와 인터프리터 언어를 혼합한 형태의 언어라는 의미인데, 처음에는 인터프리터 언어로써 사용되다가, 성능 향상을 위하여 컴파일 언어의 장점을 가져왔다고 한다.

반응형