はじめに
昨晩 MIDP 2.0 と CLDC 1.1 の API リファレンスを公開しましたが、それに伴って MIDP 1.0 と CLDC 1.0 による API リファレンスは不要になったわけではない、ということについて今回は書いてみたいと思います。
MIDP 1.0 と 2.0
Java は伝統的に、上位互換(後方互換)を保ってのバージョンアップが行われます。これは MIDP においても例外ではなく MIDP 1.0 向けのソフトは概ね MIDP 2.0 でも動作します(仕様以外の要因で動作しないことは確かにありますが)。
となると、MIDP 2.0 の API リファレンスだけを見て、注意深く API を選択して 1.0 から使えるものだけを用いてコードを記述すれば、MIDP 1.0 でも動作するアプリケーションを作成できそうに思うかもしれませんが、残念ながらそうなっていません。
例えば MIDP 1.0 では Image
オブジェクトの可変タイプと不変タイプは明確に分けられており、高レベル UI コンポーネントは不変タイプの Image
オブジェクトのみを受け入れます(例:MIDP 1.0 の ImageItem
)が MIDP 2.0 では可変タイプでも受け入れます(例:MIDP 2.0 の ImageItem
)。可変タイプの場合は受け入れる際に、自動的にその時の状態のコピー(スナップショット)を不変タイプで作成して、それを用いることでこの仕組みを実現しています。MIDP 2.0 の API リファレンスには、この仕組みについては言及があるものの MIDP 1.0 ではこの仕組みが無いことは説明していません。
このため MIDP 2.0 の API リファレンスだけを見て作成すると MIDP 1.0 では動作しないアプリケーションを作成してしまうことに繋がります。
まとめ
このように MIDP 1.0 向けのアプリケーションを作成する場合には、依然として MIDP 1.0 の API リファレンスを参照すべきです。そして、できれば MIDP 2.0 の仕様も確認し、拡張された仕様がしないかをチェックするといいでしょう。