Webアプリの進化に追随するGoogle Chrome興味深い技術的側面(4/6 ページ)

» 2008年09月17日 08時00分 公開
[Jeff Cogswell,eWEEK]
eWEEK

JavaScriptエンジン:V8

 ChromeはV8と呼ばれる新しいJavaScriptエンジンを搭載している。V8はGoogleのデンマークの開発チームによって進められたオープンソースプロジェクトだ(V8はダウンロードし、コンパイルできる。わたしもVisual Studio 2008に組み込み、問題なくコンパイルできた。コマンドラインサンプルアプリケーションもちゃんと起動することができた)

 V8エンジンには面白い歴史がある。大急ぎでこの記事を書いている間にも、いくつかの事実を発見したが、限られた時間では、それらをすべてここで紹介することはできない。このエンジンは、最終的に合流することになったSunの2つのグループによって開発された。一方のグループはSelfという言語向けにパワフルな仮想マシンを開発し、他方のグループはStrongtalkと呼ぶSmalltalkの実装に取り組んでいた。Selfグループは、ネステッドインラインという不気味な響きだが、実際には高度な最適化を実現する仕組みを開発した。その成果がパワフルなSmalltalkの実装だった。

 しかし、それはついに陽の目を見ることはなかった。Smalltalkは世界を席巻するような技術にはならなかったのだ。結局、Sunはこの製品をオープンソースとしてリリースした。GoogleはSelfチームのエキスパートの(少なくとも)1人を雇い入れ、システムのパーツを再生し、JavaScript仮想マシンを構築した。この仮想マシンがV8と呼ばれるものだ。

 V8はオリジナルのSelfやStrongtalkシステムでは一般化しなかったものの、アセンブラなど、幾つかのコアピース上で構築された。その結果、V8はJavaScriptを仮想マシンで実行でき、最適化ガベージコレクション(差分ポインタなどを含む)やマルチスレッドプロセッシングの実装も可能なネイティブコードにコンパイルできるようになった。単なるスクリプティング言語ではなく、フルランタイムなのである。

 V8はまた、JSCREと呼ぶサードパーティーのオープンソースライブラリを利用している。このライブラリは、クラシックなPerlスタイルの正規表現ライブラリであるPCREのJavaScript対応バージョンだ。

(V8についてさらに詳しく知りたい向きは、ソースコードをダウンロードし、ファイル名をチェックしてみればよい。assembler-ia32.ccやassembler-arm.cc、codegen-ia32.cc、codegen-arm.cc、compiler.cc、v8threads.cc、macro-assembler-ia32.ccといった名前が見つかるだろう。これらは、このアーキテクチャの多様な機能を暗示している。もし興味があれば、ソースコードを開いて詳細に検討してみるのも面白い。とくにobjects.ccという名前のファイルはかなり魅力的だ)

Editorial items that were originally published in the U.S. Edition of “eWEEK” are the copyrighted property of Ziff Davis Enterprise Inc. Copyright (c) 2011. All Rights Reserved.

注目のテーマ