携帯Javaファーストインプレッション

JBuilderで携帯電話アプリケーションを体験(前編)


本記事は2001年に執筆されたものです。携帯Javaアプり全般の最新情報は@IT Java Solutuionのカテゴリ「組み込み/携帯・Android・Felicaアプリ」をご参照ください。

/fjava/index/index_eclipsejava.html 携帯アプリを作って学ぶJava文法の基礎
Java文法の基礎を楽しみながら学ぶために、携帯電話のJavaアプリを作ってみましょう。携帯電話のJavaだけにとどまらないJava全般の文法の基礎が理解できる初心者向け入門連載です

JBuilder4にはJDKを自由に選択する機能があります。これを利用して、Java携帯電話アプリケーション作成のためのMIDPを使い、携帯電話向けのJavaアプリケーションを作成することができます。本稿ではJBuilderを普段お使いのユーザーを対象に、携帯電話向けJavaアプリケーション作成の一通りの手順を2回に分けてご紹介します。
新井正広
インプライズ株式会社
2001/1/6


 今回の内容
開発環境の準備
JBuilderの環境設定
プロジェクトの新規作成
新しいMIDletの作成

プログラムの実装
プロジェクトオプションの設定
プロジェクトのビルド
作成したMIDletの検査
作成したMIDletの実行

 2001年にはNTTドコモのiモードを皮切りに各社の携帯電話にJavaが搭載されたモデルが登場する予定です。これらは、基本的にはサン・マイクロシステムズ社が発表しているJava 2 Micro Edition (以下J2ME)上のMIDP (Mobile Information Device Profile)をベースにしています(J-フォン、ボーダフォンなどはMIDP完全互換のJava対応携帯電話を開発中であることを表明しています)。

 iモードをはじめとした携帯端末におけるJava実行環境は徐々に整いつつあります。サン・マイクロシステムズ社からは既にMIDPに対応した開発キットもリリースされていますが、JBuilderの開発環境からもMIDPに対応したアプリケーションの開発は可能です。JBuilderには、任意のJDKを取り込んで開発環境で利用する機能が提供されているので、いまからMIDPを利用したアプリケーションの開発手法を体験してみてください。これにより各社に搭載される仕様が公開されれば、その瞬間からアプリケーションの開発を行うことが可能になります。

 J2MEとは、Java2プラットフォームのエディションの1つで、今回取り上げる帯電話をはじめ、家電製品や組み込み機器を対象にしています。J2MEが対象とする機器は、通常のデスクトップパソコンとは異なり、CPUスペックや表示機能、ストレージや電源などさまざまな側面で制約を受けるため、必要最小限の機能が搭載されています。また、一口に家電製品や組み込み機器といっても、その機器が搭載しているインターフェイスや表示機能には大きな違いがあるため、下図のようにこれらを吸収するいくつかのレイヤが定義されています。

ユーザーアプリケーション
Mobile Information Device Profile
(MIDP)
Connected Limited
Device Configuration
(CLDC)
オペレーティングシステム
ハードウェア

 Connected Limited Device Configuration(以下CLDC)は、主にJava言語およびVirtual Machineの機能、コアライブラリ、入出力、ネットワーク、セキュリティ機能を定義しており、以下のような特徴を持つデバイスを対象にしています。

  • 160KB〜512KBのメモリ
  • 16ビットまたは32ビットプロセッサ
  • 低電力消費、電池でも動作する
  • ネットワーク(無線、断続的な接続、帯域幅に制限のある場合を含む)との接続性

 またMIDPは、携帯電話を対象としたプロファイルで、CLDCをベースとしたJava VMを対象としています。これらの詳しい紹介は、サン・マイクロシステムズ社のWebサイト(http://java.sun.com/products/midp/)を確認していただくとして、皆さんのアプリケーションはCLDCやMIDPを利用して構築するということだけ覚えておいてください。

 

開発環境の準備

 それでは開発に必要なツールを準備しましょう。MIDPは、サン・マイクロシステムズ社のWebサイトからダウンロードできます(http://java.sun.com/products/midp/)

 MIDPのモジュールはReference Implementationの項目にあるdownloadを選択してダウンロードしてください。モジュールをダウンロードしたら、これを任意のディレクトリに展開します。以下の説明では、c:\j2me\midpにファイルを展開したものと考えてください。

 また、今回は開発環境としてJBuilder4を利用します。すぐに購入できない方は、以下の入手方法があります。

  • JBuilder 4 Foundation
  • JBuilder 4 Startup Kit CD-ROM

 JBuilder 4 Foundation は、JBuilder4の基本的な機能を無料で使用できるビジュアル開発環境です(インプライズ社のWebサイトからダウンロードできます)。ただし、JBuilder 4 Foundationで指定できるJDKは1種類だけなので、60日間の無償トライアルができるJBuilder 4 Enterpriseが含まれるJBuilder4 Startup Kit CD-ROMを申し込むのがよいでしょう。これは、インプライズ社のWebサイトで申し込むと無償で送られてきます(このCD-ROMにはJBuilder 4 Foundationも含まれます)。

 

JBuilderの環境設定

 JBuilderでは、アプリケーションの作成に使用するJDKを選択することができます。この機能を利用することで、J2ME MIDPに対応したアプリケーションを作成することが可能になるわけです。JBuilder 4の [ツール]→[JDKの設定] を選択し、ターゲットとするJDKとしてJ2ME MIDPを選択します。

[JDK設定]ダイアログ。ここで[新規]ボタンを押し、新しいJDK(J2ME MIDP)を指定します(クリックすると拡大します)

注:JBuilder 4 Foundationでは、複数のJDKを選択できないため[新規]ボタンから別のJDKを追加することができません。[JDK設定]の[名前]に任意のJDKの名前(“J2ME MIDP”が適当でしょう)を、[JDKへのパス]にJ2ME MIDPがインストールされているディレクトリ(ここではc:\j2me\midp)を設定してください。

J2ME MIDP がインストールされているディレクトリを選択します(クリックすると拡大します)

“J2ME MIDP” のように、適当な名前を指定します(クリックすると拡大します)

このように新しいJDK(ここでは“J2ME MIDP”の名前で登録されています)が登録されます(クリックすると拡大します)

以上の操作で、JDKにJ2ME MIDPが登録されます。

 

プロジェクトの新規作成

 JBuilderでは、作成するアプリケーションを「プロジェクト」という単位で管理します。プロジェクトでは、使用するJDKやライブラリ、ディレクトリ設定などを指定します。ここでは、新規にプロジェクトを作成し、使用するJDKに先ほど登録した“J2ME MIDP” を指定します。[ファイル]→[新規プロジェクト]を選択して「プロジェクトウィザード」を開き、JDKの指定を行ってください。

「プロジェクトウィザード- ステップ2/3」でJDKに“J2ME MIDP”を指定します。他のステップには任意の値を設定します(クリックすると拡大します)


 

新しいMIDlet の作成

 それでは、実際にアプリケーションの実体を作成していきましょう。MIDPをベースとしたアプリケーションでは、javax.microedition.midlet.MIDletを親クラスとして、作成するアプリケーションを派生クラスに定義してゆきます。

  まず[ファイル]→[新規] を選択し、オブジェクトギャラリから[クラス]を選択します。[クラスウィザード]ダイアログで、新しく作成するクラスの親クラスを指定します。[…]ボタンを押すと[親クラスの選択]ダイアログが開くので、ここで javax.microedition.midlet.MIDletを選び指定します。

ラス名は任意です。ここでは“FirstMIDlet”と指定しています(クリックすると拡大します)

 新しいクラスを作成するためのパラメータとして、クラス名やそのほかのオプションを指定します。このオプションには、上の画面のように[main関数の生成]以外のオプションにチェックを入れ、またクラス名にはFirstMIDletのような適当な名前を指定すればよいでしょう。

  [OK]ボタンを押して新しいクラスを作成すると、次のように MIDlet のひな型が生成されます。

FirdtMIDletという名前でMIDletのひな型が生成されます(クリックすると拡大します)


 

プログラムの実装

 JBuilder のエディタを使用して、プログラムを実装します。作成するアプリケーション(MIDletの派生クラス)では、JBuilderが自動生成した各メソッドの中に作成するアプリケーションの機能を定義していきます。メモリ上のMIDPにおけるアプリケーションは、下図のような4つの状態を取り、これらが切り替わるときには、それぞれstartApp()、pauseApp()、destroyApp()が呼び出されます。

 アプリケーションを作成するときには、必要に応じて各メソッドをオーバーライドして機能を実装していきます。今回の趣旨は一通りの手順をご紹介することですので、アプリケーションの詳細まで触れません。そこで、アプリケーションの実装コードそのものは、サンプルコードとして提供されている、

c:\j2me\midp\src\example\ HelloMIDlet.java

を流用します。このコードを参考に記述したFirstMidlet.javaのソースリストを以下のとおりです。生成されたコードに対して新たに追加した部分を赤字で示しています。

FirstMidlet.java
package midp01;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* タイトル: midp01
* 説明:
* 著作権: Copyright (c) 2000
* 会社名:
* @author
* @version 1.0
*/

public class FirstMidlet extends MIDlet
  implements CommandListener {

  private Command exitCommand; // The exit command
  private Display display; // The display for this MIDlet


  public FirstMidlet() {
    display = Display.getDisplay(this);
    exitCommand = new Command("Exit", Command.SCREEN, 2);

  }

  protected void pauseApp() {
  /**@todo: この javax.microedition.midlet.MIDlet abstract
  メソッドを実装*/
  }

  protected void startApp() throws
    javax.microedition.midlet.MIDletStateChangeException {
  /**@todo: この javax.microedition.midlet.MIDlet abstract
  メソッドを実装*/
    TextBox t = new TextBox("Hello MIDlet", "Test string", 256, 0);
    t.addCommand(exitCommand);
    t.setCommandListener(this);
    display.setCurrent(t);

  }

  protected void destroyApp(boolean parm1) throws
    javax.microedition.midlet.MIDletStateChangeException {
  /**@todo: この javax.microedition.midlet.MIDlet abstract
  メソッドを実装*/
  }

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

}

 

プロジェクトオプションの設定

 プロジェクトが完成したら、これをビルドします。デバイスの能力に限界があるJ2MEでは、実行環境に配布するモジュールはできるだけ小さい方がよいので、デバッグ情報を付けずにビルドします。これは、[プロジェクト]→[プロジェクトプロパティ]を選択し、[ビルド]オプションページの [デバッグ情報を付ける] という項目のチェックを外すことで設定できます。

携帯電話のメモリは非常に小さいので、アプリケーションのサイズを極力小さくする必要があります(クリックすると拡大します)

 

プロジェクトのビルド


 [プロジェクト]→[プロジェクトのメイク] を選択し、コンパイルします。エラーがなければ、ビルドが成功しましたというメッセージが画面下部に表示されるはずです。

 

作成したMIDletの検査

 通常のJava アプリケーションでは起動時にJava VMがモジュールの妥当性をチェックしますが、J2MEでは、あらかじめ開発環境でこのチェックを実行しておきます。チェック作業は以下のように、J2ME MIDP に付属している検査用のコマンドラインツールを使用します。

c:\jbproject\midp01\classes>preverify -classpath c:\j2me\MIDP\classes;C:\jbproject\midp01\classes midp01.FirstMIDlet

 この例では、MIDPがc:\j2me\midpにインストールされており、JBuilderのプロジェクトは、c:\jbproject\midp01に作成したものと仮定しています。

 

作成した MIDlet の実行

 チェック作業が完了するとoutputディレクトリにチェック済みのモジュールが作成されるので、これをJ2ME MIDPに付属しているJava実行環境を使用して実行します。

c:\jbproject\midp01\classes\output>midp midp01.FirstMIDlet

  ここまでのすべての処理が正しく実行できていれば、見事エミュレータにアプリケーションの画面が表示されます。

 いかがでしたか? 後編の次回では、アプリケーションの内容にまで踏み込んで、もう少し本格的な携帯電話用のアプリケーションを作成してみます。ご期待ください。

本記事は2001年に執筆されたものです。携帯Javaアプり全般の最新情報は@IT Java Solutuionのカテゴリ「組み込み/携帯・Android・Felicaアプリ」をご参照ください。

/fjava/index/index_eclipsejava.html 携帯アプリを作って学ぶJava文法の基礎
Java文法の基礎を楽しみながら学ぶために、携帯電話のJavaアプリを作ってみましょう。携帯電話のJavaだけにとどまらないJava全般の文法の基礎が理解できる初心者向け入門連載です



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間