V8 JavaScriptエンジン
V8はGoogle Chromeを動かしているJavaScriptエンジンの名前です。これは、私たちが書いたJavaScriptを受け取り、Chromeでブラウジング中に実行するものです。
V8はJavaScriptエンジンであり、JavaScriptコードを解析し実行します。DOMやその他のWeb Platform API(これらすべてがランタイム環境を構成します)は、ブラウザによって提供されます。
素晴らしい点は、JavaScriptエンジンがホストされているブラウザから独立していることです。この重要な特徴がNode.jsの台頭を可能にしました。V8は2009年にNode.jsを動かすエンジンとして選ばれ、Node.jsの人気が爆発的に高まるにつれて、V8は今やJavaScriptで書かれた膨大な量のサーバーサイドコードを動かすエンジンとなりました。
Node.jsのエコシステムは巨大であり、V8のおかげでElectronのようなプロジェクトによってデスクトップアプリも動かしています。
その他のJSエンジン
他のブラウザも独自のJavaScriptエンジンを持っています。
- FirefoxにはSpiderMonkeyがあります。
- SafariにはJavaScriptCore(Nitroとも呼ばれます)があります。
- Edgeは元々Chakraをベースにしていましたが、最近ではChromiumとV8エンジンを使用して再構築されました。
その他にも多くのエンジンが存在します。
これらのエンジンはすべて、JavaScriptが使用する標準であるECMA ES-262標準(ECMAScriptとも呼ばれる)を実装しています。
パフォーマンスの追求
V8はC++で書かれており、継続的に改良されています。移植性が高く、Mac、Windows、Linux、その他のいくつかのシステムで動作します。
このV8の紹介では、V8の実装の詳細については触れません。それらはより権威のあるサイト(例:V8公式サイト)で見つけることができ、また、しばしば根本的に変更されるためです。
V8は、他のJavaScriptエンジンと同様に、WebとNode.jsエコシステムを高速化するために常に進化しています。
Webの世界では、長年にわたってパフォーマンス競争が続いており、私たち(ユーザーであり開発者)は、年々より高速で最適化されたマシンを手に入れることができるため、この競争から多くの恩恵を受けています。
コンパイル
JavaScriptは一般的にインタプリタ言語と見なされていますが、現代のJavaScriptエンジンはもはやJavaScriptを単に解釈するだけでなく、コンパイルします。
これは2009年にFirefox 3.5にSpiderMonkey JavaScriptコンパイラが追加されて以来のことであり、他のすべてのエンジンもこの考え方に追随しました。
JavaScriptは、実行を高速化するために、V8によって内部でジャストインタイム(JIT)コンパイルされます。
これは直感に反するように思えるかもしれませんが、2004年のGoogle Mapsの導入以来、JavaScriptは数十行のコードを実行する程度の言語から、ブラウザで実行される数千から数十万行の完全なアプリケーションへと進化しました。
私たちのアプリケーションは、単なるフォームの検証ルールや簡単なスクリプトではなく、ブラウザ内で何時間も実行されるようになりました。
この新しい世界では、JavaScriptをコンパイルすることは完全に理にかなっています。JavaScriptを準備するのに少し時間がかかるかもしれませんが、一度完了すれば、純粋なインタプリタコードよりもはるかに高性能になります。