組み込み開発を支えるJava技術
組み込み用途のJava規格
このように、組み込みシステムの世界でも、Javaが広がりつつあります。しかし、組み込みシステムにおいては、エンタープライズ分野で一般的に使われているJava規格ではなく、組み込み向けに作られたJava規格を使います。
組み込み向けのJavaとは、一体どのような性質を持つのでしょうか。ここでは、一般的なJavaと組み込み向けのJavaの違いをまとめます。ひとくちにJavaといっても、適用するプラットフォームに応じて、大きく3つに分かれています。
- Java Enterprise Edition(Java EE)
- Java Standard Edition(Java SE)
- Java Micro Edition(Java ME)
このうち、最後のJava MEが、組み込みシステム向けの仕様です。Java MEの特長としては、「低リソースでも動作する」ことはもちろんですが、これ以外に「ハードウエア環境に合わせて仕様を選択できる」という点を挙げることができます。
組み込みシステムといっても、用途やスペックは様々です。このため、2つのコンフィグレーションと複数のプロファイルを用意し、これらを組み合わせることで、ハードウエアに適したJavaを用意できるようになっています。
コンフィグレーションは、Java VMと基本ライブラリを定義しています。一方、プロファイルは、用途別のライブラリを定義しています。このうえでさらに、限定的な機能を提供するライブラリとして、オプション・パッケージを追加することも可能です。
図2: Java ME の構成 |
- 2つのコンフィグレーション
- Connected Limited Device Configuration(CLDC)
- Connected Device Configuration(CDC)
- 主なプロファイル
- Doja
- Mobile Information Device Profile(MIDP)
- Foundation Profile(FP)
- Personal Basis Profile(PBP)
- Personal Profile(PP)
広く携帯電話で使用されているJavaの場合、2種類あるコンフィグレーションのうち、CLDCを選択するのが一般的でした。ただし、CLDCは、名前に"Limited"とある通り、低リソースで動作するようにJava言語仕様の一部に制限をかけた仕様になっています。
これに対して、CDCは、CLDCよりも多くのリソースを必要とするものの、標準のJava言語仕様に準拠しています。つまり、CDCのVMとJava SEのVMは、VMとしては同じように動作します。この2者の違いの多くは、ライブラリの違いによる、API(Application Programming Interface)の種類の差です。
最近では、リソースを考慮する立場よりも、Java SEとの互換性を重視する傾向があります。このスタンスから、CLDCではなく、CDCを採用するケースが増えています。例えば、Blu-ray Discプレーヤで採用されているコンフィグレーションは、CDCです。
少ないリソースで動きつつ、Java SEとの互換性をそこそこ保っている例が、Android OSのVMであるDalvik VMです。
Dalvik VMは、Java VMをベースに、Android用に開発されたVMです。しかし、CLDC同様、少ないリソースで動作するように改変されています。このため、JavaアプリケーションをそのままDalvik VM上で動かすことはできません。
ただし、Dalvik VMの基本的なAPIは、CDCのものとおおむね同じです。このため、CDC用に開発したJavaアプリケーションは、比較的容易にDalvik VMに移植することができます。