컴파일러(Compiler)
- 프로그램 전체를 한번에 번역한 후 실행한다.
- 컴파일러는 프로그램을 기계어로 번역하여 실행 파일을 만든다.
- 목적 프로그램 생성으로 메모리를 사용한다.
- 컴파일러에 의해 번역된 프로그램은 언제든지 실행될 수 있는 실행 가능한 프로그램이다.
- 모든 소스코드를 모아서 일괄적으로 번역하기 때문에 번역 시간이 오래 걸린다.
- 하지만, 번역된 실행 파일을 실행하면 속도가 빠르다는 장점이 있다.
- 특정 시스템에서 번역된 실행파일이 다른 시스템에서는 실행되지 않는다
대표적인 컴파일러 언어 : C, C++, 포트란
인터프리터(Interpreter)
- 고급 언어로 작성된 명령문을 한 줄씩 읽어서 바로 실행한다.
- 목적 프로그램을 생성하지 않는다.
- 메모리를 사용하지 않는다.
- 즉, 프로그램을 번역하는 동시에 실행하며, 번역 시간이 거의 없다.
- 하지만, 실행 속도가 느리다는 단점이 있다.
- 주요 스크립트 언어에서 대부분 사용 (웹이 작동하는 방식이 전형적인 인터프리터 기법)
대표적인 인터프리터 언어 : Basic, javascript, Python, HTML, ASP, PHP, Perl
하이브리드(Hybrid)
- 컴파일 기법과 인터프리트 기법을 결합한 것.
- 소스코드를 일부는 미리 번역해서 실행 파일을 만들고, 나머지 부분은 인터프리터를 사용하여 실행한다.
- 이러한 방식으로 인하여, 컴파일러와 인터프리터의 장단점을 적절히 활용하여 실행 속도와 번역 시간을 모두 개선할 수 있다.
- 한번 작성된 프로그램은 어떤 컴퓨터 시스템에서든지 즉시 실행이 가능하다.
- 인터프리트 방식의 단점인 소스프로그램의 공개과 컴파일러 방식의 단점인 특정 컴퓨터에 종속적이라는 단점을 해결한다.
대표적인 하이브리드 언어 : JAVA, C#
Java는 어떤 언어인가?

Java가 처음 출시된 1995년 당시, Java는 "컴파일 언어"로 분류되었다. 이유는 Java가 다른 인터프리터 언어들과는 달리 소스코드를 컴파일해서 실행 파일을 만들 수 있기 때문이다. 이 실행 파일은 운영체제에 따라서 실행되는데, Windows에서는 ".exe" 확장자를 갖는 실행 파일이 만들어지고, Unix 계열 운영체제에서는 ".class" 확장자를 갖는 실행 파일이 만들어진다.
하지만, 이러한 실행 파일은 JVM에서 실행되는 바이트코드(Bytecode)를 포함하고 있으며, 이 바이트코드는 인터프리터에 의해 실행된다. 따라서 Java는 실제로는 컴파일러와 인터프리터를 결합한 하이브리드 언어이며, 최근에는 Java가 하이브리드 언어로 분류되는 것이 일반적이다.