Движок JavaScript | это... Что такое Движок JavaScript? (original) (raw)
Движок JavaScript — специализированная программа, обрабатывающая JavaScript, в частности, в браузерах.
Содержание
История
До 2008-2009 гг. движок JavaScript (называемый также интерпретатор JavaScript и реализация JavaScript) реализовывался как интерпретатор, считывающий и исполняющий исходный код на JavaScript.
Первый движок JavaScript создан Бренданом Айхом в Netscape Communications для браузера Netscape Navigator. Движок получил кодовое имя SpiderMonkey и был реализован на языке программирования Си. Впоследствии он обновлялся и в отношении него была достигнута совместимость с третьей редакцией спецификации ECMA-262. Движок JavaScript Rhino написан преимущественно Норрисом Бойдом (англ. Norris Boyd (тоже из Netscape) и представляет собой реализацию JavaScript на языке программирования Java. Как и SpiderMonkey, Rhino совместим с третьей редакцией спецификации ECMA-262. С данной спецификацией также совместимы Nitro из Apple Safari, V8 из Google Chrome и TraceMonkey из Mozilla Firefox 3.5.
Наиболее распространённой средой исполнения JavaScript является браузер. Как правило браузеры предоставляют открытый API для создания объектов среды исполнения (англ. host objects), предоставляющих возможность работы с DOM в JavaScript.
Другой распространненой средой исполнения JavaScript является веб-сервер. Веб-сервер, поддерживающий JavaScript, предоставляет объекты среды исполнения, представляющие HTTP-запрос и HTTP-ответ. Манипулируя этими объектами, программа на JavaScript может динамически генерировать страницы. Например, технология ASP для веб-сервера IIS позволяет реализовывать серверную часть в том числе и на языке программирования JScript (реализация JavaScript от компании Microsoft). Другой пример это веб-сервер Jaxer (англ.), предоставляющий помимо объектов традиционных для серверов еще и объекты традиционные для браузеров. Преимуществом такого подхода является то, что один и тот же код может быть разделён между сервером и клиентом.
Движки JavaScript
Основные движки JavaScript:
Mozilla
- SpiderMonkey — самый первый движок JavaScript, созданный Бренданом Айхом в Netscape Communications.
- Rhino, разрабатываемый Mozilla Foundation движок JavaScript с открытым исходным кодом, полностью написанный на Java.
- Tamarin[en].
- V8 — движок JavaScript с открытым исходным кодом, разрабатываемый датским отделением компании Google. Используется в браузерах на основе Chromium, а также в Maxthon 3.
Другие
- KJS (англ.) — ECMAScript/JavaScript-движок среды рабочего стола KDE, изначально разработанный Гарри Портеном (англ.) для браузера Konqueror
- Narcissus (англ.) — движок JavaScript с открытым исходным кодом, написанный Бренданом Айхом
- Tamarin от Adobe Systems
- Nitro (изначально SquirrelFish) — движок JavaScript в Safari 4
- Chakra в Internet Explorer 9[1].
- Carakan от Opera Software, используется в Opera, начиная с версии 10.50.
Эволюция производительности
В Firefox 3.5 (выпущен 30 июня 2009 года) используется техника оптимизации, предполагающая «в некоторых случаях улучшение производительности в 20-40 раз»[2].
2 июня 2008 года команда разработчиков WebKit представила SquirrelFish[3] — новый движок JavaScript, в котором достигалось значительное улучшение скорости интерпретирования скриптов браузером Safari[4]. Этот движок был одной из новых возможностей Safari 4. Тестовая версия появилась 11 июня 2008 года; в итоге движок был переименован в Nitro.
С тех пор началась гонка разработчиков браузеров по увеличению скорости движков JavaScript. С 2008 года пальму первенства в ней удерживает Google Chrome: это подтверждает множество независимых экспериментов[5][6][7]. С появлением Squirrelfish Extreme от разработчиков WebKit и Tracemonkey от Mozilla, производительность JavaScript в Google Chrome перестала расцениваться как самая высокая[8][9][10][11]. Однако датское подразделение Google разработало движок JavaScript V8, со значительно увеличенной производительностью JavaScript в Google Chrome 2.
Как правило, браузер имеет браузерный движок, занимающийся отрисовкой страниц, и движок JavaScript, что упрощает тестирование, переиспользование или использование в других проектах. Например, Caracan используется с Presto, Nitro с WebKit, Rhino и SpiderMonkey с Gecko, KJS с KHTML, по умолчанию, ни с одним из браузерных движков не используется. Иногда возможны другие комбинации, например, V8 с WebKit в Google Chrome. Движок JavaScript позволяет разработчикам получить доступ к функциональности (работа с сетью, с DOM, с внешними событиями, с HTML5 video, canvas, storage), необходимой для управлением веб-браузером.
Sunspider — инструмент тестирования производительности браузера (англ.), используемый для измерения производительности движков JavaScript в более чем дюжине тестов, каждый из которых заточен на отдельную часть языка JavaScript. Sunspider не предназначен для тестирования возможностей, связанных с чем-то помимо вычислений (HTML, CSS, работа с сетью).
Реализации
JavaScript — диалект ECMAScript, поддерживаемый многими приложениями, в частности, браузерами. Диалекты иногда включают расширения языка или стандартную библиотеку и соответствующие API, такие как Document Object Model от W3C. Это означает, что приложения, написанные для одного диалекта могут быть несовместимы с другим, если только они не используют общее подмножество поддерживаемых возможностей и API.
Нет чёткой разницы между диалектом и реализацией. Диалект языка — это вариация языка с существенными особенностями в то время как реализация языка/диалекта выполняет программу, написанную на этом диалекте.
Приложение | Диалект и последняя версия | Редакция ECMAScript |
---|---|---|
Google Chrome, движок V8 | JavaScript | ECMA-262, редакция 3 |
Mozilla Firefox, Gecko, SpiderMonkey и Rhino | JavaScript 1.8.1 | ECMA-262, редакция 3 |
Opera | ECMAScript с некоторыми расширениями JavaScript 1.5и JScript[12] | ECMA-262, редакция 3 |
KHTML layout engine, Konqueror из KDE и Safari от Apple | JavaScript 1.5 | ECMA-262, редакция 3 |
Adobe Acrobat | JavaScript 1.5 | ECMA-262, редакция 3 |
Платформа OpenLaszlo | JavaScript 1.4 | ECMA-262, редакция 3 |
Max/MSP (англ.) | JavaScript 1.5 | ECMA-262, редакция 3 |
ANT Galio 3 (англ.) | JavaScript 1.5 с расширениями RMAI | ECMA-262, редакция 3 |
Примечания
- ↑ Oiaga, Marius Internet Explorer 9 Beta Next – New IE9 Builds Every 8 Weeks (англ.). softpedia.com. SoftNews NET SRL (20 March 2010). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Ryan, Paul Firefox to get massive JavaScript performance boost (англ.). arstechnica.com. Ars Technica © 2010 Condé Nast Digital (22 August 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Garen, Geoffrey Announcing SquirrelFish (2 июня 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2008.
- ↑ Lipskas, Vygantas Apple Safari 4 (11 июня 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2008.
- ↑ Stephen Shankland Speed test: Google Chrome beats Firefox, IE, Safari. cnet.com Business Tech. CNET News (англ.) (2 сентября 2008). Архивировано из первоисточника 1 мая 2012. Проверено 28 июня 2010.
- ↑ Riemann, Link Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome - Update: Firefox 3.5 Final (англ.). PC Games Hardware. Computec Media AG (3 July 2009). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Purdy, Kevin Lifehacker Speed Tests: Safari 4, Chrome 2, and More (англ.). Lifehacker (6 November 2009). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Stephen Shankland, CNET News.com Third Chrome beta another notch faster (англ.). Builder AU (3 November 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Step aside, Chrome, for Squirrelfish Extreme — News, Builder AU
- ↑ Ying, Charles SquirrelFish Extreme: Fastest JavaScript Engine Yet (англ.) (19 September 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Shankland, Stephen Firefox counters Google's browser speed test (англ.). CNET News (англ.) (3 September 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
- ↑ Web specifications support in Opera Presto. Opera.com. Opera Software ASA. Архивировано из первоисточника 28 января 2011. Проверено 28 июня 2010.
Ссылки
- Speed-Battle — онлайн-тест скорости выполнения JavaScript в браузерах
ECMAScript | |
---|---|
Диалекты | ActionScript · Caja · JavaScript (движки) · JScript · JScript .NET · Objective-J · QtScript · WMLScript |
Движки(сравнение) | Carakan · Futhark · InScript · JavaScriptCore (SquirrelFish) · JScript · KJS · Linear B · Narcissus · QtScript · Rhino · YAJI · SpiderMonkey (TraceMonkey, JägerMonkey) · Tamarin · V8 · Chakra |
Фреймворки,библиотеки | JavaScript(сравнение) Client-side(список, фреймворки AJAX) Ample SDK · CougarXML · Dojo · Echo · Ext JS · Google Web Toolkit · jQuery · Lively Kernel · midori · MochiKit · MooTools · OpenLink AJAX · Prototype · Pyjamas · qooxdoo · Rialto · Rico · script.aculo.us · SmartClient · SproutCore · Spry · YUI Library Server-side(сравнение) AppJet · Jaxer · Node.js Библиотеки(список) SWFObject · SWFAddress ActionScript PureMVC Множественныереализации Cappuccino (JavaScript, Objective-J) |
Люди | Брендан Айк · Дуглас Крокфорд · Джон Резиг |
Другое | DHTML · Ecma International · JSAN · JSDoc · JSLint · JSON · JSSS · Sputnik · SunSpider · CommonJS |