FeaturesPluginsDocs & SupportCommunityPartners

NetBeans 6.0 CLDC/MIDP 開発のクイックスタートガイド

このドキュメントでは、NetBeans IDE 6.0 を使用した、Java[tm] Platform, Micro Edition (Java[tm] ME プラットフォーム) の MIDP (Mobile Information Device Profile) アプリケーションの作成について、概説します。このドキュメントは、できるだけすばやく作業を進められるように作られています。

次のチュートリアルでは、新しいプロジェクトシステムを使用した基本的な作業手順の一部を学ぶことができます。デバイスエミュレータに「Make my day」というテキストを表示する、「MyHello」という名前の Java ME MIDP プロジェクトを作成する 2 通りの方法を示します。また、CLDC/MIDP 開発に使用できる Mobility のその他の機能も簡単に紹介します。

目次

このページの内容は NetBeans IDE 6.0 が対象です

要件

Java ME MIDP/CLDC 向けの開発を始める前に、NetBeans IDE 6.0 の Mobility 版または完全版をインストールする必要があります (ダウンロード)。クライアントとサーバーの節では、Web サービスのサポートのために完全版が必要です。Mobility 版だけをインストールした場合は、アップデートセンター (「ツール」>「プラグイン」) から次のプラグインをダウンロードする必要があります。

  • Web アプリケーション
  • Web サービス
  • Sun Java System Application Server

ビジュアルモバイルデザイナを使った MIDP アプリケーションの作成

NetBeans IDE には、MIDP プロジェクトを簡単に作成できるウィザードがあります。プロジェクトの作成時に、アプリケーションの開発にビジュアルモバイルデザイナ (VMD) を使用するか、またはソースコードエディタを使用するかを、選択できます。

ビジュアルモバイルデザイナを使用すると、グラフィカルにアプリケーションのフローを計画し、アプリケーションで使う画面をデザインできます。アプリケーションのコードは、デザイナによって自動的に生成されます。

MIDP/CLDC アプリケーションの作成

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」で「Mobility」を選択します。「プロジェクト」で「MIDP アプリケーション」を選択して、「次へ」をクリックします。
  2. 「プロジェクト名」フィールドに MyHello と入力します。「プロジェクトの場所」をシステム上の任意のディレクトリに変更します。このチュートリアルでは、このディレクトリを $PROJECTHOME と表記します。
  3. 「主プロジェクトとして設定」と「Hello MIDlet を作成」の各チェックボックスを選択します (どちらもデフォルトで選択されています)。「次へ」をクリックします。
  4. エミュレータプラットフォームとして「Sun Java Wireless Toolkit 2.52 for CLDC」を選択し、残りの項目はデフォルト値のままにします。「次へ」をクリックします。
  5. 「インストールした CLDC プラットフォームが提供する構成テンプレート」フォルダと「Sun Java Wireless Toolkit 2.52 for CLDC」フォルダを展開します。各構成の横のチェックボックスを選択します。表示されているテンプレートごとに、IDE によって新しいプロジェクト構成が自動的に作成されます。

    「新規プロジェクト」ダイアログでの構成の選択

  6. 「完了」をクリックします。$PROJECTHOME/MyHello プロジェクトフォルダが作成されます。このプロジェクトフォルダには、ソースおよび、プロジェクトの Ant スクリプトなどのプロジェクトメタデータのすべてが含まれます。アプリケーション自体はビジュアルモバイルデザイナの「フローデザイン」ウィンドウに表示されます。
  7. IDE での Hello Midlet の「フロー」ビュー

Java ソースコードの編集

ここで、MIDlet によって表示されるテキストを編集します。

  1. 「画面」をクリックします。「スクリーンデザイナ」ウィンドウが開き、アプリケーションの唯一の画面であるデバイス画面が表示されます。
  2. 「プロパティー」ウィンドウで、「テキスト」フィールドをクリックし、新しいテキストを入力します。この例では「Make my day」と入力しました。
  3. 「プロパティー」ウィンドウの「テキスト」フィールドに「Make my day」と入力したところ

  4. 「テキスト」フィールドに入力したテキストのプレビューが「画面」ビューに表示されます。
  5. VMD の「画面」ビュー内のデバイス画面のプレビューにテキスト「Make my day」が表示されたところ

プロジェクトのコンパイルと実行

  1. 「実行」メニューから「実行」>「主プロジェクトを実行」(F6) を選択します。「出力」ウィンドウで、プロジェクトのコンパイルの進行状況を確認します。HelloMIDlet.java ファイルが構築されてから実行されます。デバイスエミュレータが開いて、MIDlet の実行結果が表示されます。デフォルトのデバイスエミュレータは DefaultColorPhone です。
  2. デバイスエミュレータのウィンドウで、「選択」の下のボタンをクリックします。デバイスエミュレータが MIDlet を起動し、ソースコードに入力されたテキストを表示します。

    メッセージ「Make my day」が WTK エミュレータに表示されたところ

  3. 「Exit」の下のボタンをクリックして、MIDlet を閉じます。デバイスの右上隅のボタンをクリックして、エミュレータのウィンドウを閉じます。

ソースエディタを使った MIDP アプリケーションの作成

ソースコードエディタを使用すると、MIDlet のコードを手動で作成できます。ソースコードエディタでコードを作成すると、より柔軟にコードを編集したり、プリプロセッサコードブロックを挿入したりできます。

ここでは、「新規プロジェクト」ウィザードと「新規ファイル」ウィザードを使用し、ソースエディタを使用してコードを完成させることにより、同じアプリケーションを作成します。

Java ME MIDP プロジェクトの新規作成

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「カテゴリ」で「Mobility」を選択します。「プロジェクト」で「MIDP アプリケーション」を選択して、「次へ」をクリックします。
  2. 「プロジェクト名」フィールドに MyHelloMIDlet と入力します (「MID」はすべて大文字)。「プロジェクトの場所」をシステム上の任意のディレクトリに変更します。このチュートリアルでは、このディレクトリを $PROJECTHOME と表記します。
  3. 「主プロジェクトとして設定」チェックボックスを選択し、「Hello MIDlet を作成」チェックボックスを選択解除します。「次へ」をクリックします。
  4. 「エミュレータプラットフォーム」は、「J2ME Wireless Toolkit」を選択したままにしておきます。
  5. 「インストールした CLDC プラットフォームが提供する構成テンプレート」フォルダと「J2ME Wireless Toolkit 2.2」フォルダを展開します。各構成の横のチェックボックスを選択します。表示されているテンプレートごとに、IDE によって新しいプロジェクト構成が自動的に作成されます。
  6. 「完了」をクリックします。$PROJECTHOME/MyHelloMIDlet プロジェクトフォルダが作成されます。このプロジェクトフォルダには、ソースおよび、プロジェクトの Ant スクリプトなどのプロジェクトメタデータのすべてが含まれます。
  7. エクスプローラウィンドウで「MyHelloMIDlet」ノードを右クリックし、「新規」>「MIDlet」を選択します。
  8. MIDlet 名として HelloMIDlet と入力します (「MID」はすべて大文字)。「完了」をクリックします。HelloMIDlet.java ファイルが作成されます。
  9. HelloMIDlet.java ファイルをダブルクリックしてエディタにソースコードを表示します。
  10. ソースエディタ内をクリックして、次の部分を
    public class HelloMIDlet extends MIDlet
    次のように変更します。
    public class HelloMIDlet
                  extends MIDlet implements javax.microedition.lcdui.CommandListener
                  {
  11. startApp() メソッドの前に次のテキストを追加します。
    public HelloMIDlet() {
    }private void initialize() {  javax.microedition.lcdui.Display.getDisplay(this).setCurrent(get_helloTextBox());}
    public void commandAction(javax.microedition.lcdui.Command command, javax.microedition.lcdui.Displayable
      displayable) {   if (displayable == helloTextBox) {      if (command == exitCommand) {         javax.microedition.lcdui.Display.getDisplay(this).setCurrent(null);         destroyApp(true);         notifyDestroyed();      }   }
    }
    private javax.microedition.lcdui.TextBox get_helloTextBox() {   if (helloTextBox == null) {       helloTextBox = new javax.microedition.lcdui.TextBox(null, "Test String",120, 0x0);       helloTextBox.addCommand(get_exitCommand());       helloTextBox.setCommandListener(this);   }   return helloTextBox;}
    private javax.microedition.lcdui.Command get_exitCommand() {   if (exitCommand == null) {       exitCommand = new javax.microedition.lcdui.Command("Exit", javax.microedition.lcdui.Command.EXIT,
      1);   }   return exitCommand;}
    javax.microedition.lcdui.TextBox helloTextBox;javax.microedition.lcdui.Command exitCommand;
  12. 次のように startApp() メソッドに initialize(); 行を追加します。
      public void startApp() {
       initialize();
        }

Java ソースコードの編集

MIDlet で表示するテキストを追加してみます。

  1. get_helloTextBox() メソッドの「Test String」コードを任意のテキストに置き換えます。たとえば「Make my day」にします。

プロジェクトのコンパイルと実行

  1. 「実行」メニューから「実行」>「主プロジェクトを実行」(F6) を選択します。「出力」ウィンドウで、プロジェクトのコンパイルの進行状況を確認します。HelloMIDlet.java ファイルが構築されてから実行されます。デバイスエミュレータが開いて、MIDlet の実行結果が表示されます。デフォルトのデバイスエミュレータは DefaultColorPhone です。
  2. デバイスエミュレータのウィンドウで、「選択」の下のボタンをクリックします。デバイスエミュレータが MIDlet を起動し、ソースコードに入力されたテキストを表示します。
  3. 「Exit」の下のボタンをクリックして、MIDlet を閉じます。デバイスの右上隅のボタンをクリックして、エミュレータのウィンドウを閉じます。

エミュレータプラットフォームの変更

エミュレータプラットフォームは、開発者がアプリケーションをコーディング、デバッグ、およびテストするときに特定のモバイルデバイスの動作をシミュレートできるように、携帯電話のメーカーによって提供されます。NetBeans Mobility Pack には J2ME Wireless Toolkit が含まれています。また、Nokia、Sony Ericsson、Motorola などのサイトからダウンロードできる、ほかの多数のソフトウェア開発キット (SDK) をサポートしています。

デフォルトのエミュレータデバイスの変更

  1. MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログのカテゴリにある「プラットフォーム」ノードを選択します。デフォルト構成のデバイスを変更できます。
  2. 「デバイス」ドロップダウンリストをクリックして、「QwertyDevice」を選択します。「閉じる」をクリックします。
  3. 再びアプリケーションを実行すると、アプリケーションは QwertyDevice エミュレータで実行されます。

プロジェクト構成の変更

「新規プロジェクト」ウィザードのテンプレートを使用して、いくつかのプロジェクト構成を作成しました。メインツールバーにある構成のドロップダウンメニューを使用して、プロジェクト構成を簡単に変更できます。

新しいエミュレータプラットフォームの追加

  1. メインツールバーから「ツール」>「Java プラットフォーム」を選択します。
  2. 「Java プラットフォームマネージャー」ダイアログで「プラットフォームを追加」ボタンをクリックします。
  3. 「プラットフォームの種類を選択」ページで、「Java ME MIDP Edition プラットフォームエミュレータ」を選択します。「次へ」をクリックします。「プラットフォームのフォルダ」ページで、使用可能なすべての Java ME プラットフォームが IDE によって検索され、ウィンドウ内に一覧表示されます。UEI (Unified Emulator Interface) 標準に準拠しているプラットフォームは、準拠していることが確認されると、プラットフォーム名の横にあるチェックボックスが選択された状態で表示されます。UEI に準拠していないプラットフォーム、またはそれ以外の理由でインストールできない可能性のあるプラットフォームは、赤色で示されます。このウィザードでは、すでにインストールされているプラットフォームも識別されます。注: UEI に準拠していないプラットフォームをインストールするには、「戻る」ボタンをクリックし、「カスタムの Java Micro Edition プラットフォームエミュレータ」を選択します。
  4. 「プラットフォームのフォルダ」ページで、インストールするプラットフォームエミュレータの横のチェックボックスを選択します。プラットフォームが検出され、インストールされます。「完了」をクリックします。「閉じる」をクリックします。
  5. 「ファイル」>「"MyHello" プロパティー」を選択します。
  6. 「プラットフォーム」ノードを選択し、「エミュレータプラットフォーム」ドロップダウンメニューから新しいエミュレータの名前 (J2ME Wireless Toolkit 2.2 など) を選択して、「閉じる」をクリックします。

構成の使用

構成を使用して、1 つのプロジェクトに複数組の配布用 JAR および JAD (Java アプリケーション記述子) ファイルを作成することができます。これにより、1 つのソースコードを作成し、それをプログラミング対象の各モバイルデバイスに合わせてカスタマイズすることができます。

構成の追加

  1. MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログにある「プロジェクト構成」ドロップダウンリストから「構成を追加」を選択します。「プロジェクト構成の追加」ダイアログが開きます。
  2. 「新規構成名」フィールドに、追加する構成の名前を入力します。この構成用に作成する JAR/JAD の配備先のプラットフォームが分かる名前の使用を推奨します。たとえば BlackWhiteDisplay を入力して、「了解」をクリックします。これで、新しい構成が作成されます。
  3. 構成は、「プロパティー」ダイアログにある「構成を管理」ボタンを使用して追加することもできます。このボタンをクリックすると、構成を追加、削除、および複製するためのオプションを含む、「プロジェクト構成マネージャー」ダイアログが開きます。

構成のカスタマイズ

プロジェクトには、いくつでも構成を追加できます。追加した個々の構成の設定は、「プロジェクトプロパティー」ダイアログで変更できます。

  1. MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログのカテゴリにある「プラットフォーム」ノードを選択します。
  2. 「プロパティー」ダイアログの一番上の「プロジェクト構成」コンボボックスから「 BlackWhiteDisplay 」構成を選択します。
  3. 「プラットフォーム」ダイアログのコンポーネントはすべて無効になっています。これは、現在のところ、この構成が、このパネル用のデフォルト構成の使用する値を採用しているためです。パネル上部にある「"DefaultConfiguration" の値を使用」オプションの選択を解除します。これで、このパネルのすべてのコンポーネントが編集可能になります。
  4. 「デバイス」オプションを「DefaultGrayPhone」に変更します。
  5. 「プロパティー」ダイアログの一番上にある「プロジェクト構成」を切り替え、現在選択されている構成に基づいて「デバイス」オプションが変わることを確認します。この構成のカスタマイズ方法は、ダイアログのすべてのパネル (「一般」パネルを除く) で機能します。「了解」をクリックして、構成の変更を保存し、「プロパティー」ダイアログを閉じます。

アビリティーの作成

アビリティーは、プロジェクト構成の特定の属性です。画面サイズなどの物理的な属性である場合も、構成でサポートされている API や JSR である場合もあります。新しいアビリティーを作成して、1 つまたは複数のプロジェクト構成に関連付けることができます。その後プリプロセッサのコードブロックを使用して、そのアビリティーに特定のコードを関連付けることができます。あとで構成の追加または削除が必要になった場合に、すべてのコードを調べてその構成を各コードブロックに関連付ける必要はありません。このアビリティーを構成に追加するだけです。それにより、構成は、アビリティーに関連付けられているすべてのコードブロックに自動的に関連付けられます。

  1. MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。
  2. 「カテゴリ」メニューツリーから「アビリティー」ページを選択します。
  3. 「プロジェクト構成」ドロップダウンメニューから構成を選択します。これでアビリティーが構成に関連付けられます。
  4. 必要に応じて、「"DefaultConfiguration" の値を使用」チェックボックスを選択解除します。
  5. 「追加」ボタンをクリックします。「アビリティーの追加」ダイアログが開きます。
  6. 「アビリティーの追加」ダイアログで、アビリティーの名前を入力するか、ドロップダウンメニューからアビリティーを選択します。必要に応じて、アビリティーの値を入力します。「了解」をクリックして、「アビリティーの追加」ダイアログを閉じます。これで、アビリティーが選択したプロジェクト構成に関連付けられました。

アビリティーをほかの構成に関連付けるには、「プロジェクト構成」メニューから別の構成を選択し、「追加」ボタンをクリックします。

構成別プリプロセッサコードの追加

プリプロセッサブロックを使用して、1 つ以上のプロジェクト構成またはアビリティーに固有のコードを作成、管理、および追跡できます。コードは、指定した構成またはアビリティーに関してのみ有効 (または無効) になります。

  1. HelloMIDlet.java のエディタウィンドウで、TextBox がインスタンス化されているソースコード行 ( helloTextBox = new javax.microedition.lcdui.TextBox(null, "Make my day", 120, 0x0); ) を右クリックします。
  2. 行を右クリックし、「プリプロセッサブロック」>「If / Else ブロックを作成」を選択します。最初のピンクのセクションの「Make my day」文字列のあとに「Color」という単語を追加します。2 つ目のグレーのセクションで「Make my day」文字列のあとに「Gray」という単語を追加します。
  3. //#if プリプロセッサ指示でマークされたコードは、有効な構成が指示の値 (この場合は DefaultConfiguration) に一致するときに有効になります。//#else プリプロセッサ指示で囲まれたコードは、有効な構成がプリプロセッサの値に一致しないときに使用されます。言い替えると、エミュレータは、有効なプラットフォームが「DefaultConfiguration」の場合は「Make my day Color」と表示し、有効なプラットフォームがほかのエミュレータプラットフォームの場合は「Make my day Gray」と表示します。//#endif プリプロセッサ指示がプリプロセッサブロックの終わりです。
  4. プリプロセッサコードをテストするには、 エミュレータプラットフォームの変更 で説明されているように、さまざまなエミュレータデバイスを使用して MIDlet を実行します。

構成の実行

構成は個別に構築、実行することも、まとめて構築、実行することもできます。

  1. MyHelloMIDlet プロジェクトのノードを右クリックし、「プロジェクトを実行」を選択します。
  2. ツールバーにある構成のコンボボックスを使用して、構成を BlackWhiteDisplay に変更します。再度「実行」を選択します。
  3. Color と Gray の 2 つのエミュレータが表示されます。グレーのエミュレータに「Make my day Gray」と表示され、カラーのエミュレータに「Make my day Color」と表示されます。
  • 複数の構成を同時に構築するには、プロジェクトを右クリックし、「バッチ構築」を選択します。表示されるダイアログで、構築する各構成の横にあるチェックボックスを選択します。
  • デバイスを簡単にテストするには、プロジェクトを右クリックし、「指定して実行」を選択します。表示されるダイアログで、実行するエミュレータプラットフォームとデバイスを選択します。

Web サービスへのモバイルアプリケーションの接続

IDE では、直接的な「2 層」アーキテクチャー、またはミドルウェア Web アプリケーション経由で Web サービスに接続する「3 層」アーキテクチャーのどちらかを使用して Web サービス に接続可能な、クライアント MIDlet を作成できます。

IDE には、接続クラスを作成するための 2 つのウィザードが用意されています。

  • JSR-172 Web サービス仕様を使用して Web サービスへの「2 層」接続を作成する場合は、「Java ME Web サービスクライアント」ウィザードを使用します。このウィザードは、スタブ (クライアント側プロキシ) ファイルと、Web サービスを呼び出すサンプルクライアント MIDlet (任意) を作成します。このウィザードを使用するには、JSR-172 仕様をサポートしているデバイスまたはエミュレータプラットフォームが必要です。
  • デバイスが JSR-172 Web サービス仕様をサポートしていない場合に、Web サービスへの「3 層」接続を作成するには、「モバイルクライアントから Web アプリケーションへの接続ウィザード」を使用します。このウィザードは、Web サービスクライアントを含む Web アプリケーションに接続するサーブレットを生成します。「モバイルクライアントから Web アプリケーションへの接続ウィザード」を使用する場合は、Web サービスクライアントを含む Web プロジェクトが必要です。

Java ME Web サービス (JSR-172) クライアントの作成

  1. 「新規ファイル」ウィザードで、「カテゴリ」の下の「MIDP」を選択します。「ファイルの種類」から「Java ME Web サービスクライアント」を選択します。「次へ」をクリックします。
  2. プロジェクトに追加する Web サービスの WSDL ファイルの場所を指定します。
    • WSDL サービスが Web 上にある場合は、次の手順に従います。
      1. 「実行中の Web サービス」を選択し、 WSDL ファイルの URL と、取得した .wsdl ファイルに付けるローカルファイル名を入力します。
      2. ファイアウォールを使用している場合は、「プロキシ設定」をクリックして、適切な HTTP ホストとポートを指定します。
      3. 「WSDL を取得」をクリックして、WSDL ファイルのローカルコピーを作成します。IDE によって WSDL ファイルがダウンロードされます。
      環境内に WSDL ファイルがある場合は、次の手順に従います。
      1. システムから WSDL ファイルを選択し、ファイル名を入力します。
      2. WSDL ファイルが読み出され、そのファイル名から得られるデフォルト名を使用して、ページ上のほかのフィールドが埋められます。
  3. 「完了」をクリックします。IDE により、開かれた設定ファイルが作成され、クライアントスタブが生成されます。メインウィンドウに、エクスポートされたサービス、クライアント情報、およびクライアントオプションの一覧が表示され、選択できます。
  • 状況によっては、CLDC 1.1 から CLDC 1.0 への型の変換が必要になることがあります。これは、Float 型および Double 型が String 型変数に変換されることを意味します。変換を行うには、設定ファイルで「浮動小数点を文字列に変換」チェックボックスを選択して、「スタブを生成」ボタンをクリックします。
  • ファイアウォールを使用している場合、NetBeans には HTTPS プロキシ用に使用できる公開設定はありません。メインメニューから「ツール」>「オプション」を選択して NetBeans のプロキシ設定を変更できます。ただし、この設定はエミュレータに反映されません。Wireless Toolkit のプロキシを設定するには、「ツール」>「Java プラットフォーム」を選択します。「プラットフォーム」で Wireelss Toolkit を選択し、「ツールと拡張」タブを選択します。「環境設定を開く」ボタンをクリックし、「ネットワーク構成」タブを選択します。その他のエミュレータのプロキシも同様に変更しますが、ベンダーによって変更方法が異なる場合があります。
  • 生成されたファイルは、編集しないでください。ファイルに加えた変更は、ファイルを再生成すると失われます。

ゲームデザイナを使用したゲームの作成

ビジュアルモバイルデザイナでは、MIDP 2.0 Gaming API がサポートされるようになりました。VMD で、タイルレイヤーからシーンを作成したり、スプライトのアニメーションをゲームに挿入したりできます。

始める前に、シーンやスプライトに使用する画像をすべてプロジェクトの src ディレクトリに保存します。そして次の手順に従います。

  1. 新しい MIDP プロジェクトを作成します。このとき「Hello MIDlet を作成」チェックボックスは選択を解除します。次にプロジェクトを右クリックし、「新規」>「ファイル」を選択します。「カテゴリ」で「MIDP」を選択します。「ファイルの種類」で「ビジュアルゲームデザイン」を選択します。「次へ」をクリックします。
  2. 新しいクラスの名前を入力し、「完了」をクリックします。
  3. 「ゲームビルダーのデザインコンポーネント」画面が開きます。
  4. 「シーンを作成」をクリックします。シーンとは、ゲームの面のことです。ゲームデザイナウィンドウに空のシーンが開きます。
  5. タイルレイヤー (シナリオ環境) を作成するには、ウィンドウの右上にある「タイルレイヤーを作成」ボタンをクリックします。IDE に付属のサンプルイメージを使用することもできます。サンプルイメージを読み込むには、「サンプルのイメージをインポート」ボタンをクリックします。
  6. 表示されるダイアログで、レイヤーの名前を入力し、プログラミング対象のデバイスに合わせてタイルのサイズを調整します。「了解」をクリックします。新しいタイルレイヤーを作成したら、タイルをグリッド上にドラッグ&ドロップして、ゲームのレベルを作成します。
  7. ゲームにスプライトを作成するには、ドロップダウンメニューから「スプライト」を選択し、IDE の下部にあるイメージウィンドウからイメージをドラッグします。ゲームビルダーを使用して、スプライトやタイルレイヤーをアニメートできます。ゲームビルダーでは、スプライトがアニメートされたシーケンスとして処理され、複数のスプライトを同時に編集およびアニメートできます。

関連項目

NetBeans Mobility Pack の使用方法については、次のページを参照してください。

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
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   Open ESB - The Open Enterprise Service Bus Powered by