자바스크립트 엔진
자바스크립트 엔진(JavaScript engine)은 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터이다. 자바스크립트 엔진은 전통적인 인터프리터일 수도 있고, 특정한 방식으로 바이트코드로 JIT 컴파일을 할 수 있다.[1] 여러 목적으로 자바스크립트 엔진을 사용하지만, 대체적으로 웹 브라우저에서 사용된다.[2][3]
역사
편집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):인터넷 익스플로러용[4][5]
- 차크라 (자바스크립트): 마이크로소프트 엣지용
- Nashorn: OpenJDk의 일부인 오픈 소스. Oracle Java Languages and Tool Group이 개발[6]
- Juce: C++ 애플리케이션 프레임워크. 자바스크립트의 문법 일부를 사용한 사용자 지정 임베디드 인터프리터 포함.
- 제리스크립트: 사물 인터넷용의 매우 가벼운 자바스크립트 엔진
활동하지 않는 프로젝트
편집구현체
편집자바스크립트는 ECMA스크립트의 방언이며 수많은 응용 프로그램, 특히 웹 브라우저에서 지원된다. 방언에는 언어, 표준 라이브러리, 또 W3C 특화 문서 객체 모델(DOM)과 같은 관련 API의 확장이 포함될 수 있다. 즉, 응용 프로그램이 공통 하위 집합의 지원 기능과 APi(코어)만을 사용하여 작성되지 않을 경우 하나의 방언으로 작성된 응용 프로그램은 다른 것과는 호환되지 않을 수 있음을 뜻한다.
방언과 구현체는 별개이다. 방언은 한 언어의 종류이며 언어(방언)의 구현체는 해당 언어로 작성된 프로그램을 실행한다.
응용 프로그램 | 방언과 최신 버전 | ECMAScript 에디션 |
---|---|---|
구글 크롬, V8 엔진 | 자바스크립트 | ECMA-262, 에디션 6 |
모질라 모질라 파이어폭스, 게코 레이아웃 엔진, 스파이더몽키, 라이노 | 자바스크립트 1.8.5 | ECMA-262, 에디션 6 |
사파리, Nitro 엔진 | 자바스크립트 | ECMA-262, 에디션 6 |
마이크로소프트 엣지, 차크라 엔진 | 자바스크립트 | ECMA-262, 에디션 6 |
오페라, Carakan 엔진 (오페라 2015까지) | 일부 자바스크립트 1.5, J스크립트 확장이 포함된 ECMAScript[9] | ECMA-262, 에디션 5.1 |
KHTML 레이아수 엔진, KDE의 캉커러 | 자바스크립트 1.5 | ECMA-262, 에디션 3 |
어도비 애크러뱃 | 자바스크립트 1.5 | ECMA-262, 에디션 3 |
오픈라즐로 | 자바스크립트 1.4 | ECMA-262, 에디션 3 |
맥스 (소프트웨어) | 자바스크립트 1.5 | ECMA-262, 에디션 3 |
ANT Galio 3 | RMAI 확장이 포함된 자바스크립트 1.5 | ECMA-262, 에디션 3 |
같이 보기
편집각주
편집- ↑ Looper, Jen (2015년 9월 21일). “A Guide to JavaScript Engines for Idiots”. Telerik Developer Network. 2016년 3월 17일에 확인함.
- ↑ Shankland, Stephen (2010년 3월 2일). “Opera 10.5 brings new JavaScript engine”. 《CNET》. CBS Interactive. 2013년 10월 3일에 원본 문서에서 보존된 문서. 2012년 1월 30일에 확인함.
- ↑ Shankland, Stephen (2009년 2월 5일). “Need for speed spurs Opera JavaScript overhaul”. 《CNET》. CBS Interactive. 2013년 3월 22일에 원본 문서에서 보존된 문서. 2017년 11월 11일에 확인함.
- ↑ Marius Oiaga (2010년 3월 20일), “Internet Explorer 9 Beta Next - New IE9 Builds Every 8 Weeks”, 《softpedia.com》 (SoftNews NET SRL), 2010년 6월 28일에 확인함
- ↑ “Targeting Edge vs. Legacy Engines in JsRT APIs”. Microsoft.com. 2015년 9월 10일에 확인함.
- ↑ J. Laskey (2011년 7월 19일), 《Adventures in JSR-292 or How To Be A Duck Without Really Trying》 (PDF), Oracle
- ↑ “Dev.Opera - Blog”. My.opera.com. 2016년 5월 8일에 확인함.
- ↑ “Dev.Opera - Blog”. My.opera.com. 2016년 5월 8일에 확인함.
- ↑ “Web specifications support in Opera Presto”. 《Opera.com》. Opera Software ASA. 2012년 6월 4일에 원본 문서에서 보존된 문서. 2010년 6월 28일에 확인함.
외부 링크
편집- Are We Fast Yet? - A daily comparison of bleeding-edge JavaScript engines for Mozilla 모질라 파이어폭스, 구글 크롬 and Apple Safari.
- Peacekeeper - Browser speed test
- SunSpider Archived 2012년 2월 1일 - 웨이백 머신 - Online JavaScript speed test
- Speed-Battle - Online JavaScript speed test
- Descripter - A different open source JavaScript engine on Java platform