BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース モバイルRubyの総まとめ:Symbian Ruby 1.9、Android、JME、iPhoneおよびMono

モバイルRubyの総まとめ:Symbian Ruby 1.9、Android、JME、iPhoneおよびMono

Symbian向けRuby 1.9(リンク)のポートが、現在利用可能であり、Ruby 1.8バージョンが(Symbian向けのPythonと共に)利用可能になっている。

SymbianのRubyの他に、現在携帯電話でのRubyのサポートについては、あまりない。AndroidでRubyのARMバージョンを実行することが、可能である(リンク)

AndroidはJavaベースであるため、AndroidでJRubyを実行させるという選択肢もあるかもしれない。ここでの問題は、Androidが Javaのバイトコードを実行せず、代わりにDalvikバイトコードを実行するということである(JVMバイトコードはDalvikバイトコードに要変 換)。JRubyのユーザリストに関する議論で、JRubyのCharles Nutter氏は考えられるソリューションを提示している(リンク)

以下の制限で動作する2つの実行シナリオがある。
* すべてのコードがデバイス上で解析され、AST-walking変換ロジックで実行される、純粋な変換。これは想像してる以上に遅いかもしれないが、簡単に動作させることができる。
*前もってすべての呼び出し側/ハンドルが生成される、純粋なコンパイル。 どちらのケースも現在のコードベースで可能である。片方のみを提供し、他方には依存しないdeliverable .jarを作成することが唯一のこつかもしれない。


こんにちJRubyをJMEで実行することは、選択肢ではない。JavaOne 2007で、JRuby to JMEのポートが提示された(リンク)。リンクされた場所にあるZIPファイルには、JavaOneの プレゼンのスライドがある。JRubyのサブセットをJMEで実行させる際に関わるプロセスを詳述するものである。JMEはJavaの縮小バージョンであ るため、JRubyの実行ではJRubyの大部分を再書き込みする必要がある。JRubyの現バージョンは、Java 5に依存しているが、スライドが示すように、JMEは追加されたクラスおよびメソッドがない。Regular ExpressionsまたはCollections APIの大部分が、削除されている。

IronRubyやiPhone向けMonoの形式で、まもなく別のオプションが利用可能になる。iPhoneのAppStoreは、インタープリターのダウンロードを可能にしないが、最新のMonoバージョンにはソリューションがある。事前のコンパイルである(リンク)。すなわちCILのコードがCPU命令にコンパイルされる。iPhoneの場合は、ARM命令にコンパイルされる。IronRubyは、RubyコードをCILにコンパイルすることができるので、それらを解釈せずに、RubyアプリケーションをCILにコンパイルすることができ、AOTがそれをコンパイルし、iPhoneで実行することができる。Miguel de Icaza氏が述べるように、IronRubyコードが実行可能になるまで、ちょっとした問題が残る(リンク)

当然、JITを除去すれば、動的に生成されたコードを使用できなくなる。これは少なくともしばらくは動的なReflection.EmitやIronPython/IronRubyが使用できないことを意味する。 PDCでJohn Lam氏は、IronPython/IronRuby/DLRバックの静的コンパイルを検討していることを言っていたので、この制限はほんの少しの間だけである。

 

原文はこちらです:http://www.infoq.com/news/2008/11/mobile-ruby-roundup

この記事に星をつける

おすすめ度
スタイル

BT