앞의 글에서 우리가 코딩 시에 사용하는 언어들은 컴파일 언어와 인터프리터 언어로 구분할 수 있다는 사실을 알게 되었다. 다시 기술하자면, C, C++, Go 등의 언어는 컴파일 언어이고, Python, R, JavaScript와 같은 언어들은 인터프리터 언어이다.
앞의 글은 아래의 링크에서 확인할 수 있다.
https://jooona.tistory.com/156
그렇다면, Java는 왜 예시에 포함되지 않는 것일까?
그 이유는 Java는 컴파일 언어이기도 하고, 인터프리터 언어이기도 하기 때문이다.
1. 컴파일 언어?
Java는 다른 컴파일 언어들이 작동하듯이 컴파일러를 이용해 전체 코드를 한번에 번역한다. 여기서 사용하는 컴파일러를 자바 컴파일러(Java Compiler)라고 하며, 이 자바 컴파일러는 우리가 작성한 Java 코드를 자바 가상 머신(Java Virtual Machine, JVM)이 실행시킬 수 있는 자바 바이트 코드로 번역한다.
참고: 자바 바이트 코드의 확장자는 .class이다.
여기까지의 과정을 보면 Java는 당연하게도 컴파일 언어로 분류하고 싶어 진다.
2. 인터프리터 언어?
하지만 자바 바이트 코드는 자바 가상 머신(JVM)의 자바 인터프리터(Java Interpreter)를 이용해 한 줄씩 실행된다. 조금 더 자세하게 말하자면, 자바 바이트 코드로 작성되어 있는 실행 프로그램을 자바 인터프리터가 한 줄씩 읽으면서 컴퓨터가 이해할 수 있는 2진 코드로 번역한 후 실행시킨다는 뜻이다.
오, 이 부분은 충분히 인터프리터 언어로 생각할 만한 것 같다.
그래서 Java는 하이브리드 언어라는 괴상한 이름으로 불린다. 컴파일 언어와 인터프리터 언어를 혼합한 형태의 언어라는 의미인데, 처음에는 인터프리터 언어로써 사용되다가, 성능 향상을 위하여 컴파일 언어의 장점을 가져왔다고 한다.
'전공공부 > 자바 (JAVA)' 카테고리의 다른 글
[JAVA] Overloading과 Overriding의 차이 (0) | 2022.01.24 |
---|---|
[JAVA] Scanner vs BufferedReader & System.out vs BufferedWriter (0) | 2022.01.20 |
[JAVA] Static? 그거 왜 붙이는건데? (4) | 2022.01.19 |
[JAVA] JVM, JRE, JDK의 차이점이 뭘까? (0) | 2022.01.16 |
[JAVA] 자바 가상 머신, JVM에 대해 알아보자! (2) | 2021.12.28 |