FeaturesPluginsDocs & SupportCommunityPartners

NetBeans IDE 4.0 チュートリアル: J2ME MIDP デバイスの細分化 (Marv The Miner)

このチュートリアルでは、既存の Java[tm] 2, Micro Edition Platform (J2ME[tm] Platform) MIDP プロジェクトを取り扱うことができるように IDE を設定する方法、特に、デバイスの細分化の問題を解決するための NetBeans[tm] IDE の内蔵機能を使用する方法を紹介します。このチュートリアルを最後まで終えると、次のことを学ぶことができます。

  • 細分化された既存の MIDP プロジェクトを NetBeans に移植する方法
  • デバイス細分化を解決するための IDE の内蔵機能を使用する方法

このチュートリアルでは、サンプルプログラムとして、人気のある J2ME ゲーム、「Marv The Miner」を使用します。このゲームは GPL で公開され、いくつかの異なるモバイルプラットフォームで動作するように設計されています。

このチュートリアルに要する時間は 2 時間ほどで、次の事項を取り上げています。

  • 既存の MIDP プロジェクトからのソースのインポート
  • プロジェクト構成の作成、およびディストリビューション JAR ごとのプロジェクト構成のカスタマイズ
  • 各構成に固有のソースコード部分のマーク付け
  • プロジェクト用の複数のディストリビューション JAR の構築
  • IDE 内での外部エミュレータの利用

このチュートリアルに取り組むには、MarvTheMiner_120_all.zip ファイルが必要です。このファイルには、プログラムのオリジナルソースファイルが含まれています。これらのソースファイルを入手するには、ここをクリックして、「Marv the Miner v1.2.0 (including level editor)」をダウンロードしてください。

  1. 環境のセットアップ
  2. 必要なソースファイルの入手
  3. NetBeans における Marv The Miner アプリケーションの開発
  4. Marv the Miner アプリケーションの構築および実行
  5. 構成の問題
  6. UEI に準拠していないエミュレータプラットフォームの使用

環境のセットアップ

この節では、チュートリアルに取り組む前のシステムのセットアップ方法を説明します。

必要なソフトウェアの入手とインストール

サンプルプログラムを使用するには、次のソフトウェアが必要です。

ダウンロードサイトでの指示に従って、ソフトウェアをダウンロードしてください。

IDE の起動

NetBeans IDE を起動する手順は、次のとおりです。

    • Microsoft Windows の場合
      「スタート」>「プログラム」>「NetBeans version」>「NetBeans IDE」を選択します。
    • UNIX または Linux の場合
      端末ウィンドウで sh IDE-install-path/bin/runide.sh を入力します。

IDE-install-path 変数は、IDE のホームディレクトリへのパスを表します。

必要なソースファイルの入手

MarvTheMiner_120_all.zip ファイルには、オリジナルの Marv The Miner アプリケーションのソースファイルが含まれています。この zip には MarvTheMiner ディレクトリがあり、さらにこのディレクトリの下に、このチュートリアルで使用する src および res サブディレクトリがあります。

MarvTheMiner_120_all.zip を圧縮解除する手順は、次のとおりです。

  1. 使用しているファイルシステムで、MarvTheMiner_120_all.zip の内容を一時的に格納する場所を作成します。
    たとえば、このチュートリアルでは、このディレクトリを C:\temp ディレクトリとしています。
  2. ファイルを圧縮解除するアプリケーションを使用して、temp ディレクトリに MarvTheMiner_120_all.zip ファイルを圧縮解除します。temp ディレクトリに MarvTheMiner ディレクトリが作成されます。このディレクトリには、次のファイルおよびサブディレクトリが含まれています。
  3. ファイルまたはサブディレクトリ
    説明
    src Marv The Miner プログラムを構成しているソースファイル
    Res プログラムが使用するリソースファイル。画像だけでなく、ゲームレベルのレイアウトの定義に使用されている .map ファイルも含まれます。
    MarvEditor レベルエディタ (このチュートリアルでは取り扱いません)。
    Nokia.full ゲームの Nokia ビルド版
    MIDP.full ゲームの汎用の MIDP ビルド版

  4. Res ディレクトリを C:/temp/MarvTheMiner_120_all/src/ に移動します。これは、新しい NetBeans プロジェクトを作成した後でリソースファイルが正しい相対パスを維持するようにするための処置です。

NetBeans における Marv The Miner アプリケーションの開発

この節では、NetBeans IDE で新しいプロジェクトを作成し、既存のプロジェクトソースを扱うことができるようにします。

既存のソースのインポート

プロジェクトの作成

最初に、NetBeans IDE で新しいプロジェクトを作成します。

  1. メインメニューから「ファイル」>「新規プロジェクト」を選択します。
    「新規プロジェクト」ウィザードが表示されます。
  2. 「カテゴリ」一覧で「モバイル」を選択します。続けて、「既存の MIDP ソースからモバイルプロジェクトを作成」を選択し、「次へ」をクリックします。
  3. NetBeans のインストールにインストーラを使用しなかった場合は、ここで、モバイルプラットフォームをインストールするように指示するパネルが表示されます。指示に従って、必要なバージョンの Wireless Toolkit をインストールしてください。「次へ」をクリックします。
  4. 「インポートするソースの場所」の場合は、「ブラウズ」ボタンをクリックして、MarvTheMiner_120_all.zip ファイルを圧縮解除 したときに作成されたディレクトリの C:/temp/MarvTheMiner_120_all/src に移動します。src ディレクトリを選択して「開く」をクリックし、「次へ」をクリックします。
  5. 新しいプロジェクトの名前を入力します。たとえば、MarvTheMiner という名前を付けます。
  6. 新しいプロジェクトディレクトリを置くディレクトリを選択します。「主プロジェクトとして設定」チェックボックスが選択されていることを確認して、「完了」をクリックします。
    新しいプロジェクト、MarvTheMiner が作成されて、IDE の「プロジェクト」タブに表示されます。
  7. MarvTheMiner のルートオブジェクトノードを展開して、プロジェクトのソースおよびリソースを表示します。「<デフォルトのパッケージ>」ノードを展開して、 Main.java をダブルクリックします。エディタにそのファイルが開きます。

プロジェクト構成の作成

NetBeans では、「プロジェクト構成」を使用することによってデバイス細分化の問題を解決する方法を取っています。この方法では、1 つのプロジェクトに対して作成するディストリビューション JAR/JAD ごとにプロジェクト構成を 1 つ作成します。

Main.java ファイルの内容を調べると、コメント (Nokia's FullCanvas の場合) と Class.forname() を組み合わせて複数のプラットフォームをサポートしていることが分かります。また、アプリケーションが動作する電話を記録するための vendor 変数も定義されています。この情報に基づいて、次の 5 つのグループの電話をサポートしようとしていることが理解できます。

  • Nokia Series 60
  • その他の Nokia
  • Motorola
  • Vodafone
  • その他

つまり、これらのディストリビューション間の違いに対処するには、4 つの構成を作成します。

構成の作成
  1. 「MarvTheMiner」プロジェクトノードを右クリックして、「プロパティ」を選択します。
    プロジェクトの大部分のパラメータを制御するための「プロジェクトプロパティ」ページが開きます。
  2. ページの一番上にある「構成を管理」ボタンをクリックします。「プロジェクト構成マネージャ」ダイアログが開きます。
  3. 「追加」をクリックして、NokiaSeries60 を入力し、「了解」をクリックします。
  4. MotorolaVodafone、および NokiaOther に関しても、直前の手順を繰り返します。「閉じる」をクリックして、「プロジェクト構成マネージャ」ダイアログを閉じます。

これで、「プロジェクトプロパティ」ページの一番上にある「プロジェクト構成」コンボボックスには、5 つの構成が含まれています。これらの構成はこの後で使用することになりますが、ここでは IDE にエミュレータを追加してみます。

IDE へのエミュレータの追加

コンピュータにインストールしたエミュレータプラットフォームを使ってプロジェクトを実行するには、そのエミュレータを IDE に登録しておく必要があります。

  1. 「プロジェクト構成」コンボボックスで「DefaultConfiguration」を選択し、「プラットフォーム」ノードを選択します。続いて、「エミュレータを管理」ボタンをクリックします。「Java プラットフォームマネージャ」ダイアログが表示されます。

    このダイアログは、メインメニューから「ツール」>「Java プラットフォームマネージャ」を選択することによってアクセスすることもできます。

  2. 「プラットフォームを追加」をクリックして、Nokia Series 60 エミュレータがインストールされているディレクトリに移動して選択し、「次へ」をクリックします。
  3. エミュレータの設定が正しく検出されたことを確認して、「次へ」をクリックします。
  4. ここで、必要に応じてエミュレータのソースおよび Javadoc ファイルを指示することができます。必要ない場合は、単に「完了」をクリックして、プラットフォームのインストールを終了します。
  5. マシンにインストールしていて、IDE で使用するエミュレータプラットフォームごとに上記の手順を繰り返します。

    IDE が検出できるのは、UEI 規格に準拠したエミュレータだけであることに注意してください。このことは、Marv The Miner に使用されている Motorola 7.5 エミュレータは検出されないことを意味します。このチュートリアルのこの後の節では、UEI に準拠していないエミュレータを IDE で使用するための回避策を紹介します。

構成のプロジェクト設定のカスタマイズ

どのプロジェクト構成も、「プロジェクトプロティ」ページで個別にすべてのパネルでカスタマイズを行うことができます。デフォルトでは、構成は、デフォルトの構成で定義されている設定を使用します。

  1. 「プロジェクトプロパティ」ページを開き、「プラットフォーム」パネルを選択します。「プロジェクト構成」コンボボックスで DefaultConfiguration が選択されていることを確認します。
  2. 「エミュレータプラットフォーム」コンボボックスで J2ME Wireless Toolkit 2.x を選択します。「CLDC-1.0」および「MIDP-2.0」のラジオボタンを切り替えます。
    デフォルトでは、プロジェクトの構築および実行のこのエミュレータを使用します。ただし、コードはプラットフォーム固有の複数のライブラリを参照するため、これから行うことはデフォルトの設定とは異なります。
  3. 「プロジェクト構成」コンボボックスから NokiaSeries60 構成を選択します。
    「プラットフォーム」パネルが完全にグレー表示になります。これは、現在のところ、このパネルに対して DefaultConfiguration の値を使用するようになっているためです。
  4. パネルの一番上にある「"DefaultConfiguration" の値を使用」チェックボックスを選択解除します。
    これで、パネルのすべての要素が設定可能になります。「エミュレータプラットフォーム」コンボボックスから Series 60 MIDP Concept SKD Beta 0.3.1 Nokia プラットフォームを選択します。

    構成を切り替えると、NokiaSeries60 を除くすべての構成が DefaultConfiguration で指定された値を使用するようになっていることが分かります。DefaultConfiguration の「プラットフォーム」パネルの構成の設定を変更すると、NokiaSeries60 以外のすべての構成にその変更が伝搬されます。

  5. 「プロジェクト構成」コンボボックスから NokiaOther 構成を選択します。「"DefaultConfiguration" の値を使用」チェックボックスを選択解除して、インストールされている他の Nokia プラットフォームの 1 つを選択します。
  6. Vodafone プラットフォームについても、これらの操作を繰り返します。
  7. すでに触れているように、Motorola 7.5 エミュレータは UEI に準拠していません。このため、IDE に組み込むことはできません。ただし、コンパイルを目的としてその API を指示することはできます。Motorla 構成を有効にして、「ライブラリおよびリソース」パネルを選択します。
  8. 「"DefaultConfiguration" の値を使用」チェックボックスを選択解除します。
  9. 「JAR/ZIP を追加」をクリックして、{motorola install directory}\Emulator7.5\lib に移動します。Ctrl キーを使用して、各 .zip ファイルを選択し、「開く」をクリックします。
  10. 「了解」をクリックして、プロジェクトプロパティを終了します。これで第一段階のプロジェクト構成の作成作業は終えました。
構成ごとの専用のコードブロックの作成

デバイス細分化の問題を解決するための第 2 の機能は、ソースファイル内の特定のコードブロックを 1 つまたは複数の構成に固有のブロックとして指定する機能です。これは、エディタで右クリックしたときに表示されるコンテキストメニューで提供するアクション、または「編集」>「プリプロセッサブロック」メニューを使用して行います。

  1. Main.java を開いて、initStaticData() メソッドの内容を見てみます。このメソッドは、使用可能なデバイス固有の API を実行時に判定し、その API に従って動作します。これは、デバイス細分化の問題点をいくつか解決する非常に賢い方法です。しかしながら、他方で、ディストリビューション JAR のサイズの増加や実行時パフォーマンスに対する影響、ソースの複雑化などの問題点もあり、後で見るように、細分化の問題点のすべてを解消するわけではありません。
  2. 以下は、これに関係する initStaticData() の部分です。

       vendor = 0;
       try
       {
           // Nokia
           Class.forName("com.nokia.mid.sound.Sound");
           vendor = 1;
           try
           {
               Class.forName("com.nokia.mid.ui.DeviceControl");
               com.nokia.mid.ui.DeviceControl.setLights(0,100);
               vendor = 2;
           }
           catch(Exception ex2){}
       }
       catch(Exception ex){}
    
       try
       {
           // Vodafone
           Class.forName("com.vodafone.v10.system.device.DeviceControl");
           com.vodafone.v10.system.device.DeviceControl.getDefaultDeviceControl().
               setDeviceActive(com.vodafone.v10.system.device.DeviceControl.BACK_LIGHT,
               true);
           vendor = 3;
       }
       catch(Exception ex){}
    
       try
       {
           // Motorola
           Class.forName("com.motorola.multimedia.Vibrator");
           Class.forName("com.motorola.multimedia.Lighting");
           com.motorola.multimedia.Lighting.backlightOn();
           vendor = 4;
       }
       catch(Exception ex){}
                        
  3. プログラムが動作するデバイスの判定にだけ関係している機能のすべてを削除します。残りのコードは次のようになります。
  4.  // Nokia
       com.nokia.mid.ui.DeviceControl.setLights(0,100);
    
       // Vodafone
       com.vodafone.v10.system.device.DeviceControl.
       	getDefaultDeviceControl().
       	setDeviceActive(com.vodafone.v10.system.device.DeviceControl.BACK_LIGHT,
       			true);
    
       // Motorola
       com.motorola.multimedia.Lighting.backlightOn();
                        

    これで、それぞれの構成に関係する 3 つのブロックが残ったことになります。

  5. Motorola 固有の行を強調表示して、エディタで右クリックし、「プリプロセッサブロック」>「Motorola」を選択します。
  6. Vodafone のブロックについても、この操作 (「プリプロセッサブロック」>「Vodafone」) を行います。
  7. Nokia のコードの場合は、「プリプロセッサブロック」>「プリプロセッサブロックを管理」を選択します。
    「プリプロセッサブロックを管理」ダイアログが開きます。
  8. NokiaOther および NokiaSeries60 の両方のオプションを選択して、「了解」をクリックします。
  9. これで、これらのコードブロックが、プリプロセッサブロックのヘッダーおよびフッターに示されている構成に関連付けられたことになります。プロジェクトのアクティブな構成を変更すると、有効な構成がプリプロセッサブロックのヘッダーおよびフッターに含まれているかどうかに基づいてブロックをコメントインまたはコメントアウトするプリプロセッサが作動します。

  10. メインツールバーにあるコンボボックスを使用して、プロジェクトの有効な構成を変更します。この変更は、プロジェクトのノードを右クリックして、メインの「構築」メニューにある同じメニューから「有効なプロジェクト構成を設定」を選択し、構成を選択することによって、あるいはメインのツールバーにある「構成」コンボボックスを切り替えることによって (プロジェクトが主プロジェクトの場合) 、行うことができます。

    コードブロックの強調表示機能によって、色が切り替えられて、有効または有効でないブロックが見分けられることに注意してください。また、コードブロックのヘッダー/フッター内の有効な構成名は別の色で強調表示されます。
  11. beep() メソッドから class.forName() のすべてのインスタンスを削除します。if ブロックも短縮した場合、残りのコードは次のようになります。
  12. if (midlet.muteSound == 0)
    {
       // Nokia 3650, 7650
       com.nokia.mid.sound.Sound sound = new com.nokia.mid.sound.Sound(1000,100);
       sound.play(1);
    // 他のすべての Nokia
       com.nokia.mid.sound.Sound sound = new com.nokia.mid.sound.Sound(1000,100);
       sound.play(1);
    
    }
    
    if (midlet.useVibra == 1)
    {
       // Nokia
       com.nokia.mid.ui.DeviceControl.startVibra(50,500);
         // Vodafone SDK
       com.vodafone.v10.system.device.DeviceControl.
       	getDefaultDeviceControl().
       		setDeviceActive(
       			com.vodafone.v10.system.device.DeviceControl.VIBRATION,
       			true);
       vibra_delay = 10;
    
       // Motorola 7.5
       com.motorola.multimedia.Vibrator.
       	setVibrateTone(
       		com.motorola.multimedia.Vibrator.VIBRATE_LONG);
       com.motorola.multimedia.Vibrator.vibrateFor(500);
    
    }
    

    これで、各ブロックをそれぞれ適切な構成に関連付けることができます。Nokia の振動呼び出し (vibration control call) は、Nokia の両方の構成に関連付けることを忘れないでください。

  13. run() メソッドにも、Vodafone 固有の呼び出しがあります。try/catch ブロックを削除して、2 行を Vodafone 構成に関連付けます。
  14. これでおおよその作業は完了しました。最後の作業は、Nokia の FullCanvas に少し手を加えることです。

  15. NokiaSeries60 の構成を有効にします。
  16. FullCanvas 宣言で右クリックして、「If/Else ブロックを作成 (NokiaSeries60)」 を選択します。
  17. 最初のブロックで右クリックして、「NokiaOther」を追加します。
  18. 2 つ目のブロックで右クリックして、「NokiaOther」を追加します。
  19. 2 つ目のブロックが反転表示になります。反転表示されたブロックのクラス定義を extend Canvas に変更します。

この操作を完了すると、クラス定義が以下のようになります。

Marv the Miner アプリケーションの構築および実行

アプリケーションの構築と実行

この時点で、すべてのすべての構成でプログラムをコンパイル、実行することができます。メインツールバーにあるアイコンをどれかクリックすると、「アクティブ」な構成の選択されたアクションが実行されます。

  1. メインメニューから「構築」>「主プロジェクトのすべての構成を構築」を選択します。
    すべての情報が正しく設定されていると、この操作ですべての構成が構築されます。

    適切な API を含むエミュレータプラットフォームにアクセスできない場合、この操作は失敗することがあります。その場合は、存在しない API を呼び出す行をすべて手動でコメントアウトします。

    非 UEI エミュレータの節に説明している Motorola エミュレータを手動でインストールする手順に従わなかった場合、事前検証は失敗します。手動でエミュレータを追加することなくこの構成をコンパイルするには、Motorola API 呼び出しをすべてコメントアウトして、「ライブラリおよびリソース」パネルですべての Motorola ライブラリを削除します。

  2. IDE の左上の「ファイル」タブを選択して、「dist」フォルダを展開します。構築の結果、このフォルダには、DefaultConfiguration の構築を表す JAR/JAD ばかりでなく、構築に成功した各構成の JAR/JAD を含むディレクトリが含まれています。
  3. F5 キーを押して、現在選択している構成でプログラムを実行します。構成を切り替え、再度 F5 キーを押すことによって、同時にプログラムの複数のバージョンを実行することができます。

5. 構成の問題

このチュートリアルは、既存の MIDP プロジェクトを NetBeans 環境にインポートする方法を理解するのに有用な情報を提供していますが、IDE が解決するデバイス細分化の問題点のすべてを取り扱っているわけではありません。以下では、一般的な問題点と IDE におけるその解決方法を示す例をさらに紹介します。

  • 「一般」ページを除き、「プロジェクトプロパティ」ページの各パネルは構成別にカスタマイズできます。これにより、非常に大きな柔軟性が得られます。たとえば、個々の構成の一意名を持つディストリビューション JAR ごとに MIDlet-Version を変えることができます (「JAR の作成」パネル)。
  • プロジェクト間の依存関係の設定、特に「プロジェクト構成」を使用する場合は、「プロジェクトを選択」ダイアログの「プロジェクト JAR ファイル」リストボックスでの出力 JAR の選択を間違えないように注意します。プロジェクト JAR は、選択されたプロジェクト内の構成 1 つに 1 つ表示されます。

    たとえば MyLibrary と MyApplication という 2 つのプロジェクトがあり、両方に ReleaseConfiguration と DebugConfiguration という 2 つの構成がある場合は、次の手順で正しく依存関係を設定します。

    • MyApplication の「プロジェクトプロパティ」を開きます。「プロジェクト構成」コンボボックスから ReleaseConfiguration を選択します。
    • 「ライブラリおよびリソース」パネルを選択して、「プロジェクトを追加」ボタンをクリックします。
    • MyLibrary プロジェクトがある場所に移動します。「プロジェクト JAR ファイル」リストボックスに、3 つのプロジェクト JAR が含まれています。dist/ReleaseConfiguration/ にある JAR を選択して、「プロジェクト JAR ファイルを追加」をクリックします。
    • DebugConfiguration に切り替えて、上記の手順を繰り返します。ただし、今度は、dist/DebugConfiguration/ にあるプロジェクト JAR を追加します。

    これは、構成が関係しているときにプロジェクト間の依存関係を設定する方法です。

  • IDE の提供する解決策は VCS フレンドリーです。すべてのソースファイルは、つねに、DefaultConfiguration が選択されているかのようにハードディスクドライブに保存されます。これによって、別の構成が有効であることが原因で発生する VCS チェックインあるいは更新中の衝突が防止されます。必ず同じ project.properties ファイル ({projecthome}/nbproject) を共用してください。
  • プロジェクトは、IDE を使わずに、コマンド行から実行できます。プロジェクトのホームディレクトリで単に ant run と入力すると、有効な構成を使ってプロジェクトが実行されます。ant run -Dconfig.active={config_name} を使用して、Ant スクリプトに別の構成を渡すことができます。
  • 既存のプリプロセッサ情報を使用するプロジェクトのインポートは簡単です。NetBeans プリプロセッサは他と比べて複雑ではありませんが、どのような状況も、用意されている指示子を使って表現できます。
  • 「ライブラリおよびリソース」または「フィルタ」パネルを使用して、ディストリビューション JAR に配備するリソースのバージョンを指定することができます。
    • ライブラリおよびリソース: アプリケーションのすべてリソースを含む JAR ファイルを複数バージョン作成し、構成ごとに適切なバージョンの JAR ファイルを指示します。たとえば、名前は同じで解像度が異なるリソースが含まれる、large_res.Jarmedium_res.Jar、および small_res.Jar という 3 つの JAR が存在すると仮定します。こうして、適切なバージョンで Nokia_large、Nokia_med、Nokia_small 構成を指示します。
    • フィルタ: src ディレクトリ内または下に直接リソースを置いて、「フィルタ」のツリーを使用し、ディストリビューション JAR に含めるリソースのバージョンを制御します。

UEI に準拠していないエミュレータプラットフォームの使用

IDE が自動的に検出できるのは、UEI 仕様に準拠したサードパーティのエミュレータプラットフォームですが、UEI に準拠していないエミュレータを使用できないわけではありません。この節では、その方法を説明します。

  • UEI に準拠していないエミュレータの追加
    1. ユーザーホームディレクトリ (Windows のデフォルトは C:\Documents and Settings\{username}\.netbeans、Linux のデフォルトは /home/{username}/.netbeans) に移動して、{userhome}\config\Services\Platforms\org-netbeans-api-java-Platform ディレクトリの内容を調べます。
      このディレクトリには、インストールされているエミュレータプラットフォームを定義している XML ファイルが含まれます。UEI に準拠していないどのエミュレータについても、この XML ファイルを手動で作成することができます。この XML ファイルの DTD は、http://www.netbeans.org/dtds/j2me-platformdefinition-1_0.dtd にあります。
    2. このチュートリアルに必要な Motorola 7.5 エミュレータを使用するには、SDK_4.1_MRI_7.5.xml というファイル名で以下のコードを保存します。" は意図的に使用されています。そのまま保存してください。
    3. 
      <?xml version='1.0'?>
      <!DOCTYPE platform PUBLIC '-//NetBeans//DTD J2ME PlatformDefinition 1.0//EN'
      	'http://www.netbeans.org/dtds/j2me-platformdefinition-1_0.dtd'>
      <platform name="Motorola_7_5"
      home="C:\WTK\Motorola\SDK v4.1 for J2ME\Emulator7.5"
      type="custom"
      displayname="Motorola 7.5"
      srcpath=""
      preverifycmd="&quot;{platformhome}/bin/preverify.exe&quot;
      	-classpath &quot;{classpath}&quot; -d &quot;{destdir}&quot;
      	&quot;{srcdir}&quot;"
      runcmd="">
          <device name="Motorola_7_5" securitydomains="trusted,untrusted"
          	description="Motorola_7_5">
              <configuration name="CLDC" version="1.1" displayname="CLDC"
              	classpath="${platform.home}/lib/cldc.zip"
              	dependencies="" default="true"/>
              <profile name="MIDP" version="2.0" displayname="MIDP"
              	classpath=";${platform.home}/lib/midp.zip"
              	dependencies="" default="true"/>
          </device>
      </platform>
      

      この XML ファイルを保存したら、IDE を再起動する必要があります。再起動すると、Motorola 7 5 をプラットフォーム、Motorola_7_5 をデバイスとして選択できます。この新しいプラットフォームに Motorola の構成を関連付けます。手動でインストールしたプラットフォームが検出されるには、{userhome}\var\cache にあるキャッシュファイルの削除が必要になることがあることに注意してください。ただし、同じフォルダに mdrstorage フォルダが存在する場合、そのフォルダは削除しないでください。

      runcmd 属性に空の文字列が設定されていることに注意してください。これは、この Motorola エミュレータを起動するコマンドが、そのパラメータの 1つとして、実行する MIDlet を受け取るためです。これは UEI 規格にはないもので、IDE で直接サポートすることはできません。ただし、次のような場合もあります。

    4. 使用するエミュレータプラットフォームが UEI エミュレータに提供するのより多くの情報を必要としない場合、この手順は省略できます。UEI エミュレータに以下の情報が提供されます。
      • セキュリティドメイン
      • プラットフォームの種類
      • プラットフォームのホーム
      • JAD の場所
      • JAD の出力先ディレクトリ /JAD 名

    エミュレータが、プロジェクト JAR の場所や実行する MIDlet の名前などの追加の情報を必要とする場合は、プロジェクトのホームディレクトリにある build.xml ファイルを変更することによって、そのエミュレータを実行できます。

    このファイルは、プロジェクトのすべての動作を制御します。ここで、Motorola エミュレータを実行して、Motorola の構成に対して「実行」アクションが呼び出されるたびに適切なすべての情報を渡す新しいターゲットを作成することができます。

    プロジェクトの build.xml に次のコードを追加してください。

    <target description="Run MIDlet suite." depends="init" name="run">
            <condition property="run.motorola">
                <!-- arg2 must match the configuration name
                        you would like to use the special emulator -->
                <equals arg1="${config.active}" arg2="Motorola"/>
            </condition>
            <ant inheritrefs="true" inheritall="true" target="run_normal"/>
    
            <ant inheritrefs="true" inheritall="true" target="run_motorola"/>
    
        </target>
    
        <target description="Run MIDlet suite the normal way." depends="init"
        	name="run_normal" unless="run.motorola">
    
        	<nb-run commandline="${platform.runcommandline}"
            	securitydomain="${evaluated.run.security.domain}"
            	execmethod="${run.method}" platformtype="${platform.type}"
            	platformhome="${platform.home}" device="${platform.device}"
            	jadurl="${dist.jad.url}" jadfile="${dist.dir}/${dist.jad}"/>
        </target>
    
        <target description="Run MIDlet suite for motorola's non-UEI emulator."
        	depends="init" name="run_motorola" if="run.motorola">
            <property name="project.home" location="."/>
    
            <!-- the last arg line contains an value "Miner".
                    This must match the name of the midlet you want to execute  -->
            <java dir="${platform.home}/bin"
                  fork="true"
                  classname="com.mot.tools.j2me.emulator.Emulator"
                  classpath="${platform.home}/bin/Emulator.jar;${platform.home}/bin/configtool.jar">
                <jvmarg value="-Djava.library.path=${platform.home}/lib"/>
                <arg value="-classpath${project.home}/${dist.dir}/${dist.jar}"/>
                <arg line="-deviceFile"/>
                <arg value="${platform.home}/bin/RESOUR~1/T720I~1.PRO"/>
                <arg line="javax.microedition.midlet.AppManager Miner -JSA 1 1"/>
            </java>
    
        </target>
    
    

    これで、有効な構成が Motorola の場合は、必ず run_motorola ターゲットが実行されます。それ以外の場合は、 run_normal ターゲット (通常のエミュレータを使用) が起動されます。

    これで、Marv the Miner チュートリアルは終了です。

  • Bookmark this page

    del.icio.us furl simpy slashdot technorati digg

    用語集

    MIDP
    J2ME プラットフォームに対し、Mobile Information Device Profile (MIDP) は Java API の標準セットを定義します。 この標準セットは、Connected Limited Device Configuration (CLDC) とともに使用することによって、携帯電話、双方向ページャ、無線携帯端末などの携帯情報デバイスをターゲットとする、J2ME アプリケーションの完成されたアプリケーション実行時環境を提供します。

    MIDP プロファイルでは、以下の項目を定義します。

    • ディスプレイツールキット
    • ユーザー入力の方法
    • レコードに基づく単純なデータベースモデルを使用した持続データ記憶領域
    • CLDC 汎用接続フレームワークを使用した、HTTP 1.1 に基づくネットワーキング

    MIDP 1.0 標準は、JSR-37 で定義されています。

    MIDP 2.0 規格は、JSR-118 で定義されています。

    デバイス細分化
    デバイスの機能を拡張するために個別ベンダー専用の API や独自の API、あるいは任意の API をモバイルデバイスに追加したときに生じる状況。

    画面サイズや発色数、使用可能なメモリーなどのその他のデバイス属性も、デバイス細分化の原因になります。

    UEI (Unified Emulator Interface)
    コマンド行からのエミュレータ機能へのアクセス方法を規定した規格集

    関連マニュアル

    既存の J2ME MIDP アプリケーションを NetBeans IDE 4.0 Beta に取り込む方法を簡潔にまとめています。
    単純な J2ME MIDP アプリケーションを短時間に作成、構築して実行します。
    J2ME MIDP アプリケーションを作成、構築、実行する工程を案内するチュートリアルです。
    Companion
    Projects:
    MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by