ドキュメント



Oracle Java SE Embedded: 開発者ガイド

13 埋込みアプリケーションの起動

この章では、javaランチャを様々なオプションおよびフラグとともに使用して、ターゲット・デバイスで埋込みアプリケーションを起動する方法について説明します。 また、組込みデバイスで実行されているアプリケーションを終了する方法、およびトラブルシューティングのヘルプの場所も示します。

この章には次の項目があります。

javaランチャ・ツールを使用したアプリケーションの起動

javaランチャを使用して、ターゲット・デバイスでパフォーマンス・テスト用のアプリケーションを起動します。 -cpまたは-jarオプションを使用できます。

次の例は、sshおよびjava -cpを使用してアプリケーションをリモートで起動するためのコマンドを示しています。 この例では、ターゲット・デバイスのユーザー名はpiです

$ ssh pi@192.0.2.0
pi@192.0.2.0's password: 
...
$ java -cp Hello.jar helloworldapp.HelloWorldApp 

最後の引数は、アプリケーションのmain()メソッドを含むpackage.classです。

この一般的な例の他に、「特定のJVMを使用したアプリケーションの起動」または「デバッグ・モードでのアプリケーションの起動」を使用できます。 「最小JVMでサポートされていないjavaランチャ・オプション」も参照してください

特定のJVMを使用したアプリケーションの起動

Oracle Java SE Embedded JREには、複数のJVMを含めることができます。 次のjavaランチャ・オプションを使用して、特定のJVMを指定できます:

  • -minimal

  • -client

  • -server

-clientおよび-serverオプションを使用し、JVMが存在しないか使用可能でない場合、そのJVMは使用可能なJVMに別名設定されます。 -minimalオプションを使用すると、最小限のJVMが存在しない場合にエラーが発生します。

クライアント・コンパイラ(C1)プロファイリング・インライン化の有効化

クライアント・コンパイラ・インライン化ポリシーは、プロファイル情報を使用して、最小JVMおよびクライアントJVMのパフォーマンスを向上させます。 javaランチャ・フラグ-XX:+C1ProfileInliningを使用して、C1プロファイル・インライン化を有効にできます。

クラス・データ共有によるJVM起動時間の改善

クラス・データ共有(CDS)は、JVMの起動時間を短縮するためにHotSpot VMとともに使用されます。 CDSに関する一般的な情報については、「Java SE 8のドキュメント」を参照してください。

Oracle Java SE Embedded 8u6以降では、クラス・リストに含まれるクラスのセットおよび共有アーカイブ・ファイルの名前をカスタマイズでき、クラス・リストのカスタムのロケーションを指定できます。 これらは、Oracle Java SE Embeddedアプリケーションの特別な機能です。

ノート:

共有アーカイブ・ファイルのコンテンツは、デフォルトで信頼されているとみなされます。つまり、コンテンツはチェックされませんが、Javaサンドボックスの外部で実行される実行可能ネイティブ・コードが含まれます。 生成する共有アーカイブ・ファイルの整合性が、悪意のある変更の対象にならないことを確認します。

カスタムCDSクラス・リストに関連する3つのjavaフラグがあります:

-XX:DumpLoadedClassList=<classlist_file>

ブート・ローダーによってロードされたすべてのクラスのセットを<classlist_file>内の指定されたファイルに書き込むことで、カスタム・クラス・リストを作成します。 このカスタム・クラス・リストは、共有アーカイブの作成時にCDSで使用できます。

-XX:SharedClassListFile=<classlist_file>

-XX:DumpLoadedClassListフラグで作成されたものなど、共有アーカイブの作成時に使用するユーザー定義のクラス・リストを指定します。

-XX:SharedArchiveFile=<archive_file>

CDSダンプ中に書き込まれる共有アーカイブ・ファイルの名前とロケーション、またはCDSを有効にしたJVM実行中に読み取られる共有アーカイブ・ファイルの名前とロケーションを指定します。

次に、アプリケーションのカスタム・クラス・リストを作成および実装する方法の例を示します。

タスク1アプリケーションで使用されるコア・ライブラリ(長靴)クラスのカスタム・リストの生成
java -XX:DumpLoadedClassList=./MyApp.classlist MyApp 
タスク2これらのクラスを含むカスタム共有アーカイブの生成
java -Xshare:dump -XX:SharedClassListFile=./MyApp.classlist
    -XX:SharedArchiveFile=./MyApp.jsa
タスク3カスタム共有アーカイブを使用したアプリケーションの実行
java -Xshare:on -XX:SharedArchiveFile=./MyApp.jsa MyApp

デバッグ・モードでのアプリケーションの起動

デバッグ・サポートを使用して構築されたターゲットにJREがある場合は、デバッグ・モードでアプリケーションを起動し、同じネットワーク上の任意のホストからJVMTI準拠のリモート・デバッグ・クライアントをアタッチできます。 1つのクライアントはjdbです。詳細は、UNIXおよびWindowsのJava SEツールのドキュメントを参照してください。 「例13-1」は、java -jarを使用したデバッグ・モードでの起動を示しています。

例13-1 デバッグ・モードでの -jarを使用した起動

$ java -jar Hello.jar \
-agentlib:jdwp=transport=dt_socket,server=y,address=8000 

ノート:

一部のデバッグ機能では、javaツールを-XX:+UsePerfDataフラグで実行する必要があります。 Oracle Java SE Embeddedでは、このフラグはデフォルトでオフになっていますが、Java SE JDKではデフォルトでオンになっています。

最小JVMでサポートされていないjavaランチャ・オプション

メモリーの使用を減らすため、最小限のJVMでは、javaランチャによって渡される一部の仮想マシン・オプションはサポートされません。 サポートされていないオプションが指定されている場合、その深刻さに応じて、ランチャは警告メッセージを出力し、オプションを無視してJVMを起動するか、エラー・メッセージを出力してJVMを起動せずに終了します。

表13-1 最小JVMでサポートされないオプション

オプション javaランチャ・レスポンス

-agentpath:jdwp, -Xrunjdwp

エラー

-javaagent:jarpath=[options]

エラー

-Xagent:hprof, -Xrunhprof, -agentlib:hprof, -agentpath:hprof

エラー

-Xcheck:jni

警告

-Xincgc, -XX:+UseGarbageCollector

警告

-Xshare:auto

警告

-Xshare:dump, -Xshare:on

エラー

-XX:+ManagementServer, -Dcom.sun.management

エラー

-XX:NativeMemoryTracking

エラー

-XX:*Flight*

エラー


最小限のJVMでは、リモート・デバッグ、プロファイリング、モニタリングおよび保守性ツールはサポートされません。 これには、jcmd, jdb, jinfo, jmap, jstackなど、統合開発環境が含まれます。 最小限のJVMでは、これらのツールからのリクエストは無視されます。

組み込みデバイスで実行されているアプリケーションの終了

Javaアプリケーションは、デバイスのコンソールから終了できません。 ただし、リモート・シェルを使用してアプリケーションを終了できます:

$ pkill java 

トラブルシューティング

アプリケーションに問題がある場合は、Java Platform, Standard Editionトラブルシューティング・ガイドに診断ヘルプがあります。

既知の問題については、Oracle Java SE Embeddedリリース・ノートも参照してください。

ウィンドウを閉じる

目次

Oracle Java SE Embedded: 開発者ガイド

展開 | 縮小