컴파일러와 인터프리터는 사용자가 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 만들어준다는 역할은 동일
특정 언어로 만든 소스 코드를 실행시키기 위해서 필요한 과정을 담당
전체 소스 코드를 머신코드로 한번에 변경(머신 코드)
소스 코드를 분석하는데 오랜 시간이 걸림
머신 코드를 CPU에서 직접 실행할 수 있으므로 소요 시간은 짧음
전체 소스 코드를 대상으로 분석하므로 더 많은 메모리가 필요
전체 프로그램을 스캔한 후에 에러가 발생하므로 디버깅이 어려움
C, C++
전체 소스 코드를 머신코드로 한줄씩 변경(바이트 코드)
소스 코드를 분석하는데 짧은 시간 소요
바이트 코드를 CPU에서 직접 실행하지 않고 가상 머신(Virtual Machine)에서 해당 코드를 실행하므로 오버헤드에 따른 소요 시간이 길다
한줄씩 처리하므로 적은 메모리가 필요
한줄씩 처리하므로 디버깅이 간편
Java, Ruby, Python
자바의 경우 인터프리터의 단점을 해소하기 위해, JIT Complier를 추가적으로 사용하고 있음