V8 (движок JavaScript)

V8 JavaScript Engine
Логотип программы V8 JavaScript Engine
Тип Движок JavaScript
Разработчики Ларс Бак, Кристиан Плеснер Хансен[вд], Каспер Лунд[вд], Мадс Сиг Агер[вд], Бенедикт Мёрер[вд] и Ян Го[вд][6]
Написана на C++[7] и JavaScript
Операционные системы Android, Microsoft Windows, macOS, FreeBSD, LG webOS[1][2] и Linux
Аппаратные платформы x86, ARM[3], MIPS[4]
Последняя версия 11.4[5] (24 мая 2023)
Репозиторий chromium.googlesource.com/…
Состояние Активная разработка
Лицензия модифицированная лицензия BSD[вд][8]
Сайт v8.dev
Логотип Викисклада Медиафайлы на Викискладе

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

Особенности V8

[править | править код]

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

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

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

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

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

Продукты, использующие V8

[править | править код]
  • Chromium — веб-браузер с открытым исходным кодом, на основе которого создаётся ряд браузеров, наиболее популярным из которых является Chrome — веб-браузер компании Google
  • Maxthon — веб-браузер со встроенным блокиратором рекламы, использующий два движка рендеринга: WebKit и Trident[21];
  • Браузер Android[22] — мобильный браузер, входящий в 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. Поддержка архитектур. Дата обращения: 10 марта 2013. Архивировано 4 апреля 2017 года.
  4. Официальная поддержка с версии 3.8.2
  5. Chrome Platform Status. Дата обращения: 20 мая 2024.
  6. https://github.com/v8/v8/graphs/contributors?type=a
  7. The v8-js Open Source Project on Open Hub: Languages Page — 2006.
  8. https://github.com/v8/v8/blob/master/LICENSE.v8
  9. 1 2 Ларс Бак в Санкт-Петербурге Архивная копия от 8 марта 2013 на Wayback Machine, 2009-12 (рус.)
  10. V8 JavaScript Engine initial export. Дата обращения: 10 марта 2013. Архивировано 3 октября 2014 года.
  11. Запуск V8, Chromium и Google Chrome Архивная копия от 13 марта 2015 на Wayback Machine, 2008-09 (англ.)
  12. Обзор возможностей Архивная копия от 3 декабря 2010 на Wayback Machine, 2008-09 (англ.)
  13. Эффективный сбор «мусора» Архивная копия от 17 сентября 2013 на Wayback Machine (англ.)
  14. 1 2 Обзор возможностей движка V8 на серверах Архивная копия от 29 июля 2013 на Wayback Machine (рус.)
  15. Обзор мультипроцессорной архитектуры Архивная копия от 19 мая 2013 на Wayback Machine (англ.)
  16. Design Elements Архивная копия от 17 сентября 2013 на Wayback Machine (англ.)
  17. Speed test: Google Chrome beats Firefox, IE, Safari Архивная копия от 19 января 2012 на Wayback Machine (англ.)
  18. Быстрый запуск веб-приложений Архивная копия от 9 августа 2013 на Wayback Machine (рус.)
  19. Mozilla сравнивает производительность движков Архивная копия от 11 сентября 2010 на Wayback Machine (англ.)
  20. Проверить производительность движка JavaScript, используемого браузером, можно запустив тесты V8 Benchmark Suite Архивировано 4 марта 2013 года., SunSpider Архивная копия от 27 декабря 2012 на Wayback Machine, Kraken Архивная копия от 1 июля 2020 на Wayback Machine
  21. http://www.maxthon.com/blog/maxthon-3-what-you-always-wanted-to-know/ Архивная копия от 27 февраля 2014 на Wayback Machine We switched to Maxthon-modified version of Google’s open source V8 engine.
  22. Включение движка V8 в мобильный браузер Froyo Архивная копия от 1 января 2011 на Wayback Machine (недоступная ссылка с 23-11-2013 [3995 дней])