1 Oracle Java SE Embeddedの概要
ご使用のデバイスでOracle Java SE Embeddedテクノロジを使用する利点と、目標の達成に最も関連性のあるJava SE Embeddedドキュメントをご紹介します。
このページのトピックは次のとおりです。
組込みシステム: 未来の波
組み込みシステムはコンピュータ・ベースですが、デスクトップ・コンピュータとそのアプリケーションとは異なります。 組み込みシステムのコンピュータは、デバイスに組み込まれています。 さまざまなデバイスが日々拡大しています。


「図device-list.pngの説明」
多くの組込みシステムはヘッドレスであり、従来のユーザー・インタフェースがないことを意味: キーボードなし、マウスなし、表示なし。 これらのシステムは、温度計や加速度計などのセンサー入力に対応します。 アラームの表示やメッセージの送信など、アクチュエータを調整して応答します。 ネットワークに接続されたヘッドレス・システムは、webサーバーを実行し、Webベースのユーザー・インタフェースを提供できます。
ハードウェアのコストが下がるにつれ、ヘッドフルな組み込みシステムはますます一般的になっています。 ユーザーはこのようなシステム(通常はボタンまたはディスプレイ)と対話しますが、デバイスはデスクトップ・コンピュータのように見えないか、またはデスクトップ・コンピュータのように動作しません。 「図1-1」は、ヘッドフル埋込みシステムの例を示しています。 この例では、デモンストレーションの目的で、埋込みコンピュータはケースのウィンドウを介して表示されます。
埋込みシステムには通常、デスクトップ・アプリケーションとまったく異なる属性があります:
-
それらの機能はファクトリで固定されており、汎用ではなく専用です。 ワークロードは予測可能です。
-
カスタム・ハードウェア(センサーとアクチュエータ)を使用します。
-
これらは、要件を満たす最小の計算リソースを使用するように、複数のディメンションで慎重に最適化されます。
-
誤動作には耐えられない。 通常、埋込みシステムはデプロイ後に修正できません。
-
少数のリソース、特殊用途のハードウェア、および1日目の正しい操作に対する高い需要により、ソフトウェアを開発することは困難です。
埋込みシステムにJavaを使用する理由
組み込みシステム・アプリケーションは、かつてアセンブリ言語で書かれていました。 しかし、組み込みのコンピュータ・ハードウェア・リソースが増加するにつれて、市場投入までの時間や開発コストなどの圧力が、より移植性が高く、エラーが生じやすいC言語やC++言語に移行しました。 これらの言語はより多くのメモリーとより多くのCPUサイクルを必要としていましたが、ハードウェア・コストの削減とソフトウェアの複雑さの増加により、取引は価値があります。
この進歩を続け、Mooreの法則やその他のファクタにより、最近ではJavaが組み込みシステム開発にますます魅力的になっています。 これらのその他のファクタには、エンタープライズおよびその他の非埋込みドメインでトレーニングを受けたJava開発者の世界的な人口が含まれます。 この人材と知識は、Javaプログラミング言語でアプリケーション・コードを開発することで、組込みシステムに拡張できます。
Javaとは:
-
C++の複雑さを誤らせることなく、現代的でオブジェクト指向の言語。 オブジェクトは、センサーとアクチュエータの自然な表現です。
-
誤差はCより少ない。 たとえば、ポインタがなく、メモリー管理は自動です。
-
移植性が高く、別のCPUまたはオペレーティング・システムで実行するためにJavaクラスを再コンパイルする必要はありません。
-
Security-oriented. Javaライブラリは、埋込みデバイスとの間で送受信される機密データの暗号化、およびフィールドの埋込みアプリケーションの更新または拡張のためにダウンロードされたデジタル署名コードの検証をサポートしています。
-
マルチスレッドで、オペレーティング・システムのスレッド・モデルが複数のCPUコアを利用するプラットフォームでのパラレル・アクティビティの自然表現と同時実行を可能にします。
-
データベース・アクセスやグラフィカル・ユーザー・インタフェースなど、OSに依存しないライブラリの大規模なコレクションを備えています。
-
ハードウェア・リソースとアプリケーションのニーズに合わせて調整可能。 たとえば、ネイティブ命令への実行時コンパイル、および未使用の(ごみ)メモリーの再利用方法とタイミングに関する複数のオプションがあります。
-
特殊な組込みシステム・ハードウェアと対話する、Cで記述されたネイティブ・メソッドで拡張可能です。
-
デスクトップおよびリモートでデバッグ可能です。 デスクトップJava Runtime Environment (「デバイスに適したJava Embeddedはどれですか。」を参照してください)のAPIは、ハードウェア固有のインタフェースおよび動作を除き、埋込みコンピュータで実行されるAPIと同じです。 ほとんどの機能デバッグはデスクトップ・コンピュータで実行できます。 ネットワーク接続を持つ組み込みシステムは、リモートでデバッグおよびプロファイルできます。
デバイスに適したJava Embeddedはどれですか。
Oracleでは、次の3つのJava Runtime Environment製品ファミリを提供しています:
-
Java Platform, Standard Edition (Java SE): Macintosh、Windows、Linux、およびSolarisデスクトップおよびサーバー・クラス・コンピュータの場合。 これらのコンピュータでは、JREおよびJavaアプリケーションのハードウェア・リソースがほとんど問題になりません。 詳細は、
https://www.oracle.com/technetwork/java/javase/overview/
を参照してください -
Oracle Java SE Embedded: グラフィカル・ユーザー・インタフェース・ハードウェアの有無にかかわらず、JREおよびJavaアプリケーションのメモリーが数十MBの組込みシステムの場合。 このドキュメントでは、Oracle Java SE Embeddedについて説明します。
-
Oracle Java Micro Edition埋込み(Oracle Java ME Embedded): JREおよびアプリケーションのメモリーがメガバイト以下のデバイス上のヘッドレス埋込みシステムの場合。 詳細は、
http://www.oracle.com/technetwork/java/embedded/overview/javame/
を参照してください
Java Runtime Environment (JRE)は、特定のCPUおよびオペレーティング・システム上で移植可能なJavaプログラム命令 (バイトコード)の安全な実行を可能にし、サポートします。 一般的なJREには、次のような複数のコンポーネントがあります:
-
JREのJava Virtual Machine (JVM)は、バイトコードを検証してCPU命令に変換し、それらを実行するように配置します。
-
JREのメモリー・マネージャは、コンピュータのオペレーティング・システムと対話して、動的な(ヒープ)メモリーを割り当て、(ゴミ収集)を自動的に再利用します。
-
JREのアプリケーション・プログラミング・インタフェース(APIs)は、ファイル・システム、データベース・アクセス、グラフィカル・ユーザー・インタフェースなどのサービスを提供します。 これらのサービスは、対応するオペレーティング・システム・サービスに実装されることもありますが、オペレーティング・システムの依存関係からJavaアプリケーションを分離します。
-
JREのリソース・ファイルには、タイムゾーン、フォント、ロケールなどのデータが格納されます。
-
JREのランチャは、Javaアプリケーションを実行するJREを起動するオペレーティング・システム・コマンドです。
定義上、JREはJavaアプリケーション・コードを移植可能にするために似ている必要がありますが、構成は異なる場合があります。 たとえば、異なる仮想マシン設計では、一部のコンピュータで使用可能なリソースを利用できますが、他のコンピュータでは利用できません。
組み込まれたJava SEの核心: ランタイム環境のカスタマイズ
Java Runtime Environment (JRE)は、Java Virtual Machine (JVM)とライブラリおよびツールキットで構成されます。
Oracle Java SE Embeddedは、不要なJRE機能にメモリーを犠牲にすることなく、アプリケーションの機能要件を満たすカスタムJREを構築できるコンポーネントのセットです。 すべてのカスタムJREは、Oracle Java SE JREの機能サブセットです。つまり、デスクトップ・コンピュータで埋込みアプリケーション・コードを開発および機能的にテストできます。ただし、特殊用途の埋込みハードウェアの存在に依存するクラスを除きます。 デスクトップ、サーバーおよび埋込みアプリケーションでアプリケーション・クラスを再利用することもできます。
jrecreate
ツールを使用して、インストールするJVMのサイズと、カスタムJREのコンポーネントとして含めるプロファイルを選択します。 選択したJVMはパフォーマンス特性によって異なり、プロファイルはデバイスで実行されるアプリケーションによって使用されるライブラリによって異なります。 アプリケーションを開発する際、jdeps
ツールを使用して、アプリケーションに必要な最小限のプロファイルを決定できます。