開発に必要なこと2

昨日ダウンロードしたMIDP 2.0対応端末編を読んでいると、S!アプリというのは、CLDC 1.1の上にMIDP 2.0があって、さらにその上にMEXAやらJCSLがある、という階層構造になっているらしい。
ちなみにMEXAはメキサと読むそうだ。Mobile Entertainment eXtention APIの略で、JSCL をベースとしてソフトバンク?が定義した拡張ライブラリらしい。JSCLというのは、J-PHONE Specific Class Libraryの略だって。J-Phone, Vodafone, Softbankと会社は変わっていっても、アプリの基本は変わっていないのね。名前変えるっておおごとだもんね。

というわけで、基本はMIDPだそうな。APIリファレンスはここで見れるんだけど、ダウンロード版はないの?MID Profile

で、基礎編によりますと、S!アプリのライフサイクルは開始からPausedになり、ActiveとPausedをいったりきたりしつつ最後は終了する。遷移時に呼ばれるメソッドはこれら。
MIDlet#new()
MIDlet#startApp()
MIDlet#pauseApp()
MIDlet#destroyApp()

S!アプリはMIDletである、ということがようやくわかった。

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
さて、MIDletの説明を読むと、アプリケーションは必ずこのクラスを継承しなさい、とある。そしてabstractなメソッドがいくつかある。つまり、最初に作らないといけないクラスがなんとなく見えてきた。そもそもサンプルアプリが無いのが悪いんじゃないかと思うんだけど。。。

で、ほかにもmanifestファイルを作れだのjarしろだのjadを書けだの書いてあるのが意味不明なんだけれども、Wireless Toolkit 2.5で新規プロジェクトを作ったらそういうめんどくさいことは自動でやってくれるっぽい。ビルドしてパッケージの作成をしたら適切にjarとjadができている。

初めて書いたソースはこれ。helloWorld.java

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

public class helloWorld extends MIDlet
{
  public void helloWorld(){

  }
  public void destroyApp(boolean unconditional){
  }
  public void pauseApp(){
  }
  public void startApp(){
    Display.getDisplay(this).setCurrent(new MyContainer());   
  }
}

class MyContainer extends Canvas{
  public void paint(Graphics g){
    g.setColor(0, 0, 0);
    g.drawString("Hello World", 20, 20, Graphics.TOP|Graphics.LEFT);
  }
}

これをMEXAエミュレータで読み込んだら HelloWorld と表示された。これでいいのかな。次は実記で動かしてみたいんだけれども、それにはコンテンツアグリゲータに登録しないといけないのであった。。。アプリ★ゲットのほうがいいかな。ゲームチャンネルはゲームを作らないといけないっぽいサイト名だから。https://ac-admin.appget.com/apply/から新規登録できる。SSLを使う版と使わない版が用意されているけど、いまどきSSL使えないような環境の人は登録してはいけないのでは。。。登録にはフリーメールはだめだそうな。gmailで登録しようと思ったのにねぇ。。。3〜4営業日で登録されるそうです。