JSR-292はJava Virtual Machine(JVM)における動的言語用のサポートを改善させるために2007年上旬に立ち上げられた。今までにその取り組みはJVM用の invokedynamicのインストラクションに焦点が当てられてきたが、最近はマルチランゲージバーチャルマシーンプロジェクトに向けた動きが出てきた。John Rose氏は最近の会議の結果を下記のようにまとめている(source)。
- 私たちはJVMインストラクションアーキテクチャに多大な変更を施しています。
- これによって新たな動的言語の収穫が得られるのです。JVMがこれらの言語をサポートするのにはビジネス的な理由もあります。
- EGコンセンサス:パブリックレビューを早く行いたいですね。これはEDR(JCPによる早期の原稿レビューが必要とされる。)を作るということです。
- 現在のProof of Conceptデザインを正式にするためには"red face test"を通過しなければなりません。それはそのデザインが私たち、EGが解説また改善に値する方向性を示しているということです。これは議決事項ではないのでERスペックは未完成で未解決の問題がいくつかあります。
- 元々のJSR 292はinvokedynamicだけでなくクラス修正かもしくは拡張を含んでいます。最近の実験によるとinvokedynamicよりも必要と なるものは、多分軽量のビヘイビア拡張(メソッドハンドル、自律メソッド等)であります。これに関しては論議の余地があります。)
- OpenJDKのオープンソースサブプロジェクトはJSR292用のRI(JCPによって必要とされるリファレンス実装)の生成を援助します。
- このプロジェクトには(MLVM)他なる変更が含まれ、またそれは標準化が可能であり、MR(maint.rel.)または他のJSRに成りえるものとEGが考慮するかどうかによります。
最後にJohn RoseはOpen JDKリスト上でマルチランゲージVMプロジェクト(サイト・英語)を提案した。
このプロジェクトはJava以外の言語を効果的にサポートするのに狙いが定められたJVM機能のプロトタイプ用に公開される。
またこのプロジェクトで強調される点は、ただ一つの言語用の新たな機能か、もしくは隣接している非関連性の新たな実行モデルに反して現在あるバイトコードと通常の目的拡張のアーキテクチャでの実行を完成させることである。
また実証されていない機能、もしくはニッチな言語上におけるより投機的な作業と反して、成功している、もしくは影響力のある言語の実装者が既に注目している”弱点”を除去する作業に重点を置いている。
その反響は好ましいもので、”かなりこれにはまってますね。(source)”、”Sunが変わらずJava全体をプラットフォーム全体として把握しているのでうれしいですね。(source)”とのコメントが得られている。またそれはNeal Gafter氏の数字的な不満(source)から、Attila氏のメタオブジェクトプロトコル(source)とRemi氏の具体化されたジェネリック(source)と発展的なものだった。
それと同時に人々はこのサイズの挑戦に潜在している危険性に気付くのである。
Attila氏はParrotの不安に関して挙げている。
もちろん目標が幅広すぎると焦点を失うという危険性がいつも存在しています。Parrotの歴史上での恐ろしい例を見て下さい。
John Rose氏はその懸念に関して下記のように答えている。
はい、そうです。その十分に探索された最初のアイディアリストは実行するとしたら作業に何十年もかかるでしょう。だからその中でも一番利益が得られそうなプロジェクトを選ぶ必要性があるのです。
更なる情報はJSR-202オブサーバーリスト(source)、JVMランゲージグループ(source)に参加し、またMercurial(source)慣れ、InfoQ Javaコミュニティ(サイト)に注目すると良いだろう。