BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JRuby:JRubyはJava5へ移行すべきかどうか?

JRuby:JRubyはJava5へ移行すべきかどうか?

JRubyの開発者メーリングリスト(source)で、Java5への移行に関する議論(source)が開始された。Java5がリリースされてからというもの、Javaの数々のプロジェクトで、この手の議論はよく起こる。OSGi又はSWTのような基本的な技術やライブラリはJava1.1又は1.2と互換性を保っている(source)が、Eclipseのように多くのJavaプロジェクトは、出来るだけ長くJava1.4と互換性を保ち続けることを選んだ。

Java5への移行に関して、スタンドアローンアプリケーションは必要としているJVMを同梱すれば特に問題にはならない。それに対してライブラリは問題がある。何故ならJava5への移行は、基本的にJava1.4を使用する事が前提のライブラリがJava5を使用するライブラリを使う事は出来ないし、Java5を必要としている新しいバージョンのライブラリも使う事が出来ない、ということを意味しているからである。

JRubyはスタンドアローンアプリケーションとライブラリの間に位置する。結局以下のコマンドを使えば、どんなRubyプログラムも実行させることが可能である。

jruby filename.rb 

このために、それがJava5のライブラリを必要とする特有のJRubyのコードでない限りは、特定のJavaのバージョンを必要としているJRubyは問題ではない。アプリケーションの内側で組み込みRubyインタプリタとしてJRubyが使われた場合、JRubyはライブラリとして使われていると言える。
このために、JRubyを使用するのに必要とされるJavaのバージョンを上げてしまうと、もしそのアプリケーションがJava5をまだ使用していないのであれば、その組み込み済みアプリケーションを使う際に必要とされるJavaのバージョンも同様に上げないと、その組み込み済みアプリケーションは使えないということになる。

1.4互換をやめJava5の機能を使うこと、そしてそれに加えてJRubyチームがアノテーション列挙型のような新しい言語仕様を使うのを許すことに対する正当な論拠がある。ひとつはJava5に追加された先進的な同時並行ライブラリである。今すぐにjava.util.concurrentライブラリのbackport(source)がJRubyに含まれて出荷されたとしたら、そのことはダウンロードサイズが増加するということを意味する。またこのbackportは、Java5の同時並行サポートの特定なクラスを使えないので、ある機能はJava5のjava.util.concurrencyクラスと一緒に使用した場合と同じパフォーマンスを出す事は出来ない。

1.4互換を保つ大きな理由は、大企業の長いアップグレードサイクルである。それはソフトウェアのバージョン上で統一化しようと努める。しかし、Windows、MacOS XそしてLinuxという主要なプラットフォームを含め、ほとんどのプラットフォームがJava5をサポートしているので、Java5への移行に反対する理由は急速に減少している。Java 5がリリースされて3年、アーリアダプタにより問題が発見されたり報告されたりしたので、JVMやライブラリは成熟したのではないかと思われている。

先の理由と比べてより重要でない理由ではあるが、もう一つの1.4互換を保つ理由は、フリーライセンスのJava5完全互換実装が不足していることである。Apache Harmonyプロジェクトと同様にGNU Classpathmが完全互換のゴールへ近づいている間、他のJava5完全互換実装はまだゴールへ近づいていない。API完全性は少なくとも95%(source)であり、それらのプロジェクトにとっては偉業である。しかし依然として100%Java 5互換ではないのだ。Eclipseのような大きなアプリケーションが、フリーのJVM上で動く限り、小さな非互換性が現れ得る。そして非互換性は潜在的にサポート部門の頭痛の種となるだろう。
SunによるOpenJDKプロジェクトで、GPLライセンス下の完全なJavaを近い将来利用できなければならない。(Javaのいくつかの部分はGPLライセンス下でまだ利用できない点に注意してほしい。何故ならSunはGPLライセンスかで、それらを発表する権利を持っていないからである。(source))

リリースされたJRuby 1.0はJava 1.4互換であり、将来も1.4互換でありつづけるだろう。Java 5への移行は、将来リリースされるJRubyのために議論される。

このことに関するあなたの意見はいかがでしょう?1.4互換を維持する必要があるプロジェクトで働いているだろうか?もしそうであれば、会社の標準だからという以外の理由はあるのだろうか?

原文はこちらです:http://www.infoq.com/news/2007/07/jruby-java5-move

(この記事は2007年7月27日にリリースされました)

この記事に星をつける

おすすめ度
スタイル

BT