DoJaプロファイル(ドゥージャプロファイル)はNTTドコモグループの携帯電話であるmovaシリーズ及びFOMAシリーズに搭載されるJava実行環境の仕様である。
DoJaプロファイル(以下「DoJa」と略)は、 Sun Microsystems, Inc. (以下「サン」と略)のJava2プラットフォーム構想において、Java 2 Platform, Micro Edition(J2ME)における、CLDC(Connected, Limited Device Configuration)コンフィグレーション上の1プロファイルとして位置づけられる。同様の携帯電話むけJava実行環境のプロファイルには、サン自身によるMIDP(Mobile Information Device Profile)があるが、開発時期の違いからか、NTTドコモグループ(以下「ドコモ」と略)の携帯電話には採用されるには至らなかった。
DoJaは寧ろ技術的な用語であり、一般向けには「iアプリ」と呼んだ方がとおりがよい(ドコモのマーケティング戦略でもあると思われる)。
特徴
携帯電話は一般に大画面のディスプレイやマルチウィンドウシステム、マウスなどのポインティングデバイスを持たないし、ハードウェアスペック(CPUスピード、メモリ容量)がデスクトップ・サーバJava環境に比べて比較的貧弱であるなど、デスクトップのJava環境と比べて大きな差がある。そのため、DoJaのJava APIもJava 2 Platform, Standard Edition(J2SE)と比べてかなりの違いがある。
ただ、Javaの言語仕様としては浮動小数点処理ができないこと、ファイナライザが動作しないことを除き、デスクトップのJava環境とくらべて差異はないと言ってもよい。マルチスレッド処理を含めて、本当のJavaプログラミングを行うことが可能である(これらはDoJaのというよりCLDC 1.0の特徴。CLDC 1.1では浮動小数点演算がサポートされる)。
DoJaが動作する携帯電話上においては、ファイルシステムを持たず、ローカルなデータの保存には「スクラッチパッド」と呼ばれる領域を用いる。また、ネットワーク通信を行うことができる(iアプリをダウンロードしたホストとのみ通信できる)。
実行形態
DoJaでは、コンパイルしたclassファイル、および実行に必要な画像や音楽データを含めて、jar形式でパッケージ化しておく。このように準備されたiアプリはHTTPあるいはHTTPS通信を通じて、携帯電話にダウンロードされ実行される。SDメモリカードなどの外部記憶媒体を使ってアプリを携帯電話にインストールする方法はいまのところ無い。セキュリティに関しては、非常に厳しく、公開された方法を使って他のアプリとスクラッチパッド上のデータを共有したり、電話帳やメールデータにアクセスすることはできない(後述のiアプリDX仕様を使えば一部実現可能と思われる)。
尚、DoJaで実行するクラスファイルは、パッケージする前に通常のコンパイルのほかに、preverifyというツールを使って前処理を行っておく必要がある。これはCLDCの制限(というより特徴)であり、実行時・ローディング時のバイトコードベリファイの負荷を減らすために、あらかじめ型情報を調査し、その情報をクラスファイル内に添付しておく必要があるためである。
Java API
CLDCは、組み込みむけの一般的な共通機能を絞り込んだAPI仕様を持っており、GUIなどを定義していない。J2MEの枠組みでは、それらはプロファイルで定義される。
DoJaにおいてUI処理には、com.nttdocomo.ui.*パッケージに含まれる独自のUIクラス群を使用する。入出力においては、CLDCのジェネリックIOフレームワークに基づき、ネットワーク入出力処理(HTTP,HTTPS)、スクラッチパッドアクセス処理、Jarリソースに含まれたデータの入力処理などを行うことができる。
DoJa 2.0(504i)以降は、待ち受け画面のように常に常駐して動作する「待ち受けiアプリ」の機能や赤外線通信機能が追加された。また、DoJaオプション機能としてゲーム向けの機能(スプライト、3Dポリゴンなど)、カメラ機能などが定義された。
DoJa 3.0(505i)では、ゲーム向け機能の一部が標準機能になった。また、「iアプリDX」として、携帯電話の電話帳にアクセスしたり、メールなどと連携できるような機能が追加された。これらのiアプリDX機能の詳細については一般には公開されていない(公式コンテンツプロバイダ向けにのみ提示されているものと思われる)。またオプション機能としてバーコードの読み取り機能、指紋認証機能などが追加されている。
歴史
- 最初の版のDoJa 1.0版は、デジタルムーバ503i及び503iSシリーズ並びにFOMAシリーズに搭載。
- DoJa 2.0仕様は、504i及び504iSシリーズに搭載。
- DoJa 2.1仕様はFOMAシリーズに搭載。
- DoJa 3.0仕様は、505iシリーズに搭載。
DoJaは携帯電話が新しいデバイスを装備することにそれに対応する制御APIとして拡張されてきた。携帯電話自身の性能もハードウェア技術の進歩により、503登場当初に比べ飛躍的にその実行速度、容量(一回で送受できる通信量や、スクラッチパッドの容量)、画面サイズなどを増やしているため、登場当初と比較してはるかに高機能なアプリケーションを書くことができるようになって来ている。特に、アプリケーションサイズの制約は当初10K(Jar圧縮後)という極めて厳しいものであったが、DoJa2.0以降は30Kバイトまで拡張されている。
互換性
au、ボーダフォンの携帯電話もJava実行環境を搭載しているが、いずれもMIDPを採用しており、DoJaとの互換性はない。厳密には、CLDCの範囲内では同様に動作するプログラムを作ることはできるかもしれないが、アプリケーションのパッケージングなどの方法も異なる。いずれにせよ、画面表示などの機能に互換性はないのでそのまま同じものが動作するという意味での互換性は無いといってよい。同じCLDCに基づくJava環境ではあるのでコードの一部もしくは多くを共通化できる可能性はある。
もうひとつ考える必要があるのは、機種間の互換性の問題である。DoJaはJava実行環境の使用であるため、下位層としてのjvmの実装やあるいはハードウェアに関して統一がなされていない。このことはJavaの思想からは正しいのだが、Javaアプリケーションの振る舞いに関して携帯電話各メーカ間の実装差異は決して小さくない。
特に商用コンテンツとしてiアプリを開発する場合、機種間の差異は深刻な問題である。版を重ねるにつれて仕様の詳細度もまし、実装差異は一般には解決されていく方向ではあるといえるもののの、開発期間の短さや、次々と採用される新機能、新メーカの参入、そして過去の機種との互換性などを考慮とすると今後とも非常に深刻な問題であるといえる。なお、auの携帯電話ではベースとなるクアルコム社製のアプリケーションプロセッサチップおよび採用されるjvmが統一されているため、メーカ間互換性の問題は原理的にはおき得ない。
開発
ドコモにより無料で提供されているDoJaエミュレータを使用してPC上で開発し、携帯電話にダウンロードさせて実行するというクロス開発の形態をとる。DoJaエミュレータはForte(Sun One Studio)などとの連動機能や、フリーソフトウェアを使用し、Eclipseとの連携を行うことができる。