Java ME: DoJa で LWUIMB を動かしてみた

携帯電話などに乗ってる Java ME には、MIDP/CLDC という標準のプロファイルがありますが、用意されている GUI コンポーネントがショボい、ということが昔から言われてきました。
CPU パワーのない携帯端末向けに設計されたコンポーネント群なので仕方がないんですが、最近は携帯電話の UI もわりと華やかになっているわけで、なんとかすべく様々な提案が行われています。携帯端末の性能は (特に日本などでは) ここ数年で一気に向上しているわけですが、そうは言っても一般的な PC や高機能な PDA に比べれば処理性能やメモリ容量の制限が厳しいことには変わりないため、AWT や Swing のような「フルセット」の GUI を持ち込むわけにもいかず、うまいバランスの取り方を探っているのが現状です。
そんな中、Sun が開発・公開しているライブラリに、LWUIT があります。

LWUIT
https://lwuit.dev.java.net/

今回は、これを NTT DoCoMo の携帯電話で動かしてみることにしました。

LWUIT/LWUIMB とは

LWUIT は、MIDP で提供されている GUI ライブラリ "LCDUI" の上に構築されていて、自前で GUI コンポーネントを描画するタイプの Pure Java なライブラリです。ちょうど、Java SE で Swing が AWT の上に構築されているのと同じようなかたちです。
ただし、NTT DoCoMo の携帯電話は、一部を除いて MIDP に対応しておらず、そのままでは LWUIT を扱うことができません。そこで今回は、LWUIT から派生した LWUIMB を利用することにしました。

LWUIMB
http://lwuimb.thenesis.org/bin/view/Main/

正確な説明はサイトを見ていただくとしておおまかに説明すると、LWUIT から MIDP に依存している部分をくくり出して、一箇所にまとめた構造になっています。くくり出した部分 (MicroBackend) だけ差し替えれば MIDP 以外の環境でも LWUIT が利用できるわけです。今回はこの部分について NTT DoCoMo の携帯電話で使える DoJa プロファイル用の実装を作成しました。
なお、NTT DoCoMo の今後の機種では DoJa が廃止予定となっていますが、後継の Star プロファイルについては、実機を持ってないので今回はパスします。

動かしてみた

下の図は、LWUIMB 付属のデモが、NTT DoCoMo が公開している DoJa アプリのエミュレータで動作している様子です。最低限の実装 (表示と、一部のキー押下のみ対応) ですが、そこそこ動いているようです。画面端に描画のゴミが残ることがありますが、見なかったことにしておきます。

さらに実機 (P905i) にダウンロードしてみたところ、起動に若干時間がかかるものの、その後は特に問題なく動作することが確認できました。上の図で 5 番目にある「Transition Demo」は、ボタンを押すと画面が横にずずっとスライドする画面遷移アニメーションのデモですが、実機でもスムーズにスライドしてくれます。
NTT DoCoMo の携帯電話をお持ちであれば、下記のページから実際にダウンロードして試して頂くこともできます。ただし、jar のサイズが 700KB 近くあるので、903i 以降のメガアプリ対応機種でないとダウンロードできません。また、905i (DoJa 5.1) でのみ動作確認していますので、それより前の機種では動かないかもしれません。

LWUIMB/DoJa Demo
http://sardine.sakura.ne.jp/appli/lwuimb/

ソース

LWUIMB (および MicroBackend を含めた MIDPath) は GPL で配布されているため、今回の修正内容についてもソース公開の義務があるのですが、ちょっと疲れたので後日ということにさせてください。

[2009-02-13 追記] 下記の場所にソースを置きました。

- http://sardine.sakura.ne.jp/appli/lwuimb/HelloLWUIMB.zip