InfoQ

News

JSR-292 の草案レビューが発表される

作者 R.J. Lorimer, 翻訳者 岡田 英久 投稿日 2008年6月12日 午前8時38分

コミュニティ
Java
トピック
言語設計,
JCP Standards,
アナウンス,
動的言語,
パフォーマンス&スケーラビリティ
タグ
JVM,
言語,
JCP
John Rose 氏(source)の発表によると、JSR-292(source) の草案レビューが JavaOne のすぐ後に続いてリリースされた(source)。JSR-292(source) は Java 仮想マシンに invokedynamic 命令を定義しようとするものだ。

InfoQ は昨年 10 月、invokedynamic のような技術の試験台といえる Da Vinci Machine プロジェクト(source)の発表に際して JSR-292 について触れている(参考記事)

JSR-292 のスペックリードで MLVM を支える第一人者でもある John Rose 氏は、JVM を動的言語からよりアクセスしやすくすることに関して、自分のブログで定期的な議論を行っている。Rose 氏は JSR-292 提案の理由を次のように述べている(source)

なぜ新しい呼び出し用バイトコードが必要か。その答えは、呼び出しサイト(呼び出し用バイトコードのインスタンス)が有用で、なおかつ、呼び出しのための既存の方法は Java 言語と密接にむすびついているため、JVM にそもそも備わっている機能を他の言語が完全に利用することはできないからである。主に次のような制約がある。

  • レシーバの型が呼び出しサイトの解決された型と一致しなければならない
  • 呼び出しターゲットをラップするアダプタを作成する一般的な方法がない(これはひとつ前の項目から必然的に導かれる)
  • 呼び出しサイトはリンクされなければならない。つまり解決されたメソッドは常に先に存在していなければならない
  • シンボリックな呼び出し名は、実際のメソッドの名前である(ひとつ前の項目から必然的に導かれる)
  • 引数のマッチングは暗黙的な強制なしに正確である(これも同様に導かれる)
  • リンクの解決を逆にすることはできない(目に見えないところで最適化の解決は変更されるが)
動的言語の実装者はこれらの制限をどう扱うかに多くのエネルギーと時間を費やしている。Java 言語によって制約をうけている JVM の呼び出しバイトコードを使って、他言語における呼び出しをシミュレートしているのである。
同エントリで彼は、JSR-292 チームが提案しているソリューションについても述べている。
これらの要求に対する私たちのソリューションは三つのステップからなる。最初のステップでは、振る舞いの単位であるメソッドを管理するための簡単で汎用的な方法としてメソッドハンドル(source)を導入する。メソッドハンドルは、直接呼び出すことが可能だ(メソッドは本来そうあるべきだが)。次に、invokedynamic 命令を定義する。この命令は、リンク状態を表わすマシンワードである、呼び出しサイトのターゲットメソッドのハンドルを必要とする。最後に、リンク状態の管理や呼び出しサイトのためのターゲットメソッドハンドルの生成を行うコア Java API を定義する。これらの API は JVM に適切な最適化の機会を提供することもできることに注意してほしい。
草案レビューが発表されたことで 2008 年 8 月 17 日まで 90 日間にわたる JSR のレビュー期間がはじまる。レビュー期間中に情報を得たり、JSR にフィードバックを提供する場合、次のような方法がある。
  • JSR-292 オブザーバメーリングリスト(source)に参加する
  • JVM Languages(source) Google グループに参加する
  • John Rose 氏のブログ(source)と MLVM のホームページ(source)をチェックする
InfoQ は今後も JSR-292 を追跡し、Java コミュニティ(source)に最新情報を提供していくつもりだ。


原文はこちらです:     http://www.infoq.com/news/2008/05/jsr_292_edr
ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

Jean Tabaka氏による「Collaboration Explained--真のアジャイルチームのためのファシリテーションツール」

Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。

Hubert Smits氏による「ゲーム・デザイン・ワークショップ」

Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。

スケーラビリティに関するベストプラクティス:eBayからの教訓

eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。

インタビュー: Emmanuel Bernard氏にBean Validation仕様について聞く

Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。

ポーカーに学ぶ、ソフトウェア開発のレッスン

ポーカーは他のトピックにも広く適用できるような数少ない教えを私にもたらしてくれたと信じています。実際私はソフトウェアを開発すればするほど、これら二つの仕事は非常に似ていると言う確信の度合いを深めています。

InfoQがBPEL4PEOPLEの代表と対談

恒例の「バーチャルパネルセッション」で、InfoQは新しいOASIS BPEL4People技術委員会の代表と対談をし、この作業が何故必要であるかについて彼らのフィードバックを得る機会を得ました。

CLR上でのドメイン特化言語の構築

ドメイン特化言語は最近非常に人気が高まっている話題です。これは恐らく、Rails現象に起因していると考えられます。Railsの人気と、Railsにおけるドメイン特化言語(以降、DSL)の大規模な使用は、DSLに対する広範な関心を呼び起こしました。

Rubyのデバッガを調査

Rubyには、Rubyコミュニティの内外で広く知られている誤解が一つある。Rubyにはデバッガがないという誤解だ。しかし、Rubyにデバッガが無いということは誤解なのだ。実際のところ、Rubyにはデバッガ用のツールがある。