付録B


コマンド行リファレンス

この付録では、Sun JavaTM Wireless Toolkit for CLDC をコマンド行から実行する方法と、アプリケーションのビルドおよび実行の詳細な手順を説明します。また、MEKeyTool と呼ばれる Sun JavaTM Wireless Toolkit for CLDC の証明書マネージャーユーティリティーと、JadTool (Java Application Descriptor Tool) と呼ばれる MIDlet 署名ユーティリティーについても説明します。


B.1 前提条件

コマンド行からアプリケーションをビルドして実行する前に、Java SE ソフトウェア開発キットのバージョンが 1.4.2 以降であることを確認してください。jar コマンドが、パスに含まれていることを確認してください。開発キットのバージョンを確認するには、jar コマンドを実行したあと、コマンド行で java -version を実行します。

関連する例については、デモアプリケーションの bin ディレクトリにあるファイル build.batrun.bat について見てみます。これらのファイルは、次の場所にあります。


Windows:

toolkit¥apps¥demo¥bin

Linux:

toolkit/apps/demo/bin


 

toolkit は、Sun JavaTM Wireless Toolkit for CLDC のインストールディレクトリで、demo はデモアプリケーションの名前を表します。


B.2 開発サイクル

MIDP アプリケーションの開発に関する詳細については、第 2 章を参照してください。この節では、開発サイクルの各手順をコマンド行から実施する方法について説明します。

B.2.1 ビルド

ユーザーインタフェースで、1 つの手順でプロジェクトをビルドできます。ただし、実際には、バックグラウンドで 2 つの手順が実行されます。まず、Java ソースファイルをコンパイルして、Java クラスファイルを生成します。次に、クラスファイルの「事前検証」を行なって、CLDC KVM で使用できるようにします。

Java ソースファイルをコンパイルするには、Java SE 開発キットの javac コンパイラを使用します。既存の Sun JavaTM Wireless Toolkit for CLDC プロジェクトのディレクトリ構造を使用できます。MIDP API を使用するようにコンパイラに指示するには、-bootclasspath オプションを指定する必要があります。コンパイル済みクラスファイルの保存先をコンパイラに指示するには、-d オプションを指定します。

次の例は、ソースファイルを src ディレクトリから取り出し、クラスファイルを tmpclasses ディレクトリに出力して、MIDP 2.0 アプリケーションをコンパイルする方法を示しています。わかりやすくするために改行が追加されています。

Windows

javac  -bootclasspath ..¥..¥lib¥cldcapi10.jar;..¥..¥lib¥midpapi20.jar  -d tmpclasses  src¥*.java

Linux

javac  -bootclasspath ../../lib/cldcapi10.jar;../../lib/midpapi20.jar  -d tmpclasses  src/*.java

ツールキットでサポートされているオプションの API を使用する場合は、その JAR ファイルを -bootclasspath オプションに追加します。

javac の詳細は、Java SE のマニュアルを参照してください。

次の手順では、クラスファイルの事前検証を行います。Sun JavaTM Wireless Toolkit for CLDC の bin ディレクトリに、preverify という便利なユーティリティーがあります。preverify コマンドの構文は次のとおりです。

preverify [options] files | directories

次のようなオプションがあります。

-classpath classpath

クラスを読み込む場合の基になるディレクトリや JAR ファイルを、セミコロン (;) で区切ったリストの形式で指定します。

-d output-directory

出力クラスのターゲットディレクトリを指定します。このディレクトリは、実行前検証を行う前に作成しておく必要があります。このオプションを指定しなかった場合は、クラスは output というディレクトリに出力されます。

コンパイルの例に続いて、次のコマンドを使ってコンパイル済みクラスファイルを検証します。前の例と同様に、わかりやすくするために改行を追加しています。

Windows

preverify  -classpath ..¥..¥lib¥cldcapi10.jar;..¥..¥lib¥midpapi20.jar  -d classes  tmpclasses

Linux

preverify  -classpath ../../lib/cldcapi10.jar;../../lib/midpapi20.jar  -d classes  tmpclasses

このコマンドを実行すると、事前検証済みのクラスファイルが classes ディレクトリに出力されます。アプリケーションが WMA または MMAPI を使用している場合や、ほかのバージョンの CLDC または MIDP を使用している場合には、関連する .jar ファイルを必ず classpath に含めてください。

B.2.2 パッケージ化

MIDlet スイートをパッケージ化するには、マニフェストファイル、アプリケーション JAR ファイル、最後に MIDlet スイート記述子を作成します。

MIDP 仕様の説明に従って、適切な属性が記述されているマニフェストファイルを作成します。マニフェストファイルは、任意のテキストエディタで作成できます。たとえば、マニフェストファイルに次の情報を記述します。

MIDlet-1: My MIDlet, MyMIDlet.png, MyMIDlet
MIDlet-Name: MyMIDlet
MIDlet-Vendor: My Organization
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC -1.0
MicroEdition-Profile: MIDP -2.0

マニフェストファイル、および MIDlet スイートのクラスファイルとリソースファイルを組み込んだ JAR ファイルを作成します。この JAR ファイルを作成するには、Java SE ソフトウェア開発キットに付属している jar ツールを使用します。構文は次のとおりです。

jar cfm file manifest -C class-directory .-C resource-directory .

引数は次のとおりです。

たとえば、classes ディレクトリのクラスファイルと res ディレクトリのリソースファイルから MyApp.jar という JAR ファイルを作成するには、次のコマンドを使用します。

jar cfm MyApp.jar MANIFEST.MF -C classes .-C res .

MIDP 仕様の説明に従って、適切な属性が記述されている JAD ファイルを作成します。JAD ファイルは、任意のテキストエディタで作成できます。このファイルには拡張子 .jad を付ける必要があります。



注 - MIDlet-Jar-Size エントリを、前の手順で作成した JAR ファイルのサイズに設定する必要があります。



たとえば、JAD ファイルに次の情報を記述します。

MIDlet-Name: MyMIDlet
MIDlet-Vendor: My Organization
MIDlet-Version: 1.0
MIDlet-Jar-URL: MyApp.jar
MIDlet-Jar-Size: 24601

B.2.3 実行

コマンド行からエミュレータを実行できます。Sun JavaTM Wireless Toolkit for CLDC の bin ディレクトリに、emulator というコマンドがあります。emulator コマンドの構文は次のとおりです。

emulator options

一般的なオプションは次のとおりです。

MIDlet スイートの実行に関連するオプションは次のとおりです。

-Dcom.sun.midp.io.http.proxy=proxy-host:proxy-port

-Dcom.sun.midp.midlet.platformRequestCommand=browser

呼び出し例は次のようになります。

emulator -Dcom.sun.midp.midlet.platformRequestCommand=firefox -Xjam:install=URL-to-app-using-platformRequest-method

常に同じブラウザを使用する場合は、toolkit/lib/system.config に次の行を追加できます。

com.sun.midp.midlet.platformRequestCommand: browser

Windows: Windows の場合、このパラメータが指定されていないと、デフォルトのブラウザが使用されます。

Linux: Linux では、通常、Linux システムにデフォルトのブラウザがないため、このパラメータが必要です。パラメータが指定されていない場合、アプリケーションが URL を開こうとしても何も起こりません。

install=jad-file-url | force | list | storageNames|

指定した JAD ファイルを使用して、アプリケーションをデバイス上にインストールします。

または次のように指定します。

run=[storage-name | storage-number]

インストール済みのアプリケーションを実行します。対象のアプリケーションは、有効なストレージ名またはストレージ番号を使用して指定します。

remove=[storage-name | storage-number | all]

インストール済みのアプリケーションを削除します。対象のアプリケーションは、有効なストレージ名またはストレージ番号を使用して指定します。all を指定すると、インストール済みのアプリケーションがすべて削除されます。

B.2.4 デバッグ

デバッグやトレースを行うには、エミュレータで次のオプションを使用します。


B.3 ツールキットの GUI コンポーネントの起動

Sun JavaTM Wireless Toolkit for CLDC のコンポーネントは、すべてコマンド行から起動できます。各コンポーネントは、ツールキットの bin ディレクトリにあります。


表 B-1 ツールキットコンポーネントのコマンド

コマンド

説明

DefaultDevice

デフォルトのエミュレータスキンを選択するためのダイアログを表示します

ktoolbar

ユーザーインタフェースを起動します。

prefs

ツールキットの環境設定を起動します

utils

ツールキットのユーティリティーウィンドウを起動します


 


B.4 エミュレータの環境設定

エミュレータの環境設定をコマンド行から変更するには、-Xprefs オプションを指定して emulator コマンドを実行します。構文は次のとおりです。

-Xprefs:filename

filename には、プロパティーファイルのフルパス名を指定します。このファイルの値によって、「環境設定」ダイアログボックスの値が上書きされます。プロパティーファイルには、次の表に示すプロパティーを記述できます。


表 B-2 エミュレータの環境設定 プロパティー一覧

プロパティー名

プロパティーの説明と有効値

http.version

「ネットワーク構成」->「HTTP バージョン」

値: HTTP/1.1、HTTP/1.0

http.proxyHost

「ネットワーク構成」->「HTTP アドレス」

値: ホスト名

http.proxyPort

「ネットワーク構成」->「HTTP ポート」

値: 整数

https.proxyHost

「ネットワーク構成」->「HTTPS アドレス」

値: ホスト名

https.proxyPort

「ネットワーク構成」->「HTTPS ポート」

値: 整数

kvem.memory.monitor.enable

「モニター」->「メモリーモニターを有効にする」

値: true、false

kvem.netmon.comm.enable

「モニター」->「Comm モニターを有効にする」

値: true、false

kvem.netmon.datagram.enable

「モニター」->「Datagram モニターを有効にする」

値: true、false

kvem.netmon.http.enable

「モニター」->「HTTP モニターを有効にする」

値: true、false

kvem.netmon.https.enable

「モニター」->「HTTPS モニターを有効にする」

値: true、false

kvem.netmon.socket.enable

「モニター」->「Socket モニターを有効にする」

値: true、false

kvem.netmon.ssl.enable

「モニター」->「SSL モニターを有効にする」

値: true、false

kvem.profiler.enable

「モニター」->「プロファイラを有効にする」

値: true、false

netspeed.bitpersecond

「パフォーマンス」->「(ビット/秒)」コンボボックス

値: 整数

netspeed.enableSpeedEmulation

「パフォーマンス」->「ネットワークスループットエミュレーションを有効」

値: true、false

screen.graphicsLatency

「パフォーマンス」->「グラフィックプリミティブの応答時間」

値: 整数

screen.refresh.mode

「パフォーマンス」->「表示の更新」(ラジオボタン)

値: default、immediate、periodic

screen.refresh.rate

「パフォーマンス」->「表示の更新」(スライダ)

値: 整数

vmspeed.bytecodespermilli

「パフォーマンス」->「VM スピードエミュレーションを有効」(チェックボックス)

値: 整数

vmspeed.enableEmulation

「パフォーマンス」->「VM スピードエミュレーションを有効」(スライダ)

値: true、false

storage.root

「ストレージ」->「ストレージルートディレクトリ」

値: 文字列 (appdb への相対パス)

storage.size

「ストレージ」->「ストレージサイズ」

値: 整数

mm.control.capture

「MMedia」->「サウンドの取り込み」

値: true、false

mm.control.midi

「MMedia」->「MIDI 音質」

値: true、false

mm.control.mixing

「MMedia」->「サウンドのミキシング」

値: true、false

mm.control.record

「MMedia」->「サウンドの録音」

値: true、false

mm.control.volume

値: true、false

mm.format.midi

「MMedia」->「MIDI 形式」

値: true、false

mm.format.video

「MMedia」->「ビデオ形式」

値: true、false

mm.format.wav

「MMedia」->「WAV オーディオ形式」

値: true、false

wma.client.phoneNumber

「WMA」->「次のエミュレータの電話番号」

値: 整数

wma.server.firstAssignedPhoneNumber

「WMA」->「最初に割り当てられた電話番号」

値: 整数

wma.server.percentFragmentLoss

「WMA」->「% のランダムメッセージ断片の消失」

値: 整数

wma.server.deliveryDelayMS

「WMA」->「メッセージ断片の配信遅延」

値: 整数


 


B.5 セキュリティー機能の使用

Sun JavaTM Wireless Toolkit for CLDC のセキュリティー機能も、すべてコマンド行から起動できます。エミュレータのデフォルト保護ドメインの変更、MIDlet スイートへの署名、および証明書の管理を行うことができます。

B.5.1 エミュレータのデフォルトの保護ドメインの変更

エミュレータのデフォルトの保護ドメインを変更するには、次のオプションを指定して emulator コマンドを実行します。

-Xdomain domain-type

MIDlet スイートにセキュリティードメインを割り当てます。ドメインタイプには、untrustedtrustedminimum、および maximum があります。

B.5.2 MIDlet スイートへの署名

JadTool は MIDlet スイートに署名するためのコマンド行インタフェースで、MIDP 2.0 仕様に準拠した公開鍵暗号方式を使用します。MIDlet スイートの署名とは、JAR ファイルの署名者の証明書とデジタル署名を JAD ファイルに追加することです。JadTool は、支払い更新 (JPP) ファイルにも署名できます。

JadTool は、Java SE プラットフォームキーストアに保管されている証明書とキーだけを使用します。Java SE ソフトウェアには、Java SE プラットフォームキーストアを管理するためのコマンド行ツール keytool が用意されています。

JadTool ユーティリティーは JAR ファイルにパッケージ化されています。このユーティリティーを起動するには、コマンドプロンプトを開き、カレントディレクトリを toolkit¥bin に変更し、次のコマンドを入力します。

java -jar JadTool.jar command

コマンドは次のとおりです。

JADTool の使用法を出力します。

指定したキーストアのキーペアの証明書を JAD ファイルまたは JPP ファイルに追加します。

指定した JAR ファイルのデジタル署名を、指定した JAD ファイルに追加します。-jarfile のデフォルト値は、JAD ファイル内の MIDlet-Jar-URL プロパティーです。

指定した JAD ファイル内の証明書のリストを表示します。

入力 JPP ファイルのデジタル署名を、指定した出力 JPP ファイルに追加します。

デフォルト値は次のとおりです。

B.5.3 証明書の管理

MEKeyTool は、Java SE SDK に付属している keytool ユーティリティーと同様に、認証局 (CA) の公開鍵を管理します。この公開鍵を使用すると、SSL を使用し、セキュリティー保護された HTTP 通信 (HTTPS) が簡単になります。

MEKeyTool を使用する前に、Java Cryptography Extension キーストアにアクセスできるようにしておく必要があります。これは、Java SE keytool ユーティリティーを使用して作成できます。

Windows

http://java.sun.com/javase/6/docs/technotes/tools
/windows/keytool.html

Linux

http://java.sun.com/javase/6/docs/technotes/tools
/solaris/keytool.html

MEKeyTool を起動するには、コマンドプロンプトを開き、カレントディレクトリを toolkit¥bin に変更し、次のコマンドを入力します。


Windows:

toolkit¥bin¥mekeytool.exe -command

Linux:

toolkit/bin/mekeytool -command


 

コマンドのキーワードは次のようになります。MEKeyTool はインストールディレクトリから起動しますが、デフォルトのキーとユーザーが作成するキーは各ユーザーの個人用ディレクトリ (workdir¥appdb) に存在します。

MEKeyTool の使用法を出力します。

指定された JCE キーストアパスワードを使用して、指定された Java Cryptography Extension キーストアから ME キーストアに公開鍵をインポートします。デフォルトの ME キーストアは workdir¥appdb¥_main.mks、デフォルトの Java Cryptography Extension キーストアは user.home¥.keystore です。

ME キーストアに含まれているキーと、これらのキーの所有者と有効期限を一覧表示します。ME キーストアは workdir¥appdb¥_main.mks です。

ME キーストアから、指定された所有者が所有しているキーを削除します。ME キーストアは workdir¥appdb¥_main.mks です。



注 - Sun JavaTM Wireless Toolkit for CLDC には、_main.ks という ME キーストアが含まれています。このキーストアは appdb サブディレクトリにあります。このキーストアには、デフォルトの Java SE プラットフォームキーストア内のすべての証明書が含まれています。Java SE プラットフォームキーストアは Java SE SDK で提供されます。




B.6 スタブジェネレータの使用

スタブジェネレータを使用して、モバイルクライアントから Web サービスにアクセスすることができます。wscompile ツールによって、Java API for XML (JAX) RPC のクライアントとサービスで使用されるスタブ、タイ、シリアライザ、および WSDL ファイルが生成されます。このツールを実行するときには、設定ファイルを読み込みます。このファイルには、WSDL ファイル、モデルファイル、またはコンパイル済みのサービスエンドポイントインタフェースが指定されています。スタブジェネレータコマンドの構文は次のとおりです。

wscompile [options] configuration-files 

B.6.1 オプション


表 B-3 wscompile コマンドのオプション

オプション

説明

-d output directory

生成される出力ファイルの配置場所を指定します

-f:features

指定された機能を有効にします

-features:features

-f:features と同じです

-g

デバッグ情報を生成します

-gen

-gen:client と同じです

-gen:client

クライアントアーティファクト (スタブなど) を生成します

-httpproxy:host:port

HTTP プロキシサーバー (デフォルトのポートは 8080) を指定します

-import

インタフェースと値型のみを生成します

-model file

指定されたファイルに内部モデルを書き込みます

-O

生成されたコードを最適化します

-s directory

生成されるソースファイルの配置場所を指定します

-verbose

コンパイラが実行している処理に関するメッセージを出力します

-version

バージョン情報を出力します

-cldc1.0

CLDC のバージョンを 1.0 (デフォルト) に設定します。float および double は string になります。

-cldc1.1

CLDC バージョンを 1.1 に設定します (float および double が許可されます)

-cldc1.0info

CLDC 1.0 のすべての情報メッセージと警告メッセージを表示します。


 

注 - -gen オプションは、1 つだけ指定してください。-f オプションに複数の機能を指定する場合は、コンマ (,) で区切る必要があります。



表 B-4 は、-f オプションに指定できる機能 (コンマで区切る) の一覧です。wscompile ツールは、WSDL ファイル、コンパイル済みのサービスエンドポイントインタフェース (SEI)、またはモデルファイルを入力として読み込みます。ファイルの種類の欄は、その機能で使用できるファイルを示しています。


表 B-4 wscompile のコマンドがサポートしている機能 ( -f )

オプション

説明

ファイルの種類

explicitcontext

明示的なサービスコンテキストマッピングを有効にします

WSDL

nodatabinding

リテラルエンコーディングのデータバインディングを無効にします

WSDL

noencodedtypes

エンコーディングタイプ情報を無効にします

WSDL、SEI、モデル

nomultirefs

複数参照のサポートを無効にします

WSDL、SEI、モデル

novalidation

インポートされた WSDL ドキュメントの完全な検査を無効にします

WSDL

searchschema

スキーマからサブタイプを積極的に検索します

WSDL

serializeinterfaces

インタフェースタイプの直接直列化を有効にします

WSDL、SEI、モデル

wsi

WSI-Basic Profile 機能 (デフォルト) を有効にします

 

resolveidref

xsd:IDREF を解決します

 

nounwrap

ラップを解除しません

 


 

wscompile -gen -d generated config.xml
wscompile -gen -f:nounwrap -O -cldc1.1 -d generated config.xml