Движок JavaScript
Движок 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.
- V8 — движок JavaScript с открытым исходным кодом, разрабатываемый датским отделением компании Google. Используется в браузерах на основе Chromium, а также в Maxthon 3.
Другие
- KJS[англ.] — ECMAScript/JavaScript-движок среды рабочего стола KDE, изначально разработанный Гарри Портеном[англ.] для браузера Konqueror
- Narcissus[англ.] — движок JavaScript с открытым исходным кодом, написанный Бренданом Айхом также на JavaScript’е
- Tamarin от Adobe Systems
- Nitro (изначально SquirrelFish) — движок JavaScript в Safari 4
- Chakra в Internet Explorer 9[1].
- Carakan от Opera Software, используется в Opera, начиная с версии 10.55
Эволюция производительности
В 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, SpiderMonkey с Gecko, KJS с KHTML, Rhino по умолчанию ни с одним из браузерных движков не используется. Иногда возможны другие комбинации, например, 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, редакция 5 |
| Mozilla Firefox, Gecko, SpiderMonkey и Rhino | JavaScript 1.8.1 | ECMA-262, редакция 5 |
| Opera | ECMAScript с некоторыми расширениями JavaScript 1.5 и JScript[12] |
ECMA-262, редакция 5.1 |
| 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 SR (20 марта 2010). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Ryan, Paul. Firefox to get massive JavaScript performance boost (англ.). arstechnica.com. Ars Technica © 2010 Condé Nast Digital (22 августа 2008). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Garen, Geoffrey. Announcing SquirrelFish (2 июня 2008). Дата обращения: 30 июня 2008. Архивировано 1 мая 2012 года.
- ↑ Lipskas, Vygantas. Apple Safari 4 (11 июня 2008). Дата обращения: 30 июня 2008. Архивировано 1 мая 2012 года.
- ↑ Stephen Shankland. Speed test: Google Chrome beats Firefox, IE, Safari. cnet.com Business Tech. CNET News[англ.] (2 сентября 2008). Дата обращения: 28 июня 2010. Архивировано 1 мая 2012 года.
- ↑ 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 июля 2009). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Purdy, Kevin. Lifehacker Speed Tests: Safari 4, Chrome 2, and More (англ.). Lifehacker (6 ноября 2009). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Stephen Shankland, CNET News.com. Third Chrome beta another notch faster (англ.). Builder AU (3 ноября 2008). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Step aside, Chrome, for Squirrelfish Extreme — News Архивная копия от 6 октября 2009 на Wayback Machine, Builder AU
- ↑ Ying, Charles. SquirrelFish Extreme: Fastest JavaScript Engine Yet (англ.) (19 сентября 2008). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Shankland, Stephen. Firefox counters Google's browser speed test (англ.). CNET News[англ.] (3 сентября 2008). Дата обращения: 30 июня 2010. Архивировано 1 мая 2012 года.
- ↑ Web specifications support in Opera Presto. Opera.com. Opera Software ASA. Дата обращения: 28 июня 2010. Архивировано 28 января 2011 года.
Ссылки
- Speed-Battle — онлайн-тест скорости выполнения JavaScript в браузерах
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.