DoCoMoProfile-2.0のAPIリファレンスを見ていて、思わず苦笑してしまった点があります。それはcom.nttdocomo.lang
パッケージにIllegalStateException
クラスが設けられている点です。これはJava 2 Platform, Standard Edition(J2SE)ではjava.lang
パッケージに存在する同名のクラスと同様の目的で使用します。しかしながら、Java 2 Platform, Micro Edition, Connected Limited Device Configuration(CLDC)ではこのクラスは省略されています。このため、DoCoMoProfile-2.0ではこのパッケージに設けたわけですが..。
(日本では)事実上DoCoMoProfileと競合するMobile Information Device Profile(MID Profile)では同様のクラスをJ2SEと同じjava.lang
パッケージに用意しています。これはJava標準仕様として策定されたMID Profileでは、既存のパッケージ内に存在するクラスを厳密なサブセットととして同じクラス名で設置することができるためです。MID ProfileではこのIllegalStateException
クラスの他にjava.util
パッケージ内にTimer
クラスおよびTimerTask
クラスをサブセット化したものを設置しています。また、CLDCのGeneric Connectionフレームワーク用のパッケージであるjavax.microedition.io
パッケージの中にHttpConnection
インターフェースも設置しています。これもMID Profileの一部であり、CLDCの一部ではありません。
しかし、私的なプロファイルであるDoCoMoProfileではこれができません。このため同じ目的の同じ名前のクラスが別のパッケージに存在しています。ちょっと不思議な雰囲気です..。
また、私が以前のコラムでDoCoMoProfile-1.0の仕様に対していくつか変な点を指摘した部分がDoCoMoProfile-2.0では修正されています。例えば、com.nttdocomo.io
パッケージのHttpConnection
インターフェースに定義されている定数のいくつかが不適切であり、またHTTP/1.1のために必要(FOMAはHTTP/1.1)でありながら定義されていない定数があると指摘していた部分や、同インターフェースがjavax.microedition.io
パッケージのConnection
インターフェースから継承したclose()
メソッドの実装のうち、いくつかの機種のものでGeneric Connectionフレームワーク規約を満たしていないものがあると指摘した部分などです。NTTドコモの方がこのページを見て修正したわけではないでしょうが、この様に細かい点もDoCoMoProfile-2.0では修正されています。
というわけで、今回はAPIリファレンス一つでもいろいろと垣間見えるものがあって面白いですなぁ、という話でした。