ケータイJavaが注目されるワケ


「Javaをやってみたい!」という人というのは、時代によってずいぶんと変わってくるようです。その昔は、「フリーウェアのようなアプリケーションを作りたい」という人でした。それがいつの間にか「サーバ開発の勉強をしたい」からJavaを始める、という人が増えてきました。

そして、今、急激に増えつつあるのが「ケータイのプログラムを作ってみたい」という人です。携帯電話で動いているゲームなどはどうやらJavaでできているらしい、それなら自分でも作れるんじゃないか、そう思ってJavaの門を叩く人が増えています。実際、Java関係の求人などを見ても、1~2年前までは「サーバサイド開発」一色だったのが、「携帯ゲームの開発者」の募集をずいぶんと目にするようになってきました。携帯のJava技術者の需要は着実に増えつつあります。また、サーバサイドなどに比べると「簡単に作れそう」と思うのでしょう。

そこで、「携帯のJava」をやってみたい、という人に、「携帯Javaというのはどういうものか」ということについて簡単にお話をしてみましょう。


携帯Javaは普通のJavaとは違う?


まず、「携帯Java」というのがどういうものか、そこから説明をしましょう。これは、普通のJavaとは違うものなんでしょうか?

「Java」というのは、一般的には「パソコンで動くJava環境」を示すものと考えればよいでしょう。これは「Java Platform Standard Edition(Java SE)」と呼ばれるものを示します。WindowsやMac OS X、Linuxなどのパソコン用OSにインストールして動きます。標準で、ウインドウやメニューといったGUIを使ったアプリケーションを作るためのライブラリが一通り揃っています。

これに対し、携帯用のJavaというのは、Java SEよりもはるかに小さなものです。Javaは「仮想マシン」と呼ばれるエミュレータプログラムを使ってプログラムを動かすのですが、携帯JavaではJava SEよりもはるかに小さなメモリで動く特殊な仮想マシン(KVMと呼ばれています)を使っています。携帯電話ではパソコンと違ってメモリも小さいですし、CPUもあまりパワーがありません。そうした環境で動くように設計されたエミュレータなのですね。

また、標準で用意されているライブラリ類もかなり整理され必要最小限のものになっています。ですから「Java SEでは使えるけれど携帯Javaでは使えない」という機能がたくさんあります。

こうした点から、携帯Javaでは、かなり制約された環境の中でのプログラム作成を強いられることになる、と考えておくべきでしょう。少なくとも「何ができるか、何が用意されているか」ということをしっかりと把握し、その範囲内で何ができるかを考えながらプログラムを作成していく必要があるのです。

Java SEと携帯Javaでは、ベースになっている仮想マシンから上に搭載されているライブラリまですべて異なっている。


ケータイJavaには2種類ある?


携帯Javaと一口にいっても、携帯会社によってさまざまな違いがあります。が、それらは大きく分けると以下の2つに分けて考えることができるでしょう。

・Java MEの標準環境
Javaには、「携帯向けの標準」というものもあります。これは「Java Platform Micro Edition(Java ME)」と呼ばれるものです。この標準環境(実際には、このJava MEに用意されているさまざまな環境の中から、携帯用の「MIDP」と呼ばれる環境を使っています)を使用している携帯電話があります。KDDI(au)の「EZアプリ」やソフトバンク(旧ボーダフォン)の「S!アプリ」がこれを採用しています。

・NTT-DoCoMoのJava
DoCoMoの「iアプリ」では、Java MEのMIDPではなく、独自に用意した環境を使用しています。これは一般に「DoJa(DoCoMo Java)」と呼ばれるもので、一番土台となる部分はJava MEと同じなのですが、その上にDoCoMo独自のライブラリなどを組み込んで独自の環境にしています。

DoCoMoのiアプリと、EZ/S!アプリは搭載されている環境が異なっている。


現在、市場シェアからいえば、DoCoMoの「iアプリ」のユーザがもっとも多いのは確かでしょう。したがって、携帯Javaを始めようとするなら、どうしてもDoJaから入ることになるでしょう。

ただし、世界的に見れば、DoJaはやはり異端であり、標準のMIDPこそが一般的ともいえます。こちらも無視することはできないでしょう。DoJaを一通り学んでからでもいいですから、やはりMIDPも抑えておきたいところですね。