組み込み開発を支えるJava技術

2010年8月4日(水)
一瀬 成広

組み込み用途のJava規格

このように、組み込みシステムの世界でも、Javaが広がりつつあります。しかし、組み込みシステムにおいては、エンタープライズ分野で一般的に使われているJava規格ではなく、組み込み向けに作られたJava規格を使います。

組み込み向けのJavaとは、一体どのような性質を持つのでしょうか。ここでは、一般的なJavaと組み込み向けのJavaの違いをまとめます。ひとくちにJavaといっても、適用するプラットフォームに応じて、大きく3つに分かれています。

  1. Java Enterprise Edition(Java EE)
  2. Java Standard Edition(Java SE)
  3. Java Micro Edition(Java ME)

このうち、最後のJava MEが、組み込みシステム向けの仕様です。Java MEの特長としては、「低リソースでも動作する」ことはもちろんですが、これ以外に「ハードウエア環境に合わせて仕様を選択できる」という点を挙げることができます。

組み込みシステムといっても、用途やスペックは様々です。このため、2つのコンフィグレーションと複数のプロファイルを用意し、これらを組み合わせることで、ハードウエアに適したJavaを用意できるようになっています。

コンフィグレーションは、Java VMと基本ライブラリを定義しています。一方、プロファイルは、用途別のライブラリを定義しています。このうえでさらに、限定的な機能を提供するライブラリとして、オプション・パッケージを追加することも可能です。

図2: Java ME の構成
  • 2つのコンフィグレーション
    1. Connected Limited Device Configuration(CLDC)
    2. 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に移植することができます。

日立ソフトウェアエンジニアリング株式会社

1997年の入社来、組み込みJavaを中心に担当。現在、日立ソフトの組み込みJava製品「SuperJ Engine」組み込み向けOSGi実装「SuperJ Engine Framework」の開発取り纏めを担当している。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています