S-JIS[2005-02-11/2006-02-25]

iアプリの注意点

iアプリはメモリや通信を使うところがシビアなので、いろいろな制限があるようです。


jarファイルの容量制限

携帯のバージョンによって違うみたいだけど、505i(DoJa3.0)の場合、30kBまで。


画面サイズ

携帯の機種によって画面サイズが違う〜面倒…。
特に縦の高さが違うようなので、気をつけないと他機種で表示しきれない、なんてことに。


float,doubleが使えない

メソッドの戻り型や引数にfloatやdoubleを指定すると、コンパイルは通るがクラスロード時の実行時エラーとなる。

ALERT: Bad method signature


浮動小数の定数を使うと、コンパイルは通るがクラスロード時の実行時エラーとなる。

private void test(int n){
    System.out.println((int)(100f+n));
}

ALERT: Invalid constant pool entry

素直にfloat系をコンパイルエラーにしてほしいところだけど、eclipseは普通のJavaコンパイラだから難しいんだろうなぁ。

ちなみに、下記のように演算がないものはエラーにならない。(コンパイル時点で変換されるせいか?)

private void test(int n){
    System.out.println((int)100f);
}


文字列との結合は、DoJa3.0のツールでビルドするとコンパイルエラーになる。

C:\iDKDoJa3.0\apps\test\src\Test.java:19: シンボルを解釈処理できません。
javacの実行に失敗しました
シンボル: メソッド append  (float)
位置    : java.lang.StringBuffer の クラス
        System.out.println("Start IApplication"+(100f*test()));
                                                             ^
致命的エラー: メソッド append を検出できません。

なぜStringBufferでappendかというと、文字列の結合は内部的にはStringBuffer#append()を使うから。
eclipseだとコンパイルエラーにならないが、実行時エラーになる。


エミュレーターと実機

開発環境にもよるんだろうけど、エミュレーターより実機の方が性能が悪い。だから、エミュレーターで動いても安心しちゃ駄目。


技術メモへ戻る
メールの送信先:ひしだま