맨위로가기

자바스크립트 엔진

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

자바스크립트 엔진은 자바스크립트 코드를 읽고 실행하는 프로그램으로, 웹 브라우저를 포함한 다양한 환경에서 사용된다. 최초의 자바스크립트 엔진은 1995년 넷스케이프의 브렌던 아이크에 의해 개발되었으며, 이후 구글의 V8 엔진 등장과 함께 JIT 컴파일 기술이 도입되면서 성능 경쟁이 심화되었다. 현재 V8, SpiderMonkey, JavaScriptCore, 차크라, Hermes 등 다양한 엔진이 존재하며, WebAssembly 지원을 통해 성능 향상을 이루고 있다. 자바스크립트 엔진은 ECMAScript 표준을 따르며, 각 엔진은 특정 웹 브라우저 또는 환경에 최적화되어 있다.

더 읽어볼만한 페이지

  • 자바스크립트 엔진 - V8 (자바스크립트 엔진)
    V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다.
  • 자바스크립트 엔진 - 차크라 (자바스크립트 엔진)
    차크라는 ECMAScript 5.1과 ECMAScript 2015의 일부 기능을 지원하는 자바스크립트 엔진이며, 마이크로소프트는 해당 엔진의 핵심 구성 요소를 ChakraCore라는 이름으로 오픈 소스화했다.
  • 자바스크립트 - HTML
    HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다.
  • 자바스크립트 - 비주얼 스튜디오
    비주얼 스튜디오는 마이크로소프트가 개발한 통합 개발 환경(IDE)으로, 다양한 프로그래밍 언어와 플랫폼을 지원하며 소프트웨어 개발에 필요한 도구와 기능을 제공한다.
자바스크립트 엔진
개요
종류인터프리터, JIT 컴파일러
목적자바스크립트 코드 실행
다른 이름ECMAScript 엔진
상세 정보
역할웹 브라우저 또는 기타 환경에서 자바스크립트 코드를 해석하고 실행하는 프로그램 또는 라이브러리
주요 기능자바스크립트 코드 파싱 (구문 분석)
코드 최적화
코드 실행
동작 방식
파싱자바스크립트 코드를 읽어 구문 분석 트리를 생성
컴파일 (선택 사항)일부 엔진은 코드를 중간 코드로 컴파일하여 실행 속도 향상
최적화생성된 코드를 최적화하여 성능 향상
실행최적화된 코드를 실행하여 결과 생성
주요 엔진
V8구글 크롬, Node.js
SpiderMonkey모질라 파이어폭스
JavaScriptCore (SquirrelFish/Nitro)사파리
Chakra (JScript)인터넷 익스플로러
ChakraCore마이크로소프트 엣지
GraalVM다중 언어 가상 머신
Nashorn오라클 자바
JerryScript사물 인터넷
웹 어셈블리 (WebAssembly)
설명자바스크립트 엔진에서 실행될 수 있는 새로운 유형의 코드
특징고성능, 낮은 수준의 바이트코드
활용C 또는 C++과 같은 언어로 작성된 코드를 웹에서 실행 가능하게 함

2. 역사

자바스크립트 엔진의 역사는 웹 브라우저의 발전과 밀접하게 연관되어 있다. 최초의 자바스크립트 엔진은 1995년 넷스케이프브렌던 아이크넷스케이프 내비게이터 웹 브라우저를 위해 개발한 스파이더몽키이다.[6] 초기 엔진은 자바스크립트 코드를 한 줄씩 읽어 실행하는 단순한 인터프리터였다.[5]

2008년 구글크롬 브라우저와 함께 선보인 V8 엔진은 JIT 컴파일 기술을 도입하여 성능을 크게 향상시켰다.[7][8] 이는 다른 브라우저 개발사들 간의 치열한 성능 경쟁, 이른바 '2차 브라우저 전쟁'을 촉발하는 계기가 되었다.[10] 이후 애플의 Nitro, 모질라의 개선된 스파이더몽키 등 여러 고성능 엔진들이 등장하며 자바스크립트 실행 속도는 비약적으로 발전했다.

2017년부터는 주요 자바스크립트 엔진들이 WebAssembly 지원을 추가하면서, 웹 환경에서 고성능 연산이 필요한 애플리케이션 실행의 가능성을 더욱 넓히고 있다.[4]

2. 1. 초기 엔진 (1995년 ~ 2008년)

2008년에서 2009년 사이에 있었던 2차 브라우저 전쟁 이전까지, 자바스크립트 엔진은 주로 '자바스크립트 인터프리터' 또는 '자바스크립트 구현체'로 불리며, 자바스크립트 소스 코드를 읽고 실행하는 단순한 인터프리터 역할을 했다.

최초의 자바스크립트 엔진은 1995년 넷스케이프브렌던 아이크넷스케이프 내비게이터 웹 브라우저를 위해 개발했다.[6] 코드명 스파이더몽키(SpiderMonkey)로 알려진 이 엔진은 C++로 구현되었으며, 아이크가 개발한 초기 자바스크립트 언어를 위한 기본적인 인터프리터였다.[5] 이후 스파이더몽키는 ECMA-262 에디션 3을 준수하도록 업데이트되었으며, 지속적인 개선을 거쳐 현재 파이어폭스 브라우저에서도 사용되고 있다.[6]

또 다른 초기 엔진으로는 라이노(Rhino)가 있다. 라이노는 자바로 작성된 자바스크립트 구현체로, 주로 넷스케이프 출신의 Norris Boyd가 개발했다. 스파이더몽키와 마찬가지로 라이노 역시 ECMA-262 에디션 3을 준수한다.

이 시기까지 자바스크립트 엔진의 가장 일반적인 실행 환경은 웹 브라우저였다. 웹 브라우저는 보통 공개된 API를 사용하여 문서 객체 모델(DOM)을 자바스크립트에서 조작할 수 있도록 하는 호스트 객체를 생성하는 역할을 했다. 이처럼 2008년 이전의 자바스크립트 엔진은 주로 소스 코드를 한 줄씩 읽어 실행하는 인터프리터 방식으로 작동했다.

2. 2. 2차 브라우저 전쟁과 JIT 컴파일 (2008년 ~ 2017년)

구글은 2008년 크롬 브라우저를 출시하며, 당시 경쟁 브라우저 엔진들보다 훨씬 빠른 성능을 보이는 V8 자바스크립트 엔진을 함께 선보였다.[7][8][17][18][19] V8 엔진의 핵심 혁신은 JIT 컴파일(Just-In-Time compilation) 기술 도입으로, 이는 자바스크립트 코드 실행 시간을 획기적으로 개선했다. 당시 모질라 역시 SpiderMonkey 엔진을 위해 JIT 컴파일 기술을 연구하고 있었다.[9]

V8 엔진의 뛰어난 성능은 다른 웹 브라우저 개발사들에게 큰 자극을 주었고, 이는 자바스크립트 엔진 성능 경쟁, 이른바 '2차 브라우저 전쟁'을 촉발하는 계기가 되었다. 경쟁사들은 V8 엔진에 대응하기 위해 자신들의 엔진을 서둘러 개선해야 했다.[10][20] 애플은 사파리 브라우저를 위해 Nitro 엔진(SquirrelFish Extreme 또는 SFX라고도 불림)을 개발했는데, 이 엔진은 이전 엔진보다 30% 더 나은 성능을 보여주었다.[11][21] 모질라는 이후 애플 Nitro 엔진의 일부 기술을 활용하여 자사의 SpiderMonkey 엔진을 개선했다.[12][22] 오페라 역시 자체적으로 개발한 Carakan 엔진을 도입하여 성능 향상을 꾀했으며, 특정 작업에서는 기존 엔진보다 두 배 이상 빠른 속도를 보이기도 했다.[23]

이러한 경쟁적인 개발 시기를 거쳐, 2017년부터는 주요 브라우저의 자바스크립트 엔진들이 WebAssembly 지원을 추가하기 시작했다.[4] 이를 통해 성능이 중요한 웹 애플리케이션 부분에서는 사전에 컴파일된 실행 파일을 자바스크립트와 함께 사용할 수 있게 되었다. WebAssembly 코드는 일반적인 자바스크립트 코드와 동일한 샌드박스 환경에서 실행된다.

2. 3. WebAssembly 등장 (2017년 이후)

2017년부터 주요 웹 브라우저의 자바스크립트 엔진들은 WebAssembly 지원을 추가하기 시작했다.[4] 이를 통해 성능이 중요한 부분에서는 미리 컴파일된 실행 파일을 사용할 수 있게 되었다. 자바스크립트 엔진은 일반적인 자바스크립트 코드와 동일한 샌드박스 환경에서 WebAssembly 코드를 실행한다.

3. 주요 엔진

3. 1. V8 (Google)

V8구글이 덴마크에서 개발한 오픈 소스 자바스크립트 엔진이다. 가장 널리 사용되는 자바스크립트 엔진 중 하나로, 구글 크롬을 비롯한 여러 크로미움 기반 웹 브라우저의 핵심 구성 요소이다. 또한, Node.js와 데노 같은 런타임 시스템에서도 사용된다. CEF나 일렉트론처럼 크로미움을 내장하는 소프트웨어 프레임워크를 기반으로 개발된 다양한 애플리케이션에서도 V8 엔진을 활용한다.

3. 2. 스파이더몽키 (Mozilla)

스파이더몽키는 최초의 자바스크립트 엔진으로, 초창기 넷스케이프 내비게이터 웹 브라우저에 탑재되었다. 현재는 모질라에서 파이어폭스 및 그 파생 브라우저를 지원하기 위해 개발하고 있다. 이 외에도 GNOME 셸의 확장 기능 지원을 위해서도 사용된다.

3. 3. JavaScriptCore (Apple)

JavaScriptCore는 애플에서 사파리 브라우저를 구동하기 위해 개발한 자바스크립트 엔진이다. 사파리 외에도 다른 WebKit 기반의 웹 브라우저들 및 번(Bun) 런타임 시스템 등에서도 활용되고 있다. 이 엔진은 KDE 프로젝트의 KJS 엔진을 기반으로 개발이 시작되었다.[13][24]

3. 4. 차크라 (Microsoft)

마이크로소프트가 개발한 자바스크립트 엔진이다. 처음에는 인터넷 익스플로러 브라우저용으로 개발되었으며[31][14], 이후 마이크로소프트는 초기 마이크로소프트 엣지 브라우저를 위해 이 엔진을 포크하여 사용했다.[14]

그러나 마이크로소프트마이크로소프트 엣지를 크로미움 기반으로 재개발하면서 자바스크립트 엔진을 구글V8으로 변경하였다.[14][25][26] 따라서 현재 마이크로소프트 엣지는 V8 엔진을 사용하며, 차크라 엔진은 인터넷 익스플로러에서 계속 사용되고 있다.[14]

3. 5. Hermes (Facebook)

헤르메스는 페이스북이 개발한 자바스크립트 엔진이다. 특히 React Native를 사용하는 안드로이드 앱 환경에 최적화되어 있다.[27]

3. 6. 기타 엔진

3. 6. 1. 활동하지 않는 프로젝트


  • Tamarin: 어도비 랩스에서 개발하였다.
  • Carakan: 오페라 소프트웨어가 개발하였다. 오페라 웹 브라우저 버전 10.50까지 사용되었으나, 2013년 출시된 오페라 14 버전부터 V8 엔진으로 전환되었다.[34][35]
  • Futhark: 오페라 소프트웨어가 개발하였다. 오페라 웹 브라우저 버전 0.50부터 10.10까지 사용되었으며, 2010년 3월 출시된 오페라 10.50 버전부터 Carakan 엔진으로 대체되었다.
  • Narcissus: 오픈 소스 엔진으로, 스파이더몽키를 개발한 Brendan Eich가 작성하였다.

4. 구현체

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

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

응용 프로그램방언과 최신 버전ECMAScript 에디션
구글 크롬, V8 엔진자바스크립트ECMA-262, 에디션 6
모질라 모질라 파이어폭스, 게코 레이아웃 엔진, 스파이더몽키, 라이노자바스크립트 1.8.5ECMA-262, 에디션 6
사파리, Nitro 엔진자바스크립트ECMA-262, 에디션 6
마이크로소프트 엣지, 차크라 엔진자바스크립트ECMA-262, 에디션 6
오페라, Carakan 엔진 (오페라 2015까지)일부 자바스크립트 1.5, J스크립트 확장이 포함된 ECMAScript[36]ECMA-262, 에디션 5.1
KHTML 레이아웃 엔진, KDE의 캉커러자바스크립트 1.5ECMA-262, 에디션 3
어도비 애크러뱃자바스크립트 1.5ECMA-262, 에디션 3
오픈라즐로자바스크립트 1.4ECMA-262, 에디션 3
맥스 (소프트웨어)자바스크립트 1.5ECMA-262, 에디션 3
ANT Galio 3RMAI 확장이 포함된 자바스크립트 1.5ECMA-262, 에디션 3


참조

[1] 웹사이트 A Guide to JavaScript Engines for Idiots http://developer.tel[...] Telerik Developer Network 2018-12-08
[2] 웹사이트 How Blink Works https://docs.google.[...] Google 2024-03-12
[3] 웹사이트 Documentation · V8 https://v8.dev/docs Google 2024-03-03
[4] 웹사이트 WebAssembly: What’s the big deal? https://medium.com/c[...] 2024-03-03
[5] 웹사이트 Brendan Eich – CEO of Brave https://www.youtube.[...] 2018-02-07
[6] 웹사이트 New JavaScript Engine Module Owner http://brendaneich.c[...] 2011-06-21
[7] 웹사이트 Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome https://www.pcgamesh[...] Computec Media AG 2010-06-28
[8] 웹사이트 Lifehacker Speed Tests: Safari 4, Chrome 2 https://lifehacker.c[...] 2021-05-08
[9] 웹사이트 TraceMonkey: JavaScript Lightspeed, Brendan Eich's Blog https://brendaneich.[...] 2020-07-22
[10] 간행물 Mozilla asks, 'Are we fast yet?' https://www.wired.co[...] 2019-01-18
[11] 문서 Safari 5 Released http://www.prnewswir[...]
[12] 웹사이트 Opera 10.5 brings new JavaScript engine https://web.archive.[...] CBS Interactive 2012-01-30
[13] 웹사이트 Companies and Organizations that have contributed to WebKit https://trac.webkit.[...] 2019-04-13
[14] citation New year, new browser – The new Microsoft Edge is out of preview and now available for download https://blogs.window[...] Microsoft 2020-01-15
[15] 웹사이트 Microsoft Edge and Chromium Open Source: Our Intent https://github.com/M[...] Microsoft Edge Team 2018-12-08
[16] 웹사이트 A Guide to JavaScript Engines for Idiots http://developer.tel[...] Telerik Developer Network 2016-03-17
[17] 웹사이트 Speed test: Google Chrome beats Firefox, IE, Safari https://www.cnet.com[...] CBS Interactive 2019-11-09
[18] 웹사이트 Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome https://www.pcgamesh[...] Computec Media AG 2019-11-09
[19] 웹사이트 Lifehacker Speed Tests: Safari 4, Chrome 2 https://lifehacker.c[...] Lifehacker 2019-11-09
[20] 웹사이트 Mozilla asks, 'Are we fast yet?' https://www.wired.co[...] 2019-01-18
[21] 웹사이트 Apple Releases Safari 5 https://www.prnewswi[...] Cision PR Newswire 2019-11-09
[22] 웹사이트 Opera 10.5 brings new JavaScript engine https://www.cnet.com[...] CBS Interactive 2019-11-09
[23] 웹사이트 Need for speed spurs Opera JavaScript overhaul https://www.cnet.com[...] CBS Interactive 2019-11-09
[24] 웹사이트 Companies and Organizations that have contributed to WebKit https://trac.webkit.[...] 2019-04-13
[25] citation Microsoft Edge: Making the web better through more open source collaboration https://blogs.window[...] Microsoft 2018-12-06
[26] 웹사이트 Microsoft Edge and Chromium Open Source: Our Intent https://github.com/M[...] Microsoft Edge Team 2018-12-08
[27] citation Facebook just released this new open source JavaScript engine https://www.zdnet.co[...] ZDNet 2019-07-12
[28] 웹인용 A Guide to JavaScript Engines for Idiots http://developer.tel[...] Telerik Developer Network 2016-03-17
[29] 웹인용 Opera 10.5 brings new JavaScript engine https://web.archive.[...] CBS Interactive 2012-01-30
[30] 웹인용 Need for speed spurs Opera JavaScript overhaul https://web.archive.[...] CBS Interactive 2017-11-11
[31] 인용 Internet Explorer 9 Beta Next - New IE9 Builds Every 8 Weeks http://news.softpedi[...] SoftNews NET SRL 2010-06-28
[32] 웹인용 Targeting Edge vs. Legacy Engines in JsRT APIs https://msdn.microso[...] Microsoft.com 2015-09-10
[33] 인용 Adventures in JSR-292 or How To Be A Duck Without Really Trying http://www.wiki.jvml[...] Oracle 2011-07-19
[34] 웹인용 Dev.Opera - Blog http://my.opera.com/[...] My.opera.com 2016-05-08
[35] 웹인용 Dev.Opera - Blog http://my.opera.com/[...] My.opera.com 2016-05-08
[36] 웹인용 Web specifications support in Opera Presto http://www.opera.com[...] Opera Software ASA 2010-06-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com