English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
携帯電話向けソフトウェア開発J2ME
(2002)
Colin Fahey
moto_t720_open_lightanddark02.jpg
Motorola T720携帯電話、オープン示す

1. 警告

この文書は時代遅れです!  このドキュメントの情報が有効かもしれないと、今年2002のに役立つが、その後の数年間で多くのことが変わった!  この文書は現在、今年だけ2002の興味深い歴史的な記録と見なされている必要があります。  このドキュメントのすべての情報や助言に依存してはいけない。  このドキュメント内のすべての技術的な情報は非常に時代遅れです。 

自己をダウンロードされたソフトウェアは、自己作成が作成した画像を、自己の電話警告メロディー(すなわち、着信音「作成」 ) 、比較的珍しいものだったと難しい年2002 。  悲しいことに、六年後、一部の携帯電話サービスプロバイダ( Appleは、 iPhoneのための独占的なソフトウェアや「着信音」のポータルを提供しています)は、ソフトウェア、画像をダウンロードするには、制限を課すと音楽、携帯電話サービスプロバイダのため非常に大きな財政的利益を享受を含むこれらのタイプのダウンロードを制御する。 

幸いなことに、これらのソフトウェアプラットフォームを備えてAndroid 「など」の「携帯」電話、永遠に企業の能力を作成し、利用する携帯電話のような使用のため休場市場を終了します。  ただし、消費者に喜んでは、ソフトウェア、画像をダウンロードすることは非常に高いコスト、および音楽含まれて携帯電話のサービスプランを購入、この携帯電話サービスのオプションの限られた数のためには入手可能です。 

は、市場を支配するようになるには、消費者の強い暗黙の承認として解釈されるべきではありません特定の企業が有効になっている経済力学。  企業を支配し、開始するのは困難または不可能なため競合他社の市場に参入することは、独占企業の製品は、高負の値で(例えば、どこからでも通信する能力)の高い正の値を組み合わせて提供することができます(例:高価格望ましいソフトウェア、画像、および音楽、 それ以外のすべてが自由に利用できるようになるため、サービス)の負の値が追加されます。  いいえ、消費者が携帯電話を購入することに疑いはないが、強制的には、支配の携帯電話サービスプロバイダー徐々には、自由市場と見なされることができない条件を「作成しています。」  そのため、携帯電話サービス市場が経済的にも「非効率的な」している消費者に過度の負担をされています。 

うまくいけば、要件は、携帯電話サービスの無線周波数の競合サービスには、携帯電話サービスプロバイダー、再びこのようなデータの単なるキャリア(すなわち、のみ)ではなく、エンターテイメント情報や帯域幅を提供するプロバイダが減少してデータの転送は、通常の市場価値を回復させて利用できるように! 

データを運ぶのは、ビジネスデータ販売のビジネスから、それ以外の交通機関は、同じデータを競合他社の販売チャンネルを通じてデータブロックにデータを輸送事業のためのインセンティブになる分離する必要があります。 

ビデオゲーム市場コンソールは、同じ問題に苦しんでいる。  ビデオゲームのハードウェアメーカーは、ビデオゲームコンソールを表示することができますデバイスを作成する事業では、これらの企業も同じだが、それらのビデオゲームへのソフトウェアの転送の排他制御しているコンソール。  したがって、ビデオゲームのメーカーは、ビデオゲーム用のソフトウェアを販売する競合他社をブロックするためのインセンティブコンソールされている。  場合は、ビデオゲームとは、利益(損失の代わりに重要で製造販売されている可能性があるハードウェアの設計に焦点を当て、 X-BoxとPlayStationとNintendoビデオゲームコンソール)して、ビデオゲーム市場として成長すると、ハードウェアの製造元コンソール最高のビデオゲームの質を劇的には、ビデオゲームの崩壊とコストを向上させるだろう。 

2. トピックインデックス

(1)
J2ME開発ツール
(2)
シンプルなJ2MEプログラム
(3)
複雑なプログラムJ2ME
(4)
Sun 「ワイヤレスツールキット」
(5)
インターネットのサイトでソフトウェアを提供
(6)
インターネットのサイトからソフトウェアをダウンロード
(7)
ダウンロードのエラーメッセージとインストールエラーメッセージ
(8)
を作成し、提供し、 「着信音」をダウンロードする
(9)
を作成し、提供し、画像をダウンロードする
(10)
AT&T携帯電話の構成設定は、ネットワーク( )
(11)
他の携帯電話のリソースへのリンク
(12)
J2ME対BREW

3. J2ME開発ツール

このセクションで説明する方法でクラスファイルをモバイルデバイスに適してJ2MEソースコードをコンパイルするために使用できる開発ツールをダウンロードしてください。  Sun J2ME 「Wireless Toolkit」は、 「この」資料の後のセクションで説明は、このセクションで説明Java SDKをダウンロードする必要があります。 

3.1 JDK 1.4 (またはそれ以降)

これにより、従来のSunからJava 2 SDK必要があることを意味します。  私をダウンロードし、以下のリンクからバージョン1.4使用:
http://java.sun.com/j2se/1.4/download.html
ここには、ダウンロードページがどのようなことに見えます。 :
java2sdk_download_page.jpg
は、インストールプログラムを起動します。  が発生する場合がある場合を除き、パスの問題を解決することができます( c:\j2sdk1.4.0_03 )のデフォルトの場所にインストールしてください。 

3.2 Connected Limited Device Configuration (CLDC)

私はこの何であるかを知っているふりをすることはできませんが、私は単純にSunのWebサイトからダウンロードした。
http://wwws.sun.com/software/communitysource/j2me/cldc/download.html
ここには、 WebページをダウンロードしてCLDCメインのようです:
cldc_download_page.jpg
1.0.3私を訪れた時にのみ利用可能でした。
そのために、私SunのWebサイトに登録するために必要な、このダウンロードしてください。  私は以下のプロファイルを作成:
Username:        anon***anon
Password:        nospamplease
Favorite color:  blue
Full name:       Prof. Anon Nospamplease
私は以下のファイルをダウンロード:
j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip
私は以下のディレクトリに解凍:
C:\j2me
私は単純に「cldc-1_0_3-fcs」ディレクトリの名前を変更:
cldc (すなわち、 c:\j2me\cldcのフルパスです)

3.3 Mobile Information Device Profile (MIDP)

私はこのどちらかが何であるかを知っているふりをすることはできませんが、私は単純にSunのWebサイトからダウンロードした。
http://java.sun.com/products/midp/
ここでダウンロードMIDPメインのWebページがどのようなことに見えます:
midp_download_page.jpg
私は以下のファイルをダウンロード:
j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip
私は以下のディレクトリに解凍:
C:\j2me
私は単純に「midp-1_0_3-fcs」ディレクトリの名前を変更:
midp (すなわち、 c:\j2me\midpのフルパスです)

3.4 ツールの設定

3.4.1 パスを確立

あなたのAUTOEXEC.BATファイルに次の行を追加します:
REM ---- Java Support ----
SET MIDP_HOME=C:\j2me\midp
SET PATH=%PATH%;c:\j2sdk1.4.0_03\BIN;
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.0_03\BIN;C:\j2me\midp\bin;%PATH%
次に、これらの変数は、バッチファイルを実行して、再読み込みさを強制する:
cmd_prompt_autoexec_bat.jpg
c:\>  autoexec.bat
また、これらの変数と同じ変数を使用してコントロールパネルのWindows環境を設定することができます。

通知Java 2 SDK私は私の現在のバージョンに明示的なディレクトリパスを指定することを選んだ。  したがって、もし私のアップグレード、それから私は、新しいディレクトリを指定するAUTOEXEC.BATファイルを変更する必要があります。 

3.4.2 Jave 2 SDKバイナリを確認してください

一度、上記の設定を有効にする場合は、コマンドプロンプトからJavaツールのプログラムを実行するためのツールプログラムの完全なパスを指定せずにプロンプトをできるようになります。 

は、次のコマンドは、携帯電話端末エミュレータが開始されます: 
cmd_prompt_midp.jpg
c:\>  midp
以下の画像は、携帯電話端末エミュレータが表示されます: 
java_midp_launch.jpg

4. シンプルなJ2MEプログラム

4.1 Javaコードを書く

このHelloMIDlet.javaファイルのソースコードなどのコード内の任意のテキストエディタは、人を入力すると、使用:
file_image_hellomidlet_java.jpg
ここにプレーンテキスト形式のコードです:
// File: HelloMIDlet.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class  HelloMIDlet
extends       MIDlet
implements    CommandListener
{
    private Command exitCommand;
    private Display display;
    private TextBox t = null;

    public HelloMIDlet()
    {
        display = Display.getDisplay( this );
        exitCommand = new Command( "Exit", Command.EXIT, 2 );
        t = new TextBox
        (
            "Hello MIDlet",
            "Test string",
            256, 0
        );
        t.addCommand( exitCommand );
        t.setCommandListener( this );
    }

    public void startApp()
    {
        display.setCurrent( t );
    }

    public void pauseApp()
    {
    }

    public void destroyApp( boolean unconditional )
    {
    }

    public void commandAction( Command c, Displayable s )
    {
        if (c == exitCommand)
        {
            destroyApp( false );
            notifyDestroyed();
        }
    }
}

4.2 *.classにコンパイル*.javaコード

cd  c:\HelloMIDlet
注意:以下のコマンドを1行にする必要がありますが、複数行のテキストを明確にのみ展開されています。
(カレントディレクトリ: C:\HelloMIDlet )
javac
    -target 1.1
    -d .\
    -bootclasspath c:\j2me\midp\classes
    HelloMIDlet.java
cmd_prompt_javac.jpg
注: 「-target 1.1」段階は、将来のエラープリベリファイを回避するために「必要」です。  どうやらこのJDK 1.4でMIDP 1.0.3サポートに問題とは何かをしている。 

4.3 プリベリファイ新しい*.classファイルを生成するために

cmd_prompt_preverify.jpg
(カレントディレクトリ: C:\HelloMIDlet )
preverify  -classpath  c:\j2me\midp\classes;.  HelloMIDlet
これは新しい「output」サブディレクトリ(デフォルトでは)と呼ばれる*.classに新しいファイルを生成します。

4.4 テストでは、新しいファイル*.class

cmd_prompt_midp_midlet.jpg
(カレントディレクトリ: C:\HelloMIDlet )
midp  -classpath  c:\j2me\midp\classes;.\output  HelloMIDlet
これは、新しい「output」ディレクトリに必要ないくつかのファイルが含まれて示します*.class電話エミュレータを起動します。
以下の画像は、期待どおりの結果を示しています。
java_midp_hellomidlet.jpg

4.5 は、新しいテキストファイルを作成し、ファイルを編集「manifest.mf」

の「manifest.mf」ファイルを*.jarファイルの内容を解釈するための実際の携帯電話を得るために不可欠です。  もし適切な「manifest.mf」ファイルは、ファイル*.jarし、携帯電話が正常に*.jarファイルをダウンロード可能性があります内に含まれていませんが、ダウンロードしたファイルを解釈することは、おそらく「Unsupported Content Type」のようなエラー報告が失敗する可能性があります。 
以下は、単純な「manifest.mf」ファイルの例です。
file_image_manifest_mf.jpg
ここにプレーンテキストとして「manifest.mf」ファイルです: 
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
通知は、 CLDCとMIDPのバージョンは、このファイルで指定されています。  非常に慎重になると保守的では、このファイルを編集するときは、様々な分野。  場合は、この例で表示されていないすべてのフィールドを排除してください「File Corrupt」エラーを発生します。  また、それらの例で表示されている順序でフィールドを入れた。  あなたとしては、単純な文字の文字、数字、期間に限定することができますまた、各フィールドの値を短縮し、ダッシュ。  一部の携帯電話サービス、携帯電話、フィールドとフィールドの内容をご注文の変動を容認することができます。 
注意: 

時「jar」プログラム、および*.jarファイルを作成するには、 「manifest.mf」ファイルは、マニフェストファイルとして指定されて使用されると、 「jar」プログラムとは、マニフェストファイルを読み取りとしては、 出力ファイル*.jar内のファイルが作成されます「MANIFEST.MF」と呼ばれる複数のフィールドを追加する可能性があります。  そのため、 「MANIFEST.MF」ファイルを*.jarファイルから抽出され、 「manifest.mf」して、元の「MANIFEST.MF」で*.jar 、 2つのファイルが異なることかもしれないが、 「manifest.mf」の作成中に、元のファイルよりも、いくつかのフィールドを含むファイルを指定されたファイルと比較している。 

一*.jarファイルと新しい試みは、マニフェストファイルを使用してファイルを*.jarフォームに「MANIFEST.MF」からファイルを抽出してはいけない。  もし、これらの例に示す以外のすべてのフィールドを除去するために必ず一*.jarファイルからファイルを抽出「MANIFEST.MF」上記のファイル「manifest.mf」 。 
注記:

明らかにMotorola T720電話でプログラムのアイコンが表示されません。  このため、私は私のMIDletのアイコンと説明していないです。  ただし、次の方法のプログラムのマニフェストファイル内のアイコンを設定する方法を示します: 

MIDlet-1: My_Description, /icon.png, HelloMIDlet 

ときに、そのアプリケーションのためのアイコンを表示する携帯電話は、アイコンのファイル名を指定するため、開発途上国との間でのファイルのファイル名、ファイル名を指定して*.jarアイコン画像は、ファイル自体をファイルに追加する*.jarファイルに追加されます。 

4.6 「manifest.mf」ファイルとは、 *.classで*.jarファイルにファイルを入れて

は、次のコマンドを*.jarファイルを作成します。  *.jarファイルは、指定されたファイルが含まれてmanifest.mfする*.classが含まれては、指定したディレクトリにあるファイルです。
cmd_prompt_jar.jpg
現在のディレクトリ: C:\HelloMIDlet
jar  cfm  hi.jar  manifest.mf  -C .\output  HelloMIDlet.class
*.jarファイルを作成するのは複雑な仮定の例
アイコンを画像ファイル(例えば、 「icon.png」 )と仮定「/icon.png」として*.jarファイルに表示されるようにしています。  (注:プログラムのアイコンがMotorola T720携帯電話では表示されないように、他の携帯電話の種類に表示されるか、そしてMIDPエミュレータで表示されるよ。 ) 

仮定があるディレクトリ「images」画像ファイル( *.png形式)と呼ばれています。  は、このディレクトリと仮定し、すべての画像は、ディレクトリに格納され、 Javaプログラムへの相対ディレクトリ/imagesでアクセスする必要があります(つまり、画像「a.png」のパス「/images/a.png」を使用してアクセスできるようになる)など。 

すべての*.classの仮定のpreverifyコマンドによって「verified」という名前のディレクトリに含まれているファイルを生成します。  たとえば、メインクラスの検証バージョン、 「MyApp.class」は、 「verified」のフォルダになることに加え、プログラムの他のクラスに。  これらのクラスの*.jarされているすべてのファイルのルートディレクトリにアクセスできるようにする。 

次のコマンドは、さまざまな目的は、前の項で指定を実現する*.jarファイルが作成されます。  注意:このコマンドを明確にのみ複数行のテキストをここに拡大されています。  ときは、コマンドプロンプトでコマンドを入力、次のコマンドを改行を含めることはできません;それ以外の場合は、複数の独立したコマンドインタープリタのコマンドを入力したテキストとして解釈されます。 

jar
    cfmv             [Create JAR, Specify JAR Name, Add manifest.mf, Verbose]
    MyApp.jar        [Name of output JAR file]
    manifest.mf      [The manifest.mf file]
    icon.png         [Optional icon, specified by JAD as "/icon.png"]
    images           [Directory to add to JAR as "/images"]
    -C .\verified .
コマンドの最後の部分を理解することは困難です。  これは、次のような意味があります:  「.\verifiedし、すべての*.classには、現在の作業ディレクトリを変更して、相対ディレクトリ'.'では、現在の作業ディレクトリ(すなわちすべての*.classファイル)は、 *.jarファイルに検索されたファイル。」  これは、ディレクトリには、 *.jarファイルに格納するには、クラスのパスを指定する前に変更されていたが、ローカルパスは、相対パスでは、ファイル内のファイルに置かれている*.jar表示されません。 

たとえば、検証クラスを想定は、次のディレクトリには: 

C:\MyApp\verified 

クラスファイルは、以下のような存在だと仮定すると: 

C:\MyApp\verified\w.class 

次に、コマンドでファイルを作成する*.jar 、 「C:\MyApp」の現在のディレクトリから開始し、 「w.class」の*.jarファイルのルートディレクトリに入っていたことになるの「-C .\verified .」を指定します。 < /メール>

「-C」オプションが指定されているときに警告:には、 jarコマンドをコマンドパラメータの全体のシーケンス処理のその時点では、現在の作業ディレクトリを変更します。  そのため、他のファイルjarコマンドは、コマンドパラメータの言及を見つけることができません「-C」オプションを超えて訴える可能性があります。  この場合は、単純に全体のコマンドの最後のパラメータをする「-C .\verified .」移動します。 

以下は、 jarコマンドの詳細出力を示しています。 
added manifest
adding: icon.png(in = 449) (out= 454)(deflated -1%)
adding: images/(in = 0) (out= 0)(stored 0%)
adding: images/a.png(in = 2463) (out= 2223)(deflated 9%)
adding: images/b.png(in = 1322) (out= 579)(deflated 56%)
adding: images/c.png(in = 3433) (out= 2874)(deflated 16%)
adding: images/d.png(in = 1524) (out= 801)(deflated 47%)
adding: w.class(in = 2570) (out= 1356)(deflated 47%)
adding: MyApplication.class(in = 4714) (out= 2169)(deflated 53%)
adding: x.class(in = 3239) (out= 1429)(deflated 55%)
adding: y.class(in = 14205) (out= 6481)(deflated 54%)
adding: z.class(in = 9448) (out= 5135)(deflated 45%)

4.7 を作成し、新しいファイルを編集*.jad

*.jadファイルのように携帯電話をした人にその人の前にコンピュータプログラムを記述する必要があるプログラムをダウンロードして決定する。  この*.jadファイル自体も*.jarからいくつかの間接を提供します。 
file_image_hi_jad.jpg
例*.jadファイル、 *.jarファイルを記述する
ここにテキスト形式の例をhi.jadファイルです:
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Jar-Size: 1283
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
(とそのサイズを変更)が変更されるには、 *.jadファイルを生成することができますが簡単に「MIDlet-Jar-Size:」フィールドたびに*.jarファイルを更新することがプログラムされています。  プログラムを検索する場合に便利J2MEするインターネット検索してください。 

サイズフィールドの場合、次のエラーは、携帯電話にダウンロードした後は正常に表示される可能性があります: 「Download Failed」 (ダウンロードに失敗しました) *.jarファイルの正確なバイトの合計を指定していません。 

のMotorola T720携帯電話については、次のエラーメッセージが生成された*.jarファイル内のファイルMANIFEST.MF : 「Failed: File Corrupt」で*.jadファイル、または無効なフィールドに無効なフィールドがinidcate (失敗しました:使用されるかもしれないが壊れ)ファイルを作成します。 
注:もし*.jarファイルは、インターネットのWebサーバー上の対応する*.jadファイルと同じディレクトリにある、その*.jadファイルは単に、完全なURLを指定せずには、以下の例のように、 *.jarファイルのファイル名を示すことができます: 

MIDlet-Jar-URL: hi.jar 

ApacheときにインターネットのWebサーバーからのMotorola T720携帯電話にこれらのファイルをダウンロードし、それは完全なURL含まれていないに受け入れている。  *.jarしない限り、ファイルへのフルパスは、 URLファイル内で指定されている*.jadしかし、インターネットのWebサーバーからのYahoo!一Motorola T720携帯電話に失敗するには、以下の例のように、これらのファイルをダウンロードしようとする試みをダウンロード: 

MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar 

私はこの問題の理由は分からない、と私は、この問題が他の携帯電話(または携帯電話サービスプロバイダ)には影響しません知っている。  ため、別の場所には、サーバー上のすべてのファイルの情報が変更*.jad必要と*.jadファイル内のファイルを移動する場合には、 *.jarファイルのフルURLを指定することは明らかに、不便です。  しかし、完全なURLを指定して、 *.jad特定の携帯電話や、特定の携帯電話サービスプロバイダの信頼性の高いものになるかもしれない。 

4.8 テストでは、プログラムを実行して、 *.jarファイルとファイル*.jad

以下は、クラスを実行する*.jarファイルには、 *.jadファイルで記述を見つけた。 
cmd_prompt_midp_jar_jad.jpg
(カレントディレクトリ: C:\HelloMIDlet )
midp  -classpath c:\j2me\midp\classes;.\hi.jar  -descriptor hi.jad

4.9 リファレンスJ2ME 、 MIDP 、 CLDC開発のための

あまり私がここで提示の多くは他のインターネットサイトで見つけることができます。  しかし、私は、いくつかのエラーが他のインターネットサイトに発見修正し、行方不明の詳細を追加し、これをものにしようとしているかの完全な経験を提示した。  ここは私を開始する手助けは非常に有益なリンクになっています: 
http://wireless.java.sun.com/midp/articles/getstart
http://wireless.java.sun.com/midp/articles/setup

5. 複雑なプログラムJ2ME

5.1 はじめに

の簡単なプログラムはこの文書の前のセクションで紹介だけで、 1つのソースコードされたファイルには、プログラムをほとんど何もないため、携帯電話のプログラミングの良い例ではありません。 

私の友人Sam Robertson ( 「21」 )と呼ばれること「Blackjack」 、カードゲームをプレイする人を教えて興味深いJ2MEプログラムを書いた。  プレーヤーのディーラーはカードで「、カード」の選手のペアは、提示されている選手の何をすべきかを決定する必要があります:滞在、 「ダブルヒットダウン」 、または「分割」 。 

このプログラムは6つのソースコードファイルがあります。  このプログラムはユーザーの入力し、応答簡単な図面やテキストの更新ではありません。 
sbj_screen_on_phone.jpg

5.2 ソースコード

以下のリンクをクリックし、 *.jadファイル「manifest.mf」ファイルをバッチファイルは、すべて1つの便利なZIPファイルのソースコードを入手してください。
sbj.zip
ソースコードは、ファイルに含まZIP
6090 バイト
MD5: bf3922035b7a4eef24e107d03b7524c9
を任意のディレクトリには、抽出した場合「c:\」にWindowsの下には、以下の例で議論することになっても近くにはお客様の実際の状況に抽出します。
sbj_directory_files.jpg
「c:\」にsbj.zip展開したディレクトリが作成されます「c:\sbj」

5.3 マニフェストファイル

ファイル: 「manifest.mf」 :
MIDlet-1: My_Description,, SBJ_MidletT
MIDlet-Name: SBJ_MidletT
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0

5.4 このバッチファイルは、プログラムを構築する

は、次のバッチファイルをラフですが、その例としてサービスを提供し、お客様のJ2MEプログラムを構築する方法について、独自のバッチファイルの書き込みを開始する可能性があります。  この例では、バッチファイルは以下の通りです:
(1)を削除するファイルを含むディレクトリには、古い*.class ; 
(2)を削除するファイルを含むディレクトリには、古い検証*.class
(3)一「クラスの出力」ディレクトリを作成; 
(4)コンパイル*.classファイルへのすべての*.java筋は、出力は、 classes 「ディレクトリに行く」 。 
(5)を「確認出力」ディレクトリを作成; 
(6)プリベリファイすべてのクラスの「クラス」ディレクトリにある、とする検証クラスは、 「検証」のディレクトリに。 
(7) 、 *.jarファイルを作成し、 mainfestファイルを追加し、ディレクトリ内のすべてのクラスの「検証」 ; 
*(8)テストpreverifiedクラスを介してプログラムを直接; 
*(9)テスト*.jarと*.jadを介してプログラムファイル; 

(*...これらの手順(コメント)私のバッチファイルで無効になっています。 ) 
sbj_build_sbj_bat_file.jpg
このプログラムを構築するためのバッチファイル「build_sbj.bat」
ここにプレーンテキスト形式で同じファイル(「build_sbj.bat」)です:
rmdir /S /Q classes
rmdir /S /Q verified
del /F /Q  *.jar

mkdir classes

javac  -g:none  -target 1.1  -d .\classes  -bootclasspath c:\j2me\midp\classes  *.java

mkdir verified

preverify  -classpath c:\j2me\midp\classes;.\classes  -d .\verified  .\classes

jar  cvfm sbj. jar manifest.mf  -C  .\verified  .

REM  midp  -classpath c:\j2me\midp\classes;.\verified  SBJ_MidletT
REM  midp  -classpath c:\j2me\midp\classes;.\sbj.jar  -descriptor sbj.jad
REM  Finished

5.5 建物は、コマンドプロンプトから

ここには、コマンドラインでバッチファイルを実行している「build_sbj.bat」の結果です:
sbj_build_command_prompt.jpg
このバッチファイルを実行「build_sbj.bat」
は、 「rmdir」と「del」操作のための警告メッセージを削除するだけではないことを示す注意してください。 

あなたとは、バッチファイルを実行してからの結果は、新しい*.jarファイル(すなわち、 「classes」と「verified」 )は、新しいディレクトリを見ることができます:
sbj_new_files_after_build.jpg
ソースコードのファイルと新しいファイルを生成

5.6 *.jadファイル

のsbj.jarファイルを展開するために、我々を作成し、適切なフィールドには、正しい*.jarサイズを持つようにsbj.jadファイルを編集する必要があります:
ファイル: sbj.jad
MIDlet-1: SBJ_MidletT, , SBJ_MidletT
MIDlet-Jar-Size: 7257
MIDlet-Jar-URL: sbj.jar
MIDlet-Name: Sam Blackjack Trainer
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
*.jar者には、 *.jadファイルは、インターネットサイト上に置いてありますファイルは、完全なURLを追加する必要があるかもしれません-でも私は実験( )は、私は(つまり、私だけが指定したフルX AZEの言及を避けることができたが発見*.jar単独で)ファイル名を指定します。  しかし、 URL完全に置くが、私が観察したことをお知らせしたかった。

5.7 要約

プロジェクト内に複数のソースファイルがある、よくあることですし、このセクションでは、複数のクラスを、パッケージと実行が続く原油建物のイラストを与えた。 

以下のセクションSun Wireless Toolkitは、アプリケーションを構築するより簡単に使用に関する参照してください。 

6. Sun 「Wireless Toolkit (version 1.0.4_01)」

6.1 はじめに

Sun構築とプログラムのJ2ME包装のための便利な開発環境を提供しています: 「Java 2 Platform Micro Edition (J2ME) Wireless Toolkit (version 1.0.4_01)」 。 

(注意:あなたは、以前のセクションで、このツールキットを使用するか、このJava 2 SDKする場合は、このバージョンはすでに持っていない説明されてJava 2 SDK 1.4をダウンロードする必要があります。 ) 

は、次のインターネットサイトには、ツールキットをダウンロードして移動: 

http://java.sun.com/products/j2mewtoolkit/ 
注意! ! !
 

リンク 「2.0 Beta 1 English」 (現在は、トップをダウンロードしないオプションをクリック) Motorola T720開発を行っている場合は-これは、このバージョンのいくつかのX AZDものをしており、これは頭痛が広まっている可能性があります。 
j2me_wireless_toolkit_2_0_download_page.jpg
このバージョンをダウンロードしないでください! ( 「2.0 Beta 1 English」 )
私はこのバージョンを試みたが、と私は最終的混乱の多い設定を変更するためのコードをコンパイルしたが、私を実行しようとしたときに、セキュリティ例外が、すべての努力をした。  気にしないでください! 
ダウンロードするには「1.0.4_01 English」バージョンです。  ここには、ダウンロードページがどのようなことに見えます。 : 
j2me_wireless_toolkit_1_0_4_01_download_page.jpg
ダウンロードページはSun J2ME Wireless Toolkit (version 1.0.4_01)
j2me_wireless_toolkit_1_0_4_01_download_page2.jpg
Sun J2ME Wireless Toolkit (version 1.0.4_01) FTPのサイトリスト
これは以下のファイルがダウンロードされます: 「j2me_wireless_toolkit-1_0_4_01-bin-win.exe」 
お客様のシステムにインストールするには、このプログラムを実行します。

6.2 J2ME Wireless Toolkit :ツールバーを開始

このツールキットが完了したら、 「Start」 (開始)メニューからシステムを起動することができます:インストールされている
j2me_wireless_toolkit_1_0_4_ktoolbar.jpg
ツールバーのプログラムの起動
また、このStart (開始) 「Documentation」メニューの項目を介してMIDP-1.0マニュアルにアクセスすることができます。
j2me_wireless_toolkit_2_0_wtk20_docs_api_index_html.jpg
J2ME Wireless Toolkit (version 1.0.4_01)ドキュメント

6.3 J2ME Wireless Toolkit :プロジェクトを作成し、ビルド

j2me_wireless_toolkit_1_4_ktoolbar_window.jpg
ツールバーの状態になります。  「New Project...」をクリックして新しいプロジェクトを作成します。
j2me_wireless_toolkit_1_4_ktoolbar_new_project.jpg
New Project :プロジェクト名を入力( JAR名と新しいプロジェクトディレクトリの名前)になり、 MIDletクラス名を入力( MIDletクラスから派生した、アプリケーションの基本的には、メインクラス) 。 
j2me_wireless_toolkit_1_4_ktoolbar_project_created.jpg
ツールバー:作成したプロジェクトを作成します。  通知は、コンソール等がお客様の*.javaソースファイルすることがわかる  (例えば、 「c:\WTK104\apps\sbj\src」等) 
j2me_wireless_toolkit_1_4_ktoolbar_project_settings.jpg
ツールバーの「Settings...」をクリックしてこのプロジェクトの設定メニューを取得します。 
値は100バイト( )は、現在では、 「MIDlet-Jar-Size」 「フィールド」無視。  我々は最終セットを取得するには、正しい値が発生します。 
j2me_wireless_toolkit_1_4_ktoolbar_project_midlet_settings.jpg
プロジェクトの設定]ダイアログの[ MIDlets ]タブをクリックします。
は、テーブル( 「MIDlet-1」 )で唯一の行をクリックして強調し、それを選択します。  をクリックし、 [ 「Edit」ボタンをクリックします。 
j2me_wireless_toolkit_1_4_ktoolbar_project_no_icon.jpg
*.jarのファイルに格納する場合には、 *.pngファイルがない「Icon」フィールドをクリアします。 
か、以下の通りです: 

(1) Project --> Clean : *.classファイルをすべて削除します。
(2) Build :すべてのファイルとpreverifiesビルド*.class ;
(3) Project --> Package --> Create Package : *.jarと*.jad生成
j2me_wireless_toolkit_1_4_ktoolbar_clean_build_create_package.jpg
の*.jarと*.jad建物の結果
これらの3つの手順を行うと、結果と*.jadは直ちに*.jarローカルエミュレータ、またはダウンロードを他のインターネットサイトに即時展開のためのエア(OTA)以上の「実行」用に「準備」されています。  の*.jadファイルのサイズフィールドが正しい*.jarされます。  (3)ステップごとに1つの時間を再構築するのを忘れないでね! 

これで、 「Run」 (実行)ボタンを押すことによりテストすることができます。 
j2me_wireless_toolkit_1_4_ktoolbar_project_launch.jpg
j2me_wireless_toolkit_1_4_ktoolbar_project_running.jpg
このプロジェクトのために「Run」を押したのエミュレータには、 *.jadを読み取ります。  あなたが(通常は1つだけ)を開始する、特定のMIDletを選択することができます。 
ただ、指定された場所から*.jarと*.jadファイルをコピー(ツールバーのは、プロジェクトのビルド中にコンソールウィンドウ)などの報告:
(コンソールウィンドウ投稿者: )
Wrote c:\WTK104\apps\sbj\bin\sbj.jar
Wrote c:\WTK104\apps\sbj\bin\sbj.jad
直接変更せずに、インターネットサイトにこれらのファイルを入れて、その仕事をしなければならない。  ここに私は自分の携帯電話での空気(OTA)このコンパイルしたアプリケーションを「ダウンロード後、」何を見ている
sbj_screen_on_phone.jpg
Sam Robertson's Blackjack Trainer私の携帯電話で実行(sbj.jar)

7. インターネットのサイトでソフトウェアを提供

7.1 を確保するには、インターネットのWebサーバー*.jarファイルと*.jadファイルの種類を指定MIME

Apache場合はインターネットのWebサーバーがある場合は、ファイル「.htaccess」 、 Webサイトのルートディレクトリ内の名前を作成する必要があります。  「.htaccess」ファイルを追加する場合は、そのような種類のファイルを上書きまたはMIMEとしてApache構成では、上書きすることができます。  あなたは、 MIME種類*.jarファイルと*.jadファイル、テキストファイルとしては、以下に示すように対応する指定を追加する必要があります: 
htaccess_image.jpg
Apacheインターネットは、 Webサーバーのマイカスタム「.htaccess」ファイルです。  注:私は、このファイルを「.htaccess.txt」単にファイルがWindowsオペレーティングシステムを使用して編集を容易にするに命名した。  ファイル名「.htaccess」にApacheファイルは、インターネットのWebサーバーで使用する前に変更する必要があります。 
ここに私の単純なテキスト形式のファイルです.htaccess :
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
どうやら、作成またはApacheサーバー動作の即時変更の結果、このファイルを変更する。  私はApacheサーバーをチェックしてから、修正ファイルの日付と時間「.htaccess」それぞれの新しい着信時にトランザクション、およびサーバーを再読み込み、そのファイルの改変場合は、日付と時刻を変更されていますね。 

インターネットのWebサーバーの場合は、別の種類があるのなら、 MIMEの種類を指定する方法を決定する必要があり、その*.jarファイルと*.jadファイルは、適切な種類のMIME割り当てられていることを確認する必要があります。 

MIME種類が設定されていない場合は、ファイルをダウンロードして携帯電話を*.jadを拒否し、次のエラー報告を知ることになります: 

「406: Not Acceptable」 

7.2 必要に応じて文書HTMLまたはWML以内に*.jadファイルへのリンクを提供

AT&TサービスとのMotorola T720 J2ME携帯電話を*.jad直接では、携帯電話にファイルを*.jadのURLを入力してファイルをダウンロードすることができます。  これは他の携帯電話サービスプロバイダと他のJ2ME携帯電話のために働く可能性があります。 

しかし、より多くの人々のためのHTML文書内のリンクを選択するか、 WML文書内で*.jadファイルをダウンロードするに便利になるかもしれない。  (注:現在WML時代遅れです。 HTMLするほとんどの携帯電話を解釈することができます。 ) 
file_image_hi_html.jpg
一*.jadファイルへのリンクを使って簡単な文書HTML
file_image_hi_wml.jpg
一*.jadファイルへのリンクを使って簡単なWML (WAP)ページ  (注:現在WML時代遅れです。 HTMLするほとんどの携帯電話を解釈することができます。 ) 

8. インターネットのサイトからソフトウェアをダウンロード

以下の画像を開発し、上記のように、前のセクションで説明配備MIDlet私ダウンロードして実行した操作の正確なシーケンスを示しています。  これらのイメージを自分の携帯電話の画面を撮影したものです。 
t720_screens_download_program.jpg
(1)メイン画面:ときに電話を開くと、メイン画面を参照してください。センターボタンを押すと、メインメニューに移動します。 
(2) Main Menu :その項目に移動する「WebAccess」 。 
(3) WebAccess :その項目に移動する「Go To URL」 。 
(4) Enter URL : *.jadファイルのURLを入力(またはHTMLドキュメント、またはドキュメントのWML ) 。 
(5) Details ;この情報は、 *.jadファイルから解析された。プレスDOWNLDの*.jarファイルをダウンロードします。 
(6) Download Complete 、このメッセージのために消滅するまで待つ; 
(7) Installing 、このメッセージのために消滅するまで待つ; 
(8) xxxx bytes transferred 、このメッセージのために消滅するまで待つ; 
(9) Installed 、このメッセージのために消滅するまで待つ; 


後のプログラムがインストールされているときは、再びWebAccessメニュー、単に各メニューを終了し、メイン画面に戻りますが表示されます。 
t720_screens_start_program.jpg
(1)メイン画面:ときに電話を開くと、メイン画面を参照してください。メインメニューを選択するか、メイン画面の下方にカーソルを押しますを経由して「Games & Apps」オプションを選択します。 
(2) Java Powered :この画面に消えるのを待ちます。 
(3) Games & Apps :選択したアイテムのプログラムの名前で! 
(4)イェーイ!あなたのプログラムの実行に成功! 
携帯電話上のプログラムの外観は非常には、エミュレータ内の姿に似ています。

9. ダウンロードのエラーメッセージとインストールエラーメッセージ

9.1 Motorola T720 (J2ME)エラーメッセージ

は、次のエラーメッセージのみをMotorola T720 (GSM/J2ME)携帯電話に適合している。 

9.1.1 「Download Failed」

原因# 1
1644バイト以上の任意のファイルをインターネットのウェブ(HTML, JAD, JAR, MID, GIF)特定のホストやサーバについては、このエラーが発生します。  ここのホストとサーバーの簡単なリストです: 
Host / Server                                               Error
===================================================    =================
Apache                                                       No
Microsoft Personal Web Server (direct from your PC)          No
Earthlink (Apache)                                           No
Yahoo! (custom server)                                       Yes
この問題は、 Motorola T720 GSM/J2MEファームウェアでは断片ファイルのダウンロードに失敗する原因となる欠陥のためだ。
唯一の明白なソリューションをインターネットのウェブのホストまたはサーバーの種類をスイッチすることです。  他の携帯電話の種類この問題を持っていない。 
原因# 2
一*.jadファイルの「MIDlet-Jar-Size:」フィールドには、対応する*.jarファイルの正確なバイトの合計を示すものではありません。

9.1.2 「Failed: File Corrupt」

原因# 1
この*.jarファイルは、特定の携帯電話で利用できない場合がありますAPI機能を使用しています。 

たとえば、 MIDP 2.0機能は、携帯電話でMotorola T720 GSM/J2ME (のみ) MIDP 1.0している機能は利用できません。  プログラムをエミュレータには、実行可能性がありますが、携帯電話上で実行されない場合があります。 

このソリューションは、ソースコードでMIDP 2.0機能を検索するとMIDP 1.0関数、または排除は、 MIDP 2.0機能を必要とする機能に置き換えています。