携帯向けJava,3社の違いは?

NTTドコモ,J-フォン,KDDI,3社のJava仕様の概要が見えてきた。制限ファイルサイズも異なり,独自機能の違いも多い。セキュリティに関する考え方もそれぞれだ。

【国内記事】 001年4月24日更新

 J-フォンに続いてKDDIも携帯向けJavaの仕様を公開した(3月22日の記事4月13日の記事参照。現在サービス中のNTTドコモのiアプリを含め,国内3大キャリアのJava仕様の概要が見えてきた。

キャリア サービス名 対応端末 導入時期
NTTドコモ iアプリ 503iシリーズ 導入済み(1月26日)
J-フォン 未定 J-SH07 6月
au(KDDI) 未定 不明 6〜7月

基本はKVM/CLDC

 現在のJava2は,JavaVM(仮想マシン)やプロファイルと呼ばれるAPIセットによってさまざまな種類が規定されている。携帯電話では,そのなかでも組み込み機器向けのMicro Edition(ME)を用いる。

Java2プラットフォームの概念図。MEではリソースの制限が多種多様であるため,まずコンフィギュレーションとコアAPIを設定し,その上に「プロファイル」としてそれぞれのデバイスグループに合わせたAPIを提供する形になっている。携帯電話の場合,コアAPIとしてCLDC(Connected, Limited Device Configuration)を採用する。このCLDCに沿って実装されたJavaVMの1つにKVM(K Virtual Machine)がある。このため,通常CLDC/KVMと表記される

 各キャリアが採用するのは,いずれもCLDC/KVMという構成だが,さらにGUIやネットワークコネクション,レコード型のデータ保存形式などを提供する,プロファイルと呼ばれるAPIが追加される。

プロファイルの位置付け。CPUの上にKVMとコアAPIが載り,その上にプロファイル──たとえばMIDP(Mobile Information Device Profile)が載り,アプリケーションが動くという形になる

APIの違い

 3キャリアのJavaの仕様上の違いは,簡単にまとめると以下のようになる。

キャリア VM プロファイル CPU ダウンロードサイズ
NTTドコモ 非統一 DoJa 非統一 10Kバイト
J-フォン JBlend MIDP 不明 30Kバイト
au(KDDI) JBlend MIDP Qualcomm製 50Kバイト

 携帯電話各社が発表したJavaアーキテクチャでは,CLDCに沿ったJavaVMを利用する。NTTドコモは端末ごとに異なるメーカーのJavaVMを採用しおり,J-フォン,KDDIの場合,全端末共通でアプリックスのJBlendの採用を予定している。

 NTTドコモ端末ではJavaVMを1社に限定しないことで,不具合などのリスクを分散させたが,逆に端末ごとに細かな仕様の違いが生まれてしまった。J-フォンとKDDIでは,ドコモの「SO503i」にも採用されているJBlendを採用することで,端末間の互換性をより重視している。

 KDDIの端末ではJavaVMが動作するCPUであるベースバンドチップが全てQualcomm製であるため,さらに互換性が高まる。ドコモの端末では端末によって10倍以上の速度差があるといわれており,開発者は端末の速度差を意識してアプリケーションを開発する必要があった(3月21日の記事参照)。

 またプロファイルに関しては,J-フォンとKDDIは世界標準のMIDP(Mobile Information Device Profile),NTTドコモでは「DoJa」と呼ばれる独自のものを採用している(2000年12月の記事参照)。

 ドコモのDoJaプロファイルに関しては,公式開発環境・ライブラリが提供されたのは一部のメーカーのみ。端末発売後2カ月あまり経った後,やっと一般公開されたという経緯がある(3月23日の記事参照)。MIDPは既にSun Microsystemsから開発環境・ライブラリが提供されており,エミュレータも用意されている。海外のJava対応携帯電話もプロファイルにはMIDPを採用しており,今後とも世界標準という位置付けになりそうだ。

 また,JavaアプリケーションはJARと呼ばれる圧縮ファイルで配布され,端末内で展開が行われるが,JARファイルの最大サイズは各キャリアで制限されている。NTTドコモが10Kバイトと最も小さく,J-フォンは30Kバイト,KDDIは50Kバイトと大きめだ。

 J-フォンとKDDIは,同じプロファイル/JavaVMを採用することで,大きな互換性を持つことになると予想されている。

大きな自由度を持つ,J-フォンとKDDI

 セキュリティの考え方も,各キャリアによって微妙に異なる。各キャリアはMIDPなどの統一プロファイルに追加して,各キャリアは独自の拡張APIを提供している。

 J-フォンのJava端末は「マスコットカプセルエンジン Micro3D Edition for J-phone」と呼ばれる3Dエンジンを搭載し,Javaアプリケーションから利用が可能だ(3月15日の記事参照)。KDDIは,C4xxシリーズから採用されている新Cメールを利用して,Javaアプリケーション同士が通信できるAPIを用意している。また,オムロンが開発した携帯電話向けのP2Pを実現するミドルウェア「Jumon」もサポートしている(2000年10月の記事参照)。

 各Java仕様の主な独自拡張機能は以下の通り。

キャリア ドコモ J-フォン KDDI
デバイスコントロール バイブレータのみ
アドレス帳の利用 ×
2Dスプライト × ×
3Dポリゴン × ×
電話の発着信 × ×
メールの送受信 ×
Javaアプリケーション同士の通信 ×
http通信 ダウンロード元のサーバとのみ ×

 しかし多くの独自拡張APIは,一般のJavaアプリケーションからは利用できない場合が多い。ドコモはJavaアプリケーションの制作者を区別することなく同列の仕様を提示しているが,J-フォンとKDDIは,多くの独自拡張機能について,キャリアがアプリケーションの認証を行うことを条件として使用を許している。

拡張性とセキュリティの狭間で

 “より強力なアプリケーションを作る”という視点で見れば,アドレス帳などの携帯電話内のデータにアクセスできたり,Javaアプリケーションから電話やメールを送受信できたりするのは魅力的だ。

 しかし,このように自由度を高めた場合,セキュリティ面で危険が生じる。Javaアプリケーションが携帯電話のメモリや通信機能にアクセスできるということは,技術的にはウイルスも作成できるということを意味するからだ。

 ドコモ仕様では,これらの危険性を嫌い,公式/一般を問わず,非常に厳しい制限をかけた。逆に,J-フォン,KDDIは,キャリアが安全性を確認することを条件に,制限を緩めている。

 さまざまな機能を利用できるのはありがたいが,J-フォン,KDDI仕様は“キャリアによる開発者の選別”という事態が起こる可能性も含んでいる。“キャリアが安全性を確認する”といっても,確認作業は簡単に済むものではなく,時間も資金も必要となる。

 さらに,「レベルAアプリ(キャリアが安全性を確認するアプリ)を作るには,公式サイトを運営していることが条件」(KDDI)と,まずは公式サイトの一員となるという壁がある。J-フォンに至っては,「まずはJ-フォンのオフィシャルサイトから(Javaアプリのサービスを)始める」(J-フォン東日本)という。

 Javaアプリケーションの自由度を高めた代償として,J-フォンとKDDIでは“キャリアに認められなければ高度なサービスができない”という事態になってしまった。

 J-フォンもKDDIも,プロファイルに世界標準であるMIDPを採用するなど,“オープンであること”を喧伝している。しかし実際のところは,一般の制作者は公式サイトを運営する企業と同じ土俵で勝負できるわけではない。

 仕様自体は独自ながら,全てがオープンにされているドコモ。そして,仕様は世界標準に従っているが,キャリアが認めた開発者だけがより高度な機能を使えるJ-フォンとKDDI。Javaアプリケーション市場の発展のためには,どちらのほうが望ましいのだろうか。

関連記事
▼ KDDI,au端末搭載Javaの概要を公開──プログラムサイズは50Kバイト
▼ J-フォン,Java端末の全貌を公開──ハードウェアの制御も可能
▼ J-フォン,Javaサービスを6月開始──対応端末第1弾は「J-SH07」
▼ ドコモ,Java搭載iモード端末503i発表──1月26日発売
▼ D503iのiアプリ性能は?──5機種まとめてテスト
▼ iモード対応Javaを作るのに必要なものは?──NTTドコモ,仕様をついに公開
▼ ドコモ,公式iアプリ作成ツールを公開
▼ J-フォン,携帯電話上で動く3Dポリゴン技術を発表──6月の新端末から
▼ >オムロンとバンダイネットワークス,Java対応携帯電話でP2Pサービス

[九条誠二,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.



Special

おすすめPC情報テキスト

モバイルショップ

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!