Движок JavaScript — специализированная программа, выполняющая JavaScript, в частности, в браузерах.

История До 2008—2009 гг. движок JavaScript (называемый также интерпретатор JavaScript и реализация JavaScript) реализовывался как интерпретатор, считывающий и исполняющий исходный код на JavaScript.

Первый движок JavaScript создан Бренданом Айхом в Netscape Communications для браузера Netscape Navigator. Движок получил кодовое имя SpiderMonkey и был реализован на языке программирования Си. Впоследствии он обновлялся и в отношении него была достигнута совместимость с третьей редакцией спецификации ECMA-262. Движок JavaScript Rhino написан преимущественно Норрисом Бойдом ( (тоже из Netscape) и представляет собой реализацию JavaScript на языке программирования Java. Как и SpiderMonkey, Rhino совместим с третьей редакцией спецификации ECMA-262. С данной спецификацией также совместимы Nitro из Apple Safari, V8 из Google Chrome и TraceMonkey из Mozilla Firefox 3.5.

Наиболее распространённой средой исполнения JavaScript является браузер. Как правило, браузеры предоставляют открытый API для создания объектов среды исполнения (), предоставляющих возможность работы с DOM в JavaScript.

Другой распространённой средой исполнения JavaScript является веб-сервер. Веб-сервер, поддерживающий JavaScript, предоставляет объекты среды исполнения, представляющие HTTP-запрос и HTTP-ответ. Манипулируя этими объектами, программа на JavaScript может динамически генерировать страницы. Например, технология ASP для веб-сервера IIS позволяет реализовывать серверную часть в том числе и на языке программирования JScript (реализация JavaScript от компании Microsoft). Другой пример — это веб-сервер , предоставляющий помимо объектов, традиционных для серверов, еще и объекты, традиционные для браузеров. Преимуществом такого подхода является то, что один и тот же код может быть разделён между сервером и клиентом.

Движки JavaScript Основные движки JavaScript:

Mozilla SpiderMonkey — самый первый движок JavaScript, созданный Бренданом Айхом в Netscape Communications. Rhino, разрабатываемый Mozilla Foundation движок JavaScript с открытым исходным кодом, полностью написанный на Java. Tamarin.

Google V8 — движок JavaScript с открытым исходным кодом, разрабатываемый датским отделением компании Google. Используется в браузерах на основе Chromium, а также в Maxthon 3.

Другие  — ECMAScript/JavaScript-движок среды рабочего стола KDE, изначально разработанный для браузера Konqueror  — движок JavaScript с открытым исходным кодом, написанный Бренданом Айхом также на JavaScript’е Tamarin от Adobe Systems Nitro (изначально SquirrelFish) — движок JavaScript в Safari 4 Chakra в Internet Explorer 9. Carakan от Opera Software, используется в Opera, начиная с версии 10.55

Эволюция производительности В Firefox 3.5 (выпущен 30 июня 2009 года) используется техника оптимизации, предполагающая «в некоторых случаях улучшение производительности в 20-40 раз».

2 июня 2008 года команда разработчиков WebKit представила SquirrelFish — новый движок JavaScript, в котором достигалось значительное повышение скорости интерпретирования скриптов браузером Safari. Этот движок был одной из новых возможностей Safari 4. Тестовая версия появилась 11 июня 2008 года; в итоге движок был переименован в Nitro.

С тех пор началась гонка разработчиков браузеров по увеличению скорости движков JavaScript. С 2008 года пальму первенства в ней удерживает Google Chrome: это подтверждает множество независимых экспериментов. С появлением Squirrelfish Extreme от разработчиков WebKit и Tracemonkey от Mozilla производительность JavaScript в Google Chrome перестала расцениваться как самая высокаяStep aside, Chrome, for Squirrelfish Extreme — News , Builder AU. Однако датское подразделение Google разработало движок JavaScript V8 со значительно увеличенной производительностью JavaScript в Google Chrome 2.

Как правило, браузер имеет браузерный движок, занимающийся отрисовкой страниц, и движок JavaScript, что упрощает тестирование, переиспользование или использование в других проектах. Например, Caracan используется с Presto, Nitro с WebKit, SpiderMonkey с Gecko, KJS с KHTML, Rhino по умолчанию ни с одним из браузерных движков не используется. Иногда возможны другие комбинации, например, V8 с WebKit в Google Chrome. Движок JavaScript позволяет разработчикам получить доступ к функциональности (работа с сетью, с DOM, с внешними событиями, с HTML5 video, canvas, storage), необходимой для управления веб-браузером.

Sunspider — , используемый для измерения производительности движков JavaScript в более чем дюжине тестов, каждый из которых заточен на отдельную часть языка JavaScript. Sunspider не предназначен для тестирования возможностей, связанных с чем-то помимо вычислений (HTML, CSS, работа с сетью).

Реализации JavaScript — диалект ECMAScript, поддерживаемый многими приложениями, в частности, браузерами. Диалекты иногда включают расширения языка или стандартную библиотеку и соответствующие , такие как Document Object Model от W3C. Это означает, что приложения, написанные для одного диалекта, могут быть несовместимы с другими, если только они не используют общее подмножество поддерживаемых возможностей и API.

Нет чёткой разницы между диалектом и реализацией. Диалект языка — это вариация языка с существенными особенностями в то время как реализация языка/диалекта выполняет программу, написанную на этом диалекте.

ПриложениеДиалект и последняя версияРедакция ECMAScriptGoogle Chrome, движок V8JavaScriptECMA-262, редакция 5Mozilla Firefox, Gecko, SpiderMonkey и RhinoJavaScript 1.8.1ECMA-262, редакция 5OperaECMAScript с некоторыми расширениями JavaScript 1.5и JScriptECMA-262, редакция 5.1KHTML layout engine, Konqueror из KDE и Safari от AppleJavaScript 1.5ECMA-262, редакция 3Adobe AcrobatJavaScript 1.5ECMA-262, редакция 3Платформа OpenLaszloJavaScript 1.4ECMA-262, редакция 3JavaScript 1.5ECMA-262, редакция 3JavaScript 1.5 с расширениями RMAIECMA-262, редакция 3

Примечания

Ссылки Speed-Battle — онлайн-тест скорости выполнения JavaScript в браузерах

Категория:Движки JavaScript Категория:Браузеры