BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Java ME/CDCでのJRuby

Java ME/CDCでのJRuby

近ごろCharles Nutter氏は、携帯JavaデバイスでJRubyを実現するために時間を費やしている。最初はRubotoの導入やJRubyに対するAndroid のサポートである(リンク)。現行バージョンは解釈モードでJRubyコードを実行するが、Charles氏はAhead of Time (AOT)コンパイルを拡大して、RubyソースコードをJavaバイトコードに十分にコンパイルできるようにする予定である。そしてそれは、 AndroidのVMのため、バイトコードに変換される。

一方、同時コンパイルモードの調査を開始することになる。そのわけは、Dalvikバイトコードを発生させるよりも初めは単純だと思うからである。すでに わたしの頭では、完了している。コマンドを実行して対象のスクリプトを「完全にコンパイル」する。そうすると.classファイルを作成する。いずれにせ よ、この機能をしばらく考えてきた。「完全にコンパイルされた」Rubyコードを使用すれば、それを「dex」し、デバイスにアップロードすることができ る。

別の重要な過程は、JRubyのモジュール化である。

おそらくたいていの人が事前コンパイルされたコードをシップしたいと仮定し、多くのライブラリが決して動作しないという事実を考慮すると、JRubyをも う少しモジュール化する必要がある。そうすればサポートされていないライブラリ、パーサー、解釈プログラムおよびコンパイラを取り除くことができる。それ により、バイナリの全体サイズを大幅に縮小するに違いない。またそれを縮小する別の考えもある。

Rubyコードをコンパイルし、JRubyの必要箇所だけをシップする機能は、リソースの制約が多いJava MEデバイスにとっては特に重要である。それはCharles氏が最近のプロジェクト、jruby-cdc(リンク)で対象にしていることである。以前議論されたように(参考記事)、 Java MEでのJRubyの実行についてはかつて検討されたが、Java MEプラットフォームの多数の制限(JRubyのターゲットプラットフォームJava 5と比較すると)のため、難しい課題となる。

新たな取り組みが、JRubyをJava ME CDCデバイスにもたらす(リンク)(CDCはJava MEの外形である)(リンク)

「cvm」は内蔵JVMのSunの参照実装であり、この特定のパッケージには、PBPレベルのAPIも含まれる。ここでのjruby.jarは、 jruby-cdcプロジェクトで取ったものであるが、Java 1.3に準拠したバイトコードにそれをretroveaveする追加のステップがある。

すでにRhodesプロジェクト(参考記事)は、MRIのバージョン(SymbianやWindows Mobileデバイス向け)のバージョンまたはBlackberryのようなデバイス向けのXRuby(RubyコードをJavaバイトコードにコンパイ ルする)のカスタムバージョンのどちらかを使用し、Rubyサポートのサブセット向けのサポートを多くのモバイルプラットフォームにもたらしている。 JavaバイトコードにAOTコンパイル可能なJRubyのもぎ取られたバージョンは、Rhodesプロジェクトにとっては確実に便利である (Rhodesはオープンソースで、Githubでホストされる(リンク)ため、AOTコンパイルが利用可能になれば、JRubyバージョンでの試みが可能になる。

Rhodesプラットフォームの1つの興味深い側面はGUI環境であり、HTMLに基づいている。またロケーション、カメラなどのデバイス機能の利用をサ ポートする機能拡張がある。そのコンセプトは、Palmが新たなWebOSで使用しているもの(リンク)と類似している。すなわち、HTML、Javascript および他のWebテクノロジーを使用して、GUI が組み込まれたローカルアプリケーションである。RhodesのアプリケーションバックエンドがRubyで記述可能な違いが生まれる。

Rhodesがスマートフォンを対象にしている一方で、RubyをJMEで実行するとローエンドセグメントをキャプチャーする。Charles氏は以下のように指摘している。

なぜ面倒なのか?まだ多くのJava MEデバイスがある。また、ポケットに入れて持ち運ぶデバイスは、Java ME以上に大きくなっているかもしれないし、リビングルームにあるセットトップボックスやブルーレイプレイヤーはそのレベルにたどり着こうとしている。 iPhoneやAndroidほどはっきりしてはいないが、テクノロジーはまだ健全である。至る所にRubyがあればいいと思わないか?

Java ME上のJRubyやAndroidデバイスで何をするか?

 

原文はこちらです:http://www.infoq.com/news/2009/02/jruby-javame-cdc

この記事に星をつける

おすすめ度
スタイル

BT