Languages/Java

[Java] 자바는 컴파일 언어? 인터프리터 언어?

효딩 2024. 6. 27. 17:38

컴파일러와 인터프리터

컴파일러와 인터프리터 모두 high-level language를 machine language로 번역한다.

 

1. 컴파일 언어

컴파일 언어는 내가 작성한 소스 코드 전체를 기계어로 번역한 뒤, 이 번역된 코드를 한 번에 실행하는 두 단계를 거쳐 진행된다. 즉, 번역과 실행이 완전이 따로 이루어진다.

번역은 컴파일러를 통해 수행되고, 대표적인 예시로는 C, C++이 있다.

 

- 특징

1. 컴파일은 오래 걸릴 수 있다.

2. 이미 컴파일 된 프로그램이라면 빠른 속도로 실행이 가능하다.

3. OS 이식성이 낮다. 다른 OS에서 실행하려면 그에 맞는 컴파일러로 다시 컴파일 해주어야 한다.

 

2. 인터프리터 언어

인터프리터 언어는 소스 코드를 한 줄씩, 번역과 실행을 동시에 진행한다. 번역은 인터프리터를 통해 수행되며, 대표적인 예시로는 Python, R, JavaScript가 있다.

 

- 특징

1. 줄 단위로 번역과 실행을 하기 때문에 실행이 느리다.

2. 디버깅이 쉽다. (오류를 발견하면 해당 코드 밑으로는 번역 및 실행 불가)

3. OS 이식성이 좋다. 호환되는 인터프리터만 있다면 바로 실행 가능하다.

 

자바는 컴파일 언어? 인터프리터 언어?

자바는 컴파일 언어이면서 동시에 인터프리터 언어이다.

 

- 자바 컴파일러는 javac(java compiler)를 통해 .java 파일을 바이트코드로 쓰여진 .class 파일로 변환한다.

즉, 컴파일러는 자바 소스코드를 JVM을 위한 기계어로 변환한다.

 

- 자바 인터프리터는 자바 컴파일러에 의해 변환된 class 파일 내의 바이트 코드를 특정 환경의 기계에서 실행될 수 있도록 변환한다.

 

정리하자면

자바 컴파일러는 소스 코드(.java)를 자바 바이트 코드(.class)로 컴파일하고,

자바 인터프리터는 바이트 코드(.class)를 기계가 이해할 수 있도록 machine code로 변환/번역한다.

자바는 따라서 컴파일 언어이자 인터프리터 언어인 "하이브리드 언어"이다.

 

혼합 사용을 통해 실행 속도와 코드 수정의 편의성을 조화시킬 수 있다.

 

https://jooona.tistory.com/157

 

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

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

jooona.tistory.com

https://velog.io/@tsi0521/Java%EB%8A%94-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0-%EB%91%98-%EB%8B%A4-%EA%B0%80%EC%A7%84%EB%8B%A4

 

Java는 왜 컴파일러와 인터프리터 둘 다 가지는가?

1. 컴파일러 vs 인터프리터 컴파일러 & 인터프리터 모두 high-level language를 machine language로 번역한다 컴파일러는 소스 코드(high-level language로 작성) 전체를 링커등을 통해 한번에 번역하여 object file(

velog.io