자바스크립트 엔진

자바스크립트 엔진(JavaScript engine)은 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터이다. 자바스크립트 엔진은 전통적인 인터프리터일 수도 있고, 특정한 방식으로 바이트코드로 JIT 컴파일을 할 수 있다. 여러 목적으로 자바스크립트 엔진을 사용하지만, 대체적으로 웹 브라우저에서 사용된다.

역사 
2008~2009년에 2차 브라우저 전쟁 이전에 자바스크립트 엔진(자바스크립트 인터프리터, 자바스크립트 구현체로 불렸음)은 단순히 자바스크립트 소스 코드를 읽고 실행했던 인터프리터였다.

최초의 자바스크립트 엔진은 넷스케이프 내비게이터 웹 브라우저를 위해 넷스케이프의 브렌던 아이크에 의해 개발되었다. 코드명 스파이더몽키의 엔진은 C++로 구현되어 있다. 그 뒤로 (자바스크립트 1.5에서) ECMA-262 에디션 3을 준수하며 업데이트되었다. Norris Boyd(넷스케이프 출신)가 주로 개발한 라이노 엔진은 자바의 자바스크립트 구현체이다. 스파이더몽키처럼 라이노는 ECMA-262 에디션 3을 준수한다. 이 기술의 응용 프로그램에는 애플 사파리 4의 Nitro, 구글 크롬의 V8, 모질라 파이어폭스 3.5의 스파이더몽키가 있다.

현재까지 자바스크립트의 가장 일반적인 호스트 환경은 웹 브라우저이다. 웹 브라우저는 일반적으로 퍼블릭 API를 사용하여 문서 객체 모델(DOM)을 자바스크립트에 반영하는 일을 맡는 호스트 오브젝트를 생성한다.

자바스크립트 엔진

활동 중인 프로젝트 
 라이노: 모질라 재단이 운영, 오픈 소스, 모두 자바로 개발
 스파이더몽키: 최초의 자바스크립트 엔진. 넷스케이프 내비게이터에서 지원되며 오늘날은 모질라 파이어폭스를 지원
 V8 - 오픈 소스. 덴마크에서 구글이 개발. 구글 크롬의 일부
 웹킷 - 오픈 소스. Nitro가 홍보하고 사파리용으로 애플이 개발.
 KJS - KDE의 ECMAScript/자바스크립트 엔진. 캉커러 웹 브라우저를 위해 KDE 프로젝트의 Harri Porten이 개발
 차크라 (JScript9):인터넷 익스플로러용
 차크라 (자바스크립트): 마이크로소프트 엣지용
 Nashorn: OpenJDk의 일부인 오픈 소스. Oracle Java Languages and Tool Group이 개발
 Juce: C++ 애플리케이션 프레임워크. 자바스크립트의 문법 일부를 사용한 사용자 지정 임베디드 인터프리터 포함.
 제리스크립트: 사물 인터넷용의 매우 가벼운 자바스크립트 엔진

활동하지 않는 프로젝트 
 Tamarin: 어도비 랩스에 의해 개발
 Carakan: 오페라 소프트웨어가 개발. 오페라 웹 브라우저 버전 10.50까지 사용하다가 오페라 14 (2013년 출시)에서 V8로 전환.
 Futhark: 오페라 소프트웨어가 개발. 0.50부터 10.10까지 오페라 웹 브라우저에 쓰이다가 2010년 3월 출시된 오페라 10.50의 Carakan에 의해 대체됨.
 Narcissus: 오픈 소스. 스파이더몽키를 개발한 Brendan Eich가 작성함.

구현체 

자바스크립트는 ECMA스크립트의 방언이며 수많은 응용 프로그램, 특히 웹 브라우저에서 지원된다. 방언에는 언어, 표준 라이브러리, 또 W3C 특화 문서 객체 모델(DOM)과 같은 관련 API의 확장이 포함될 수 있다. 즉, 응용 프로그램이 공통 하위 집합의 지원 기능과 APi(코어)만을 사용하여 작성되지 않을 경우 하나의 방언으로 작성된 응용 프로그램은 다른 것과는 호환되지 않을 수 있음을 뜻한다.

방언과 구현체는 별개이다. 방언은 한 언어의 종류이며 언어(방언)의 구현체는 해당 언어로 작성된 프로그램을 실행한다.

같이 보기 
 브라우저 속도 테스트

각주

외부 링크 
 Are We Fast Yet? - A daily comparison of bleeding-edge JavaScript engines for Mozilla 모질라 파이어폭스, 구글 크롬 and Apple Safari.
 Peacekeeper - Browser speed test
 SunSpider  - Online JavaScript speed test
 Speed-Battle - Online JavaScript speed test
 Descripter - A different open source JavaScript engine on Java platform

엔진