i-mode Java と MIDP の比較


i-mode Java と MIDP を比較します。
以下は、Doja2.x、JSCL1.1、EzPlus1.0 の頃の記述ですので、ご注意ください。

比較 / UI / その他 / 戻る / トップページ


比較

i-mode Java (i-mode Java については別ページ i-mode で動く Java プログラムの書き方 をお読みください) と MIDP (MIDP については別ページ 携帯で動く Java プログラムの書き方 をお読みください) には機能が類似していながら異なる名前のクラスで実装されているものが 多く存在し、両者を使ってプログラムをしていると良く混乱してしまいます。
 
ここでは i-mode Java と MIDP を比較して見ようと思います。

ユーザーインターフェース

機能が類似していながら異なる名前のクラスで実装されているものが 特に多いユーザーインターフェース部分について、対応表を載せておきます。
 
ユーザーインターフェースクラスの対応表
i-mode Java MIDP 備考
com.nttdocomo.ui.Display javax.microedition.lcdui.Display i-mode Java は static メソッドばかり、 MIDP は getDisplay() メソッドでオブジェクト取得
com.nttdocomo.ui.Frame javax.microedition.lcdui.Displayable 表示されるものの親クラス
com.nttdocomo.ui.Canvas javax.microedition.lcdui.Canvas グラフィックスが描けて、キー入力が直接通知される。ゲーム向き。 色の指定方法は i-mode Java ではインデックス値で、 MIDP は直接 RGB で指定する
com.nttdocomo.ui.Panel javax.microedition.lcdui.Form UI コンポーネントの入れ物
com.nttdocomo.ui.Dialog javax.microedition.lcdui.Alert 画面を占有し、注意勧告などをする
com.nttdocomo.ui.Graphics javax.microedition.lcdui.Graphics サポートするメソッドに差あり。 i-mode Java には drawPolygon(), fillPolygon() メソッド、 MIDP には fillArc() メソッドなどがある。
com.nttdocomo.ui.Image javax.microedition.lcdui.Image MIDP ではオフスクリーンが作れる。 i-mode Java は GIF、MIDP は PNG 画像が基本
com.nttdocomo.ui.Component javax.microedition.lcdui.Item UI コンポーネントの親クラス
com.nttdocomo.ui.Label javax.microedition.lcdui.StringItem UI コンポーネント、文字列
com.nttdocomo.ui.ImageLabel javax.microedition.lcdui.ImageItem UI コンポーネント、画像
com.nttdocomo.ui.ListBox javax.microedition.lcdui.ChoiceGroup UI コンポーネント、選択肢。 i-mode Java は機能が豊富
com.nttdocomo.ui.TextBox javax.microedition.lcdui.TextField UI コンポーネント、入力可能な文字列。 i-mode Java は機能が豊富
com.nttdocomo.ui.Button 対応なし UI コンポーネント、ボタン
com.nttdocomo.ui.Ticker 対応なし UI コンポーネント、流れる文字列
com.nttdocomo.ui.VisualPresenter 対応なし UI コンポーネント、ムービー (?)
対応なし javax.microedition.lcdui.DateField UI コンポーネント、入力可能な日付
対応なし javax.microedition.lcdui.Gauge UI コンポーネント、量調節バー
対応なし javax.microedition.lcdui.Command ソフトキー。 i-mode Java では Frame クラスに直接指定する。
com.nttdocomo.ui.ComponentListener javax.microedition.lcdui.ItemStateListener UI コンポーネント操作時のイベントリスナー
com.nttdocomo.ui.SoftKeyListener javax.microedition.lcdui.CommandListener ソフトキー操作時のイベントリスナー

その他の違い

他には以下のような違いがあります。
 
アプリケーション起動用のクラスが異なります。 i-mode Java では com.nttdocomo.ui.IApplication クラスを、 MIDP では javax.microedition.midlet.MIDlet クラスを継承します。 それぞれのアプリケーションを「i アプリ」、「MIDlet」と呼びます。
 
どちらにも Timer クラスが存在しますが、全く別物です。 i-mode Java の com.nttdocomo.util.Timer, com.nttdocomo.ui.ShortTimer クラスは DoCoMo 独自のクラスで、 MIDP の java.util.Timer クラスは Java2 Standard Edition の java.util.Timer クラスと同じクラスです。

戻る