V8 (движок JavaScript)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
V8 JavaScript Engine
V8 JavaScript engine logo 2.svg
Тип Движок JavaScript
Разработчик Google
Написана на C++[5] и JavaScript
Операционная система Android, Microsoft Windows, Mac OS X, FreeBSD, HP webOS[1][2] и Linux
Аппаратная платформа x86, ARM[3], MIPS[4]
Последняя версия 8.1 (25 февраля 2020)
Состояние Активная разработка
Лицензия BSD
Сайт v8.dev
Commons-logo.svg Медиафайлы на Викискладе

V8 — движок JavaScript с открытым исходным кодом, распространяемый по лицензии BSD. Разработан датским отделением компании Google.

Особенности V8[править | править код]

Разработка JavaScript-движка V8 началась в датском отделении Google в городе Орхусе. Ведущим разработчиком стал Ларс Бак. Основными проблемами, которые пришлось решать разработчикам в движке, стали производительность и масштабируемость[6]. Первая лабораторная версия движка появилась 3 июля 2008 года[7], а уже 2 сентября была официально представлена версия 0.2.5, вошедшая в первый публичный релиз Chromium[8].

Ларс Бак считал[9], что краеугольными камнями V8 являются:

  • Компиляция исходного кода JavaScript непосредственно в собственный машинный код, минуя стадию промежуточного байт-кода.
  • Эффективная система управления памятью, приводящая к быстрому объектному выделению и маленьким паузам сборки «мусора»[10].
    • V8 приостанавливает исполнение кода во время выполнения сборки «мусора».
    • Уменьшает влияние и воздействие приостановки приложения при сборке «мусора».
    • V8 может точно определять, где находятся в памяти объекты и указатели, что позволяет избежать утечки памяти при ложной идентификации объектов в качестве указателей.
  • Введение скрытых классов и встроенных кэшей, ускоряющих доступ к свойствам и вызовам функций.

V8 исполняет JavaScript-сценарии в особых «контекстах», которые по сути являются отдельными виртуальными машинами. Правда в одном процессе может работать только одна виртуальная машина, несмотря на возможность использования нескольких потоков[11]. В Chromium это обходится мультипроцессовой архитектурой, повышающей также стабильность и безопасность, реализуя таким образом механизм «песочницы»[12]. Таким образом, несмотря на динамическую природу JavaScript, разработчикам удалось применить методы, характерные для реализации классических объектно-ориентированных языков, такие как компиляция кода «на лету», внутреннее кэширование, точный процесс сборки мусора, снэпшоттинг при создании контекстов[6][11].

Движок V8 отличается от других движков (JScript, SpiderMonkey, JavaScriptCore, Nitro) высокой производительностью[13][14][15][16][17].

Продукты, использующие V8[править | править код]

Браузеры[править | править код]

  • Chromium — веб-браузер с открытым исходным кодом, на основе которого создаётся ряд браузеров, наиболее популярным из которых является Chrome — веб-браузер компании Google
  • Maxthon — веб-браузер со встроенным блокиратором рекламы, использующий два движка рендеринга: WebKit и Trident[18];
  • Браузер Android[19] — мобильный браузер, входящий в Android OS.

Операционные системы[править | править код]

  • Android — операционная система от Google, предназначенная для коммуникаторов, нетбуков и планшетов, V8 используется, начиная с Android Froyo.
  • HP webOS — операционная система от Hewlett-Packard для коммуникаторов, нетбуков и планшетов, движок V8 используется во встроенном браузере.
  • Google Chrome OS — операционная система от Google на базе проекта Chromium, ориентированная на облачные сервисы, движок является важным компонентом всей операционной системы.

См. также[править | править код]

Примечания[править | править код]

  1. Использование V8 в webOS Архивировано 24 июля 2010 года. (англ.)
  2. Обзор новой версии webOS 2.0 и встроенного браузера Архивная копия от 4 сентября 2010 на Wayback Machine (рус.)
  3. Поддержка архитектур
  4. Официальная поддержка с версии 3.8.2
  5. The v8-js Open Source Project on Open Hub: Languages Page — 2006.
  6. 1 2 Ларс Бак в Санкт-Петербурге, 2009-12 (рус.)
  7. V8 JavaScript Engine initial export
  8. Запуск V8, Chromium и Google Chrome, 2008-09 (англ.)
  9. Обзор возможностей, 2008-09 (англ.)
  10. Эффективный сбор «мусора» (англ.)
  11. 1 2 Обзор возможностей движка V8 на серверах (рус.)
  12. Обзор мультипроцессорной архитектуры (англ.)
  13. Design Elements (англ.)
  14. Speed test: Google Chrome beats Firefox, IE, Safari (англ.)
  15. Быстрый запуск веб-приложений (рус.)
  16. Mozilla сравнивает производительность движков Архивная копия от 11 сентября 2010 на Wayback Machine (англ.)
  17. Проверить производительность движка JavaScript, используемого браузером, можно запустив тесты V8 Benchmark Suite Архивировано 4 марта 2013 года., SunSpider, Kraken
  18. http://www.maxthon.com/blog/maxthon-3-what-you-always-wanted-to-know/ We switched to Maxthon-modified version of Google’s open source V8 engine.
  19. Включение движка V8 в мобильный браузер Froyo Архивная копия от 1 января 2011 на Wayback Machine (недоступная ссылка с 23-11-2013 [2491 день])

Ссылки[править | править код]