- C, C++에서 사용
- 소스코드 전체의 명령어를 수집하고 재구성하여 하드웨어 플랫폼의 프로세서가 이해할 수 있는 기계어로 바로 변환
- 한번 실행파일을 만들고나면 실행속도가 훨씬 빠르다
- 전체코드를 컴파일하기에 보안적으로 노출 위험 x
- 인터프리터보다 코드를 변환하는 시간이 오래걸린다
- 컴파일된 실행파일, 즉 어셈블리어는 하드웨어 플랫폼에 종속적이여서 호환이 안되는 하드웨어 위에선 작동되지 않는다
- 실행파일로 컴파일시, 코드 내부에 에러가 있으면 컴파일도 되지 않고 전체가 실행이 되지 않는다
- Javascript, Python에 사용
- 소스코드르 한줄한줄씩 중간 형태로 해석한 뒤 실행
- 한 줄 단위로 해석하여 컴파일러보다 해석 속도가 빠르다
- 하드웨어 플랫폼에 종속적이지않아 어떤 하드웨어 위에서도 작동 가능
- 실행파일을 생성할 필요가 없다
- 컴파일러보다 실행속도가 느리다
- 특정 부분의 코드에서 에러가 발생해도 그전 코드까지는 실행에 문제가 없다
- 인터프리터가 웹에서 사용되는 배경
- Java는 컴파일러와 인터프리터 둘 다 적용된 특이한 구조
- .java 파일을 자바 컴파일러(javac)를 통해 .class라는 바이트 코드 파일로 변환하면 이를 인터프리터를 통해 한줄 단위로 해석하여 기계어로 변환하여 실행