Движок 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

Google

Другие

Эволюция производительности

В 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

Примечания

  1. 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.
  2. Ryan, Paul Firefox to get massive JavaScript performance boost (англ.). arstechnica.com. Ars Technica © 2010 Condé Nast Digital (22 August 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
  3. Garen, Geoffrey Announcing SquirrelFish (2 июня 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2008.
  4. Lipskas, Vygantas Apple Safari 4 (11 июня 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2008.
  5. Stephen Shankland Speed test: Google Chrome beats Firefox, IE, Safari. cnet.com Business Tech. CNET News (англ.) (2 сентября 2008). Архивировано из первоисточника 1 мая 2012. Проверено 28 июня 2010.
  6. 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.
  7. Purdy, Kevin Lifehacker Speed Tests: Safari 4, Chrome 2, and More (англ.). Lifehacker (6 November 2009). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
  8. Stephen Shankland, CNET News.com Third Chrome beta another notch faster (англ.). Builder AU (3 November 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
  9. Step aside, Chrome, for Squirrelfish Extreme — News, Builder AU
  10. Ying, Charles SquirrelFish Extreme: Fastest JavaScript Engine Yet (англ.) (19 September 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
  11. Shankland, Stephen Firefox counters Google's browser speed test (англ.). CNET News (англ.) (3 September 2008). Архивировано из первоисточника 1 мая 2012. Проверено 30 июня 2010.
  12. Web specifications support in Opera Presto. Opera.com. Opera Software ASA. Архивировано из первоисточника 28 января 2011. Проверено 28 июня 2010.

Ссылки

Просмотр этого шаблона 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