InfoQ

News

Java言語ランタイムプロジェクト発足

作者 Werner Schuster, 翻訳者 佐野 徹郎 投稿日 2007年9月10日 午後11時27分

コミュニティ
Java,
Ruby
トピック
再利用,
JRuby,
動的言語
タグ
言語,
DLR,
JRuby,
CLR

古くはBeanshellやJythonのように、JVMの上で実行されるさまざまな言語には、JVM自身と同じくらい長い歴史がある。Javaのジェネリックス機能は、PizzaやGJのようなJavaを拡張した言語から生まれた。.NETでMicrosoftはSunと異なり.NET VMを複数の言語をサポートするように設計された共通言語ランタイム(Common Language Runtime:CLR)として市場に出した。初めはC#、VB.NET、CobolやEiffelSharp、続いてF#、IronPython、さらにDelphiなどの多くの言語をサポート(source)する。

JVMの上で実行される多くの言語(source)は、ほとんどがJythonやBeanshellのようなプロジェクトに注目し、その他の言語は一部の愛好家たち以外にはあまり知られていない。

 Microsoftは動的言語ランタイム(Dynamic Language Runtime:DLR)(source)によって、CLRをさらに推し進めた動的な言語のための共通基盤を提供する。
これは残念ながらJVMに欠けていたものだ。ほとんどのJVM言語の実装者は、JVMの上であらゆるトリック、回避方法、解決方法を見付けるプロセスを繰り返してきた。
 例えば永続的な世代ヒープ領域をメモリリークさせずにオンザフライでコードを生成する(source)など。

現状はJRubyのCharles Nutter氏がJythonやGroovyなどの他のJVM言語チームと話をすることによって変化しつつある。
その一歩はJVM言語の実装者が共通の問題や解決方法について議論するための共通フォーラムをGoogleグループ(サイト・英語)に作成したことだ。

これ自体にニュースとしての価値はないかもしれないが、最初のコラボレーションはすでに公開されている。JythonチームはJythonのパッケージキャッシングメカニズムのためのコードを提供(source)し、一般に利用できるようにした。このようなコードのための共通の場として、Java言語ランタイム(Java Language Runtime:JRL)(source)プロジェクトは発足し、すでにキャッシングのコードはソースリポジトリで利用できる。

JVM言語の将来の発展についてはメーリングリストで議論されるだろうが、DLRが提供するものからいくつかの方向性を見い出すことができる。
例えばバイトコードを生成するツールが必要だ。これにはソース言語の行番号を生成されたバイトコードの正しい位置にマップする、デバッグ情報のようなメタデータを生成するロジックが含まれる。
これは難しいことではないかもしれないが、すべての言語の実装で一から取り組まなければならない問題ではない。可変長引数によってオーバーロードされたメソッドをルックアップするためのロジックの実装(source)など、その他の共通するコードはJavaを統合するだろう。

それは単に基盤インフラによって、実装者の負担を減らせるということではない。それはまたグループが、動的メソッド呼び出し、クロージャ、あるいは継続などのさまざまな言語機能のために、最適なバイトコードを生成する方法を見付けることを可能にするだろう。それぞれの言語は異なるセマンティクスを持ち、どのくらい既存のコードベースを共有したり改良したりすることができるのか、現時点では不明だ。現在のJVMのバックエンドにおいて、バイトコードからネイティブコードを生成するJIT(Just In Time)コンパイラによって、適切に処理されることが明らかなバイトコードシーケンスと同様に、ワーキングコードやプロファイルドコードのサンプルはいまだに有益だ。

原文はこちらです:http://www.infoq.com/news/2007/07/jlr-project

(この記事は2007年7月31日にリリースされました)
ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。