V8 — это название JavaScript-движка, на котором работает Google Chrome. Именно он берёт наш JavaScript и выполняет его, пока мы бродим по сайтам в Chrome.
V8 — это JavaScript-движок, то есть он парсит и выполняет JavaScript-код. А DOM и остальные API веб-платформы (всё вместе они образуют среду выполнения) предоставляются браузером.
Самое интересное, что JavaScript-движок не зависит от браузера, внутри которого он работает. Именно эта ключевая особенность и сделала возможным появление Node.js. V8 был выбран движком для Node.js ещё в 2009 году, и по мере взрывного роста популярности Node.js V8 стал движком, на котором теперь работает невероятное количество серверного кода на JavaScript.
Экосистема Node.js огромна, и благодаря V8 он лежит и в основе десктопных приложений — например, в проектах вроде Electron.
У других браузеров есть собственные JavaScript-движки:
- В Firefox — SpiderMonkey
- В Safari — JavaScriptCore (также известный как Nitro)
- Edge изначально был основан на Chakra, но позже был пересобран на Chromium и движке V8.
Существуют и многие другие.
Все эти движки реализуют стандарт ECMA ES-262, также называемый ECMAScript, — стандарт, который использует JavaScript.
V8 написан на C++ и постоянно совершенствуется. Он портируем и работает на Mac, Windows, Linux и ряде других систем.
В этом введении в V8 мы опустим детали его реализации: их можно найти на более авторитетных ресурсах (например, на официальном сайте V8), к тому же со временем они меняются, порой радикально.
V8 постоянно развивается — как и другие JavaScript-движки — чтобы ускорять веб и экосистему Node.js.
В вебе уже много лет идёт гонка за производительностью, и мы (как пользователи и разработчики) немало выигрываем от этой конкуренции: год за годом мы получаем всё более быстрые и оптимизированные машины.
JavaScript принято считать интерпретируемым языком, но современные JavaScript-движки уже не просто интерпретируют JavaScript — они его компилируют.
Так происходит с 2009 года, когда в Firefox 3.5 добавили JavaScript-компилятор SpiderMonkey, и все подхватили эту идею.
Внутри V8 компилирует JavaScript с помощью компиляции «на лету» (just-in-time, JIT), чтобы ускорить выполнение.
Это может показаться нелогичным, но со времён появления Google Maps в 2004 году JavaScript эволюционировал из языка, на котором обычно выполнялись пара десятков строк кода, до полноценных приложений в тысячи и сотни тысяч строк, работающих в браузере.
Теперь наши приложения могут работать в браузере часами, а не быть лишь набором правил валидации форм или простыми скриптами.
В этом новом мире компиляция JavaScript вполне оправданна: пусть подготовка JavaScript к выполнению займёт чуть больше времени, зато потом он будет гораздо производительнее, чем чисто интерпретируемый код.