{{위키데이터 속성 추적}}
{{자바스크립트사이드바}}
'''자바스크립트 엔진'''(JavaScript engine)은 [[자바스크립트]] 코드를 실행하는 프로그램 또는 [[인터프리터]]이다. 자바스크립트 엔진은 전통적인 인터프리터일 수도 있고, 특정한 방식으로 [[바이트코드]]로 [[JIT 컴파일]]을 할 수 있다.<ref>{{웹 인용|url=http://developer.telerik.com/featured/a-guide-to-javascript-engines-for-idiots/ |title=A Guide to JavaScript Engines for Idiots |last=Looper |first=Jen |publisher=[[Telerik]] Developer Network |date=2015-09-21 |accessdate=2016-03-17 }}</ref> 여러 목적으로 자바스크립트 엔진을 사용하지만, 대체적으로 [[웹 브라우저]]에서 사용된다.<ref name=therace10>{{웹 인용 |url=http://news.cnet.com/8301-30685_3-20000110-264.html |title=Opera 10.5 brings new JavaScript engine |last=Shankland |first=Stephen |date=2010-03-02 |work=CNET |publisher=CBS Interactive |accessdate=2012-01-30 |archive-date=2013-10-03 |archive-url=https://web.archive.org/web/20131003051354/http://news.cnet.com/8301-30685_3-20000110-264.html |url-status=dead }}</ref><ref name=needforspeed>{{웹 인용 |url=http://news.cnet.com/8301-17939_109-10157475-2.html |title=Need for speed spurs Opera JavaScript overhaul |last=Shankland |first=Stephen |date=February 5, 2009 |work=[[CNET]] |publisher=CBS Interactive |확인날짜=2017-11-11 |archive-date=2013-03-22 |archive-url=https://web.archive.org/web/20130322065158/http://news.cnet.com/8301-17939_109-10157475-2.html |url-status=dead }}</ref>

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

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

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

== 자바스크립트 엔진 ==
=== 활동 중인 프로젝트 ===
* [[라이노 (자바스크립트 엔진)|라이노]]: 모질라 재단이 운영, 오픈 소스, 모두 자바로 개발
* [[스파이더몽키]]: 최초의 자바스크립트 엔진. [[넷스케이프 내비게이터]]에서 지원되며 오늘날은 [[모질라 파이어폭스]]를 지원
* [[크롬 V8|V8]] - 오픈 소스. 덴마크에서 구글이 개발. 구글 크롬의 일부
* [[웹킷]] - 오픈 소스. Nitro가 홍보하고 [[사파리 (웹 브라우저)|사파리]]용으로 [[애플]]이 개발.
* [[KJS (KDE)|KJS]] - KDE의 ECMAScript/자바스크립트 엔진. 캉커러 웹 브라우저를 위해 KDE 프로젝트의 [[Harri Porten]]이 개발
* [[차크라|차크라 (JScript9)]]:[[인터넷 익스플로러]]용<ref>{{인용|url=http://news.softpedia.com/news/Internet-Explorer-9-Beta-Next-New-IE9-Builds-Every-8-Weeks-138013.shtml |title=Internet Explorer 9 Beta Next - New IE9 Builds Every 8 Weeks |date=2010-03-20 |accessdate=2010-06-28 |author=Marius Oiaga |work=softpedia.com |publisher=SoftNews NET SRL}}</ref><ref>{{웹 인용|url=https://msdn.microsoft.com/en-us/library/dn903710(v=vs.94).aspx |title=Targeting Edge vs. Legacy Engines in JsRT APIs |accessdate=2015-09-10 |publisher=Microsoft.com}}</ref>
* [[차크라 (자바스크립트 엔진)|차크라 (자바스크립트)]]: [[마이크로소프트 엣지]]용
* [[Nashorn]]: OpenJDk의 일부인 오픈 소스. Oracle Java Languages and Tool Group이 개발<ref>{{인용|url=http://www.wiki.jvmlangsummit.com/images/c/ce/Nashorn.pdf|title=Adventures in JSR-292 or How To Be A Duck Without Really Trying|date=2011-07-19|author=J. Laskey|publisher=Oracle}}</ref>
* [[Juce]]: [[C++]] [[애플리케이션 프레임워크]]. 자바스크립트의 문법 일부를 사용한 사용자 지정 임베디드 인터프리터 포함.
* [[제리스크립트]]: 사물 인터넷용의 매우 가벼운 자바스크립트 엔진

=== 활동하지 않는 프로젝트 ===
* [[Tamarin]]: [[어도비 시스템즈|어도비 랩스]]에 의해 개발
* [[프레스토 (레이아웃 엔진)|Carakan]]: [[오페라 소프트웨어]]가 개발. [[오페라 (웹 브라우저)|오페라]] 웹 브라우저 버전 10.50까지 사용하다가 오페라 14 (2013년 출시)에서 [[크롬 V8|V8]]로 전환.<ref>{{웹 인용|url=http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit |title=Dev.Opera - Blog |publisher=My.opera.com |date= |accessdate=2016-05-08}}</ref><ref>{{웹 인용|url=http://my.opera.com/ODIN/blog/opera-14-for-android-is-out |title=Dev.Opera - Blog |publisher=My.opera.com |date= |accessdate=2016-05-08}}</ref>
* [[프레스토 (레이아웃 엔진)|Futhark]]: 오페라 소프트웨어가 개발. 0.50부터 10.10까지 오페라 웹 브라우저에 쓰이다가 2010년 3월 출시된 오페라 10.50의 Carakan에 의해 대체됨.
* [[Narcissus]]: 오픈 소스. 스파이더몽키를 개발한 Brendan Eich가 작성함.

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

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

{| class="wikitable"
|- style="background:#ccf;"
!응용 프로그램
!방언과 최신 버전
!ECMAScript 에디션
|-
|[[구글 크롬]], [[크롬 V8|V8]] 엔진
|[[자바스크립트]]
|ECMA-262, 에디션 6
|-
|모질라 [[모질라 파이어폭스]], [[게코 (레이아웃 엔진)|게코]] 레이아웃 엔진, [[스파이더몽키]], [[라이노 (자바스크립트 엔진)|라이노]]
|자바스크립트 1.8.5
|ECMA-262, 에디션 6
|-
|[[사파리 (웹 브라우저)|사파리]], [[웹킷|Nitro]] 엔진
|[[자바스크립트]]
|ECMA-262, 에디션 6
|-
|[[마이크로소프트 엣지]], [[차크라]] 엔진
|[[자바스크립트]]
|ECMA-262, 에디션 6
|-
|[[오페라 (웹 브라우저)|오페라]], [[프레스토 (레이아웃 엔진)|Carakan]] 엔진 (오페라 2015까지)
|일부 자바스크립트 1.5, [[J스크립트]] 확장이 포함된 ECMAScript<ref>{{웹 인용 |url=http://www.opera.com/docs/specs/#ecmascript |title=Web specifications support in Opera Presto |work=Opera.com |publisher=Opera Software ASA |accessdate=2010-06-28 |보존url=https://archive.today/20120604/http://www.opera.com/docs/specs/#ecmascript |보존날짜=2012-06-04 |url-status=dead }}</ref>
|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
|}

== 같이 보기 ==
* [[브라우저 속도 테스트]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* [http://arewefastyet.com/ Are We Fast Yet?] - A daily comparison of bleeding-edge JavaScript engines for Mozilla [[모질라 파이어폭스]], [[구글 크롬]] and [[사파리 (웹 브라우저)|Apple Safari]].
* [http://peacekeeper.futuremark.com Peacekeeper] - Browser speed test
* [http://www2.webkit.org/perf/sunspider/sunspider.html SunSpider] {{웨이백|url=http://www2.webkit.org/perf/sunspider/sunspider.html |date=20120201010014 }} - Online JavaScript speed test
* [http://www.speed-battle.com Speed-Battle] - Online JavaScript speed test
* [https://web.archive.org/web/20170913232431/http://descripter.org/ Descripter] - A different open source JavaScript engine on Java platform

{{ECMA스크립트}}
{{자바스크립트}}

[[분류:자바스크립트|엔진]]
[[분류:자바스크립트 엔진| ]]