BT

Nashorn - OpenJDKに提案された新JavaScriptエンジン

| 作者: Charles Humble フォローする 903 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2012年12月3日. 推定読書時間: 3 分 |

原文(投稿日:2012/11/29)へのリンク

 

Oracleで多言語対応リーダを務めるJim Laskey氏が,NashornというJVMベースの新しいJavaScript実装をOpenJDKプロジェクトとして提案している。現行のJVM JavaScript実装であるRhinoの後継という位置付けだ。1997年にNetscapeで最初に開発されたRhinoは,その後多少の修正が加えられながら,2006年12月のJava SEバージョン6リリースから公開されている。NashornはJava 8の一部として提供が予定されている。

"目標はネイティブJVM上で,軽量でハイパフォーマンスなJavaScriptを提供することです。" Laskey氏はOpenJDKのプロジェクト提案にこう書いている。

JavaScriptソースコードを走査するパーサAPI,パーサの生成するAST[Abstract Syntax Tree, 抽象構文木]をJVMバイトコードに変換するコンパイラ,生成されたバイトコードの実行をサポートするランタイムなどが本プロジェクトの範囲に含まれますが,それらに限定されるものではありません。本プロジェクトの提供するJavaScript実行環境はECMA-262 Edition 5.1に準拠するとともに,同標準の変更に伴う新たなガイドラインにも適応する予定です。

Nashorn(ドイツ語でサイ/rhinocerosのこと)という名前こそRhinoに由来しているが,コードベースはJava 7のInvokeDynamicバイトコード命令を駆使したまったく新しいものだ。このためNashornは,Rhinoに比較してコンパクトかつ極めて高速で,より組み込み/モバイルデバイスに適した実装に仕上がっている。Beagle BoardRaspberry Piのどちらでも動作するのがその証拠だ。

9月にJavaOneでLaskey氏と話したとき,チームとして他のJavaScript実装に負けないパフォーマンスを追求している,と語っていたので,最新のブラウザに匹敵するパフォーマンスが得られていることは間違いないだろう。同じJavaOneではTwitterのSam Pullara氏が,Nashornを使ってMustache.jsテンプレートを実行したときの様子について話してくれた。

何よりもすべてが正しく動作することに驚きました – Nashornを使っていて正確性に関するバグに遭遇したことは,これまで一度もありません。パフォーマンス面関しても,これまで試したもっとも難しいテストでさえRhinoの20倍以上高速なのです。

他にはNetBeansの開発チームが,自分たちのJavaScript実装をNashornで完全に再実装している。この変更によって特に,多数のJavaScriptファイルを走査するプロジェクトでのIDE起動時間が大幅に短くなった。

Rhinoに対するパフォーマンスの向上以外にも,Nashornには他のJavaScript実装に対するアドバンテージがある。充実した Java ライブラリに加えて,クライアント側ではJavaFX,サーバ側ではJSPにもアクセスが可能なのだ。また相互運用性をサポートするために,Nashornでは Dynalink を採用している。これはTwitterから Oracleに移籍したAttila Szegedi氏がInvokeDynamicを基盤として開発したオープンソースのメタオブジェクトプロトコルで,プログラム実行環境内のオブジェクトに対してより高位の操作を規定するための手段を提供する。DynalinkはApacheライセンスで公開されていて,プレーンな Java オブジェクト用のリンカを含んでいる。

Nashornの提案に合わせてブログも用意された。現在は12月6日を期日とする投票が始まったところだ。NashornはECMA-262に100%準拠済なので,OpenJDKプロジェクトでの作業は一般利用に向けてのパフォーマンスと実装固めに集中するだろう。OpenJDKではTwitter,IBM,Red Hatなどの参加が見込まれている。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT