ホーム > デベロッパ > 携帯 Java 入門

携帯 Java 入門

携帯 Java とは



BREW と対比される携帯 Java ですが、BREWよりも



Java の略歴



Java は Blu-ray Disc、NASAの火星探査車、デジタル放送、携帯など多くの分野に使われています。

ここまで普及した要因として次のことがあげられます。



状況

言語自体


では、携帯 Java が採用された理由はなんでしょうか。次のことがあげられます。



Java と同様言語自体が優れている点。

目次

  1. 携帯 Java の歴史
  2. 携帯 Java が可能にする世界とは?〜高性能機器への変身〜
  3. 携帯 Java が選ばれる理由
  4. 様々な Java 実行環境〜NTT DoCoMo の Java はそのまま vodafone で使えない〜
  5. 携帯 Java J2ME で注意すべき仕様とは
  6. 知らなかったでは済まされないアプリのサイズ制限

携帯 Java の歴史の原点、組み込み系言語 Oak からの道のり


Java の歴史は Oak と呼ばれるプログラミング言語まで遡れます。特定のアーキテクチャに依存しない言語を必要としたゴスリングは セットトップボックスなどの家庭用機器を制御するための組み込み用の言語として Oak を設計します。

GreenProject の一環として行われたのですが、プロジェクト自体はビジネス的な問題で挫折することになります。

そのような中、「 Mosaic 」が 1993 年に現れます。このブラウザによりテキストや静止画像を閲覧できるようになります。これは当時の人々にとって衝撃的なものであり、インターネットは急速に普及しはじめました。

この普及に目をつけたゴスリングはインターネット言語 Java を作り、1995 年に公開します。

メモリ管理などシンプルで優れた言語設計をもった C に似た言語でした。そうして、人々に Java が浸透してゆきます。

時間をおいて携帯機器向け Java 環境 J2ME が発表されました。1999 年のことです。このような組み込み系の Java には優れた点がありました。

昔はマシン語により制御されていた組み込み機器の内部の部品や本体が変更するとき、プログラムの修正が大変でした。Java であるとその修正が極力少なくてよいのです。

また、ハードができていなくても必要なライブラリを揃えるだけで、パソコン上でシミュレーションができるため、ハードとソフトを平行して作ることが可能になり、製品開発時間の短縮や製品自体の質の向上になります。

現在 J2ME は NTT DoCoMo や vodafone の携帯で採用されています。


携帯 Java が可能にする世界とは?〜高性能機器への変身〜

1987 年に携帯電話が初めて誕生しました。この頃はサイズも大きく通話しかできませんでした。2000 年にアナログ方式からデジタル方式に完全移行し、通話だけではなく インターネット やメールもできる時代へと移ってゆきます。

そして 2001 年に Java が携帯に導入されました。Java は携帯をただの意思伝達の道具ではなく、ゲームやカメラ、音楽プレイヤー、スケジュール管理などの機能を備える高性能な小型電子機器へと変身させました。

Java により変わったものを日常でよく使うメール、時計(アラーム)機能、ゲームを中心に見ていきましょう。


ゲーム

Java アプリが使えるようになった当時、アプリの大多数はゲームでした。今でも結構な割合を占めています。ファイナルファンタジー、ドラゴンクエストの移植などが頭に残っている人もいるのではないでしょうか。以下のような有名な作品が携帯でできるようになっています。



当初は通信機能を搭載したアプリが期待されていました。しかし、通信料金が高くなる傾向にあるアプリは定額サービスのない当時、ユーザーに歓迎されませんでした。そのため、通信機能を搭載したゲームは減少し、逆に旧作を再現するゲームが増えました。

パケット定額サービス、割引サービスが定着しつつある現在では、通信機能を使ったアプリの復活してきています。

メール

携帯電話で良く使う機能といえばメールです。携帯で標準搭載されているメール機能は Java によって実現しているわけではありません。Java は今までパソコンでやり取りしてきたメールを携帯電話上でも送受信できるようにしましたのです。


以下のツールはその一例です。



パソコンと同様の機能

旧来パソコンで行ってきた作業を携帯電話上でも可能にするアプリは他にもあります。例えば以下のようなものがあります。


jig ブラウザ

PC のサイトを閲覧することができます。

FutureIsNow2006

スケジュール管理を PC と同期して管理することができる

かるくゅセル

CSV 形式で入出力ができるため、PC の Excel と連携した使い方ができます。


ハードウェア固有のシステムを利用したもの

最初は Java はハードウェア固有のシステムは基本的に使えませんでしたが、バージョンアップを繰り返し使用できるようになってきました。最近ではおサイフケータイなど Felica を利用したものが続々でています。



モバイル Suica

改札で切符を買う手間をはぶけます。

KEY・ID

施錠をするのに鍵が必要なくなります。

TICKET

映画館のチケットを買わなくてすみます。


Felica の他にもハードウェア固有のシステムを利用したものはあります。


防犯ブザー

GPS と連携することで既存の防犯ブザーとは違い、所持者の位置情報を把握することができます。

歩数計

従来とは違い腰につけなくても歩数をはかり、GPS と連携することもできます。

iTunes との連携

iTunes が携帯でも使えるようになります。この iTunes は Java で作られています。

近未来ナビ

携帯で立体地図を表示できるため、詳細な位置の把握が可能になります。



ゲームなどの一般的なものからこのような特殊なものまで Java が使用されています。

一昔前、ケータイ不況という言葉が一時期はやりました。携帯への支出が増えたのはこれらの Java による機能拡張も一因であったことは想像に難くありません。

これまでの説明で Java が携帯の可能性であることがわかっていただけたでしょうか。


携帯 Java が選ばれる理由


BREWは Java に比べ軽量高速です。また、当初は Java で制限がかかるバイブレーションなどのハードウェア固有の機能の使用ができることが魅力の一つでもありました。

現在では携帯 Java でもバージョンアップによりそのような機能が使えるようになりました。

Java はガーベージ・コレクションの導入によりポインタを排除し、サンドボックスで利用範囲を限定、保護しています。そのため BREW で採用している C/C++ に比べ安全性が高くなっているのです。また、シンプルな構文のため、C/C++ よりも使いやすくなっています。

携帯 Java では BREW とは違い「余計な心配に縛られない自由な開発」ができるのです。


様々な Java 実行環境〜NTT DoCoMo の Java はそのまま vodafone で使えない〜

J2ME の二つの実行環境


J2ME とは携帯 Java 実行環境の事です。CLDC(Connected Limited Device Configuration)、CDC(Connected Device Configuration)の二つがそれにあたり、CDC はカーナビなどの大型端末向けで CLDC は携帯などの小型端末向けとなっています。



Java と CLDC、CDC
Java プログラム プログラム Java プログラム
KVM+CLDC API 実行環境 ClassicVM+CDC API
携帯などの小型端末 ハード カーナビなどの大型端末


CLDC(Connected Limited Device Configuration) という実行環境


NTT DoCoMo と vodafone の携帯 Java 環境は同じ CLDC で実現されていますが、携帯 Java アプリは別々に開発しなければなりません。ユーザーインターフェイスやクラスなどに関する情報を含むプロファイルが違うために実際の処理の様子も変わってくるからです。

NTT DoCoMo は DoJa、vodafone は MIDP というプロファイルを使っています。



NTT DoCoMoとvodafoneのJavaの違い
DoJa 仕様の Java プログラム プログラム MIDP 仕様の Java プログラム
DoJa プロファイル MIDP
CLDC 実行環境 CLDC
NTT DoCoMo の携帯 ハード vodafone の携帯


また、i アプリが全ての DoJa 搭載機体で同じように動くわけではありません。アプリのサイズ制限や API 仕様、ハード仕様が機種により異なるからです。

同じ事が vodafone にもいえます。


携帯 Java J2ME で注意すべき仕様とは


主に以下の三つが J2SE と違う点です。

GUI(AWT と Swing)に関する機能は削除され、Canvas クラスなどが追加されています。他にも例えば以下の機能が削除されています。

削減された機能の例
スレッドグループの作成 スレッドのグループ指定
JNI(Java Native Interface) プラットフォームに依存するプログラムの呼び出し
クラスローダ(ユーザー定義) クラスを読み込んで使えるようにする

知らなかったでは済まされないアプリのサイズ制限


プログラムのサイズ削減をする方法は次の二つに分けられます。


複雑な人がやるべき作業

長時間かかる機械的な作業


具体的には IM を例にとってサイズ削減を行っているimprove の ダウンサイズをご参照ください。


サイズ制限に悩まされずに開発したい方は


プログラム圧縮のイメージ圧縮ツールを使えば開発でサイズ制限を気にしなくてすみます。「アプリがサイズオーバーしているのに明日が納期」という場合にも効果を発揮します。

このような携帯 Java 圧縮ツールが有名です。

弊社の携帯 Java アプリの圧縮に特化した Sophia Compress Java もお使いいただけると幸いです。

無償トライアルをご用意してますのでよろしければ送付許可をください。


他社に差をつける開発〜オブジェクト指向の魔法を使うには〜


オブジェクト指向での開発は以下の恩恵をもたらします。



結果効率があがり、「納期に余裕を持った開発をする」ことができるために会社の信頼度も上がります。

しかし、アプリをオブジェクト指向で開発をすることはまずありません。アプリサイズが大きくなり、サイズ制限の壁にぶつかりがちだからです。

Sophia Compress Java はクラス融合によりこれを解決し、オブジェクト指向での開発を可能にします。他社に差をつけてみませんか。


サイズ制限

以下に主な携帯の Jar サイズ制限、ヒープ領域制限をまとめました。海外携帯端末や古い機種の情報をご入用の方は主要な キャリア 、企業についてまとめたこちらの携帯端末情報もご利用ください。

NTT DoCoMo
DoJa Version 機種 Jar size(KB) Scratch Pad(KB) Heap size(KB)
4.3LE N702iD 30 200 8192
4.2LE F702iD 100 400 4500/3500
N701iECO 30 200 8192
4.1LE F700iS 30 200 3000/5000
N701i 30 200 8192
4.1 SO902i 100 400 4096/4096
F902i 100 400 4500/3500
N902i 100 400 9216
4.0LE F700i 30 200 3000/5000
N700i 30 200 4000
4 F901iC 100 400 3000/5000
F901iS 100 400 3000/5000
N901iC 100 400 8192
N901iS 100 400 9216
3.5 F900i 100 400 2048/3584
F900iC 100 400 2048/3584
F900iT 100 400 2048/3584
N900i 100 400 3000/4700
N900iG 100 400 3000/4700
N900iL 100 400 8192
N900iS 100 400 3000/4700
3 SO505i 30 200 1800
SO505iS 30 200 2048
SO506i 30 200 3072
SO506iC 30 200 3072
SO506iS 30 200 3072
F505i 30 200 2000/1500
F505iGPS 30 200 2000/1500
F506i 30 200 2048/2048
N505i 30 200 1494/1472
N505iS 30 200 1494/1472
N506i 30 200 1533/1511
N506iS 30 200 1533/1511
N506iSII 30 200 1533/1511
2.1 FOMA N2051 30 200 760/1228
FOMA N2102V 30 200 760/1488
FOMA N2701 30 200 760/1228
FOMA F2051 30 200 600/700
FOMA F2102V 30 200 1536/1024
2 SO504i 30 100 1000
N504i 30 100 544/600
N504iS 30 100 544/1030
1.5OE NM850iG 30 100 555/455
1 FOMA N2002 30 10 560/940
Vodafone
MIDP Version 機種 Jar size(KB) RecordStore size(KB) Heap size(KB)
2 802SH 1024 512 2000
804SH 1024 512 4000
903SH 1024 512 4000
703SHf 1024 512 4000
803T 1024 512 2000
902T 1024 512 2000
903T 1024 512 2000
904T 1024 512 4000
702NK 1024 512 異なる
702NKU 1024 512 異なる
1 J-SH010 50 50 649
J-SH07 50 50 194
J-SH08 50 50 649
J-SH09 50 50 649
J-SH51 80 50 422
J-SH52 80 50 794
J-SH53 200 200 1229
V301SH 50 50 649
V302SH 50 50 512
V401SH 50 50 649
V402SH 50 50 650
V403SH 50 50 512
V501SH 200 200 1500
V601SH 200 200 1229
V602SH 200 200 1500
V603SH 200 200 1500
V604SH 200 200 1500
V801SH 80 50 880
V401T 50 50 384
V501T 200 200 1500
V502T 200 200 1500
V601T 200 200 1500
V602T 200 200 1500
V603T 200 200 1500