V8 (движок JavaScript)
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, ориентированная на облачные сервисы, движок является важным компонентом всей операционной системы.
См. также
[править | править код]Примечания
[править | править код]- ↑ Использование V8 в webOS Архивировано 24 июля 2010 года. (англ.)
- ↑ Обзор новой версии webOS 2.0 и встроенного браузера Архивная копия от 4 сентября 2010 на Wayback Machine (рус.)
- ↑ Поддержка архитектур . Дата обращения: 10 марта 2013. Архивировано 4 апреля 2017 года.
- ↑ Официальная поддержка с версии 3.8.2
- ↑ Chrome Platform Status . Дата обращения: 20 мая 2024.
- ↑ https://github.com/v8/v8/graphs/contributors?type=a
- ↑ The v8-js Open Source Project on Open Hub: Languages Page — 2006.
- ↑ https://github.com/v8/v8/blob/master/LICENSE.v8
- ↑ 1 2 Ларс Бак в Санкт-Петербурге Архивная копия от 8 марта 2013 на Wayback Machine, 2009-12 (рус.)
- ↑ V8 JavaScript Engine initial export . Дата обращения: 10 марта 2013. Архивировано 3 октября 2014 года.
- ↑ Запуск V8, Chromium и Google Chrome Архивная копия от 13 марта 2015 на Wayback Machine, 2008-09 (англ.)
- ↑ Обзор возможностей Архивная копия от 3 декабря 2010 на Wayback Machine, 2008-09 (англ.)
- ↑ Эффективный сбор «мусора» Архивная копия от 17 сентября 2013 на Wayback Machine (англ.)
- ↑ 1 2 Обзор возможностей движка V8 на серверах Архивная копия от 29 июля 2013 на Wayback Machine (рус.)
- ↑ Обзор мультипроцессорной архитектуры Архивная копия от 19 мая 2013 на Wayback Machine (англ.)
- ↑ Design Elements Архивная копия от 17 сентября 2013 на Wayback Machine (англ.)
- ↑ Speed test: Google Chrome beats Firefox, IE, Safari Архивная копия от 19 января 2012 на Wayback Machine (англ.)
- ↑ Быстрый запуск веб-приложений Архивная копия от 9 августа 2013 на Wayback Machine (рус.)
- ↑ Mozilla сравнивает производительность движков Архивная копия от 11 сентября 2010 на Wayback Machine (англ.)
- ↑ Проверить производительность движка JavaScript, используемого браузером, можно запустив тесты V8 Benchmark Suite Архивировано 4 марта 2013 года., SunSpider Архивная копия от 27 декабря 2012 на Wayback Machine, Kraken Архивная копия от 1 июля 2020 на Wayback Machine
- ↑ 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.
- ↑ Включение движка V8 в мобильный браузер Froyo Архивная копия от 1 января 2011 на Wayback Machine (недоступная ссылка с 23-11-2013 [3995 дней])