10 組込みアプリケーションの開発の要点
この章では、Oracle Java SE EmbeddedカスタムJREで実行されるJavaアプリケーションの開発の基本について説明します。
この章は、次の項目で構成されています:
ターゲット・デバイスのホスト開発
従来のJavaプログラミングと埋込みJavaプログラミングの基本的な違いは、ターゲットと呼ばれる2番目のコンピュータの存在です。 ターゲットはデバイスに埋め込まれています - プリンタ、医療機器、工業用具、または組み込みシステムを収容するもの。
ターゲットに十分なリソースがあり、Java SE Development Kit (JDK)でサポートされている場合、Javaデスクトップ・アプリケーションまたはJavaサーバー・アプリケーションを開発する場合と同様に、ターゲット上に埋込みアプリケーションを開発できます。 リソースには、CPUサイクル、メモリー、ファイル・システム、表示、ポインティング・デバイスおよびキーボードが含まれます。 Java SEダウンロード・ページのダウンロードボタンをクリックして、JDKが使用可能なプロセッサとオペレーティング・システムの組合せのリストを表示: http://www.oracle.com/technetwork/java/javafx/downloads/
リソースが豊富なターゲットはまれです。 対照的に、デスクトップおよびラップトップ・コンピュータは一般的で、安価で使い慣れていて、豊富なリソースがあります。 統合開発環境やコード・リポジトリなどのソフトウェア開発ツールの配列は、デスクトップ・コンピュータやラップトップ・コンピュータでも使用できます。 したがって、組み込みアプリケーション開発は、通常、ホストと呼ばれるデスクトップまたはラップトップ・コンピュータとターゲット間で分割されます。
ホスト・コンピュータを使用して、ソース・コードの記述とコンパイル、機能テストの実行、コンパイル済アプリケーションの実行可能Javaアーカイブ(JAR)ファイルへのパッケージ化、および場合によってはターゲット上のアプリケーションのリモート起動と停止を行います。 詳細は、「埋込みアプリケーションの開発およびテスト」および「埋込みアプリケーションのデプロイ」を参照してください。
ホスト-ターゲット開発サイクル
「図10-1」は、埋込みアプリケーション開発が従来のJavaアプリケーション開発と同じであり、追加のアクティビティがあることを示しています: ターゲットでのパフォーマンス・テスト。 ここで使用されるパフォーマンス・テストとは、ハードウェア固有の問題を検出するために、実際のデプロイメント・ハードウェアでアプリケーションを実行することを意味します。 これには、過度のメモリー消費、不十分な速度、競合状態、およびディスプレイ、センサー、アクチュエータなどの周辺機器に関する問題が含まれる場合があります。 ホスト・コンピュータでの機能テストでは、これらの状況は明らかにできませんが、コア・アプリケーションの動作に問題が生じる可能性があります。
カスタムJREはネットワーキングをサポートし、リモートのJavaデバッグおよびプロファイリングをサポートできるため、別の部屋、ビルディングまたは大陸にあるターゲットにJARをコピーし、パフォーマンス・テストを実行できます。
APIおよびJavadoc
「Java SE APIのドキュメント」は、プロファイル情報を表示します。 「図10-2」は、compact1プロファイルAPIにないインタフェースの例を示しています。 この定義では、compact2およびcompact3プロファイルに明示的に名前を付けます。 すべてのインタフェースは、完全なJRE APIに暗黙的に含まれています。
ネイティブ・メソッド
埋込みアプリケーションは、Java APIがないターゲット・デバイス・ハードウェアにアクセスする必要がある場合があります。 センサーやアクチュエータは典型的な例です。 通常、デバイス・アクセス機能はCで使用できます。 これらの関数は、中間ネイティブ・メソッドを作成することでJavaからコールできます。 Java Native Interface (JNI)の詳細は、「Java SE開発者ガイド」の「JNI仕様」を参照してください。
JNIの簡単な例は、Oracle MoonOceanブログ(https://blogs.oracle.com/moonocean/entry/a_simple_example_of_jni
)を参照してください
JDK 7の制限事項
JDK 7を使用する場合は、次の注意事項に従ってください:
ノート:
JDK 7を使用する場合は、プラットフォーム開発者(「コンパクト・プロファイルについて」を参照してください)によってデバイス用に作成されたカスタムJREに含まれるAPIのみを使用してください。 アプリケーションで、ターゲット・デバイスのカスタムJREに存在しないAPIが使用されている場合、ホストのJDK 7コンパイラおよびランタイムによってエラーがマスクされます。 ターゲット・デバイスでアプリケーションをテストすると、そのカスタムJREによってClassNotFoundException
がスローされます。 ターゲットで早期および定期的にテストして、このエラーを速やかに検出します。
また、JDK 7ではjdeps
ツールを使用できません。