초기 : 비트조합을 하나하나 다 외워서 프로그래밍해야 했음!
수도코드 => 기계어 : 어셈블러
고수준 언어 => 기계어 : 컴파일러
반면, 인터프리터는 한 줄 한 줄씩 번역을 진행함으로써, 번역 시간은 컴파일러에 비해 빠르지만, 매 실행 때마다 같은 번역을 진행해야 하기 때문에, 인터프리터를 사용하는 언어들은 컴파일러를 사용하는 언어들에 비해 실행 속도가 느리다.
또한 인터프리터는 하드웨어에서가 아니라 가상 머신에서 실행된다. 따라서 하드웨어 환경이 변해도 작동이 잘 된다.
(출처 동일)
JAVA는 인터프리터 언어이기도 하고, 컴파일 언어이기도 하다. (=> 하이브리드 언어)
JAVA의 컴파일 언어적 성격
JAVA는 컴파일러를 통해 전체코드를 한 번에 번역하는데, 이 컴파일러를 자바 컴파일러(Java Compiler) 라고 하며, 이 컴파일러는 우리의 JAVA 코드를 JVM(자바 가상머신)이 실행시킬 수 있는 자바 바이트 코드(.class)로 번역한다.
JAVA의 인터프리터 언어적 성격
자바 바이트 코드(.class) 는 자바 가상 머신(JVM)의 자바 인터프리터(Java Interpreter)를 이용해 한 줄씩 실행된다. 처음에는 인터프리터 언어로써 사용되다가, 성능 향상을 위하여 컴파일 언어의 장점을 가져왔다고 한다.
(출처 동일)
추가
JVM은 Java Virtual Machine의 약자로 자바 프로그램을 OS 환경과 상관없이 구동될 수 있도록 해주는 가상 머신입니다.
JVM의 역할 : OS에 구애받지 않는 실행
사용자가 작성한 자바 코드는 자바 컴파일러에 의해 자바 바이트 코드로 컴파일되고, JVM은 이 자바 바이트 코드(.class)를 사용자의 컴퓨터가 어떤 OS를 사용하든 상관없이 돌아가게끔 만들어줍니다.