ドキュメント



Oracle Java SE Embedded: 開発者ガイド

14 ヘッドフル・アプリケーションの開発

JavaFX APIを使用して、ヘッドフル・アプリケーションを作成することをお薦めします。 必要に応じて、Oracle Java SE EmbeddedにはARM用のAWT/Swing構成が用意されています。

この章は、次の項目で構成されています:

JavaFXを使用したヘッドフル・アプリケーション

JavaFXは、シーン・グラフの構成に基づいており、ハードウェア・アクセラレーションを利用し、アニメーションをサポートします。 JavaFXテクノロジについては、「Java SEクライアント・テクノロジ」ページを参照してください。

「図14-1」は、埋込みデバイスで実行されているJavaFXヘッドフル・アプリケーションの例を示しています。

図14-1 City Explorerの例

図14-1の説明が続きます
「図14-1 City Explorerの例」の説明

「図14-2」は、一般的な埋込みタッチ・デバイスの写真を示します。 Oracle Java SE Embeddedは、サポートされているデバイスでマルチ・タッチ・イベントをサポートします。 マルチ・タッチ・イベントでサポートされているデバイスについては、Oracle Java SE Embeddedリリース・ノートを参照してください。

図14-2 Touchデバイスの例

タッチ・デバイスのフォト・グラフ

JavaFX GUIアプリケーションは、任意のJavaライブラリからAPIを参照できます。 たとえば、JavaFXアプリケーションは、ネイティブ・システム機能にアクセスしたり、他の埋込みアプリケーションと通信するためにJava APIライブラリをコールできます。

JavaFXアプリケーションのルック・アンド・フィールはカスタマイズできます。 カスケード・スタイルシート(CSS)によって外観およびスタイルは実装から分離されるため、開発者はコーディングに集中できます。 グラフィック・デザイナは、CSSによってアプリケーションの外観およびスタイルを簡単にカスタマイズできます。

デスクトップおよび埋込みJavaFX APIには互換性があるため、ホスト・コンピュータでほとんどのGUI設計および機能テストを実行してから、アプリケーションをターゲットにコピーして最終的なテストおよびチューニングを行うことができます。 開発プロセスのクイック・ビューについては、「アプリケーション開発者のためのクイック・スタート」を参照してください。

埋込みプラットフォームとデスクトップJavaFXプラットフォーム間で動作が異なる領域には、次のものがあります:

  • 埋込みグラフィック処理ユニット(GPUs)は、通常、デスクトップGPUよりはるかに強力ではありません。 GPUの性能が低下すると、一部のアプリケーションでパフォーマンスが低下する可能性があります。

  • UIコントロールは、タッチ・インタフェースがあるかどうかに応じて、埋込みプラットフォームで異なる外観および動作を持つことができます。

  • 埋込みプラットフォームでは、JavaFXは、ユーザーによるテキスト入力およびテスト用の仮想キーボードを提供します。

Oracle Java SE EmbeddedのJavaFXコンポーネント

JREを最小化するために、JavaFX APIは2つのコンポーネントに分割されています:

ターゲット・デバイスでアプリケーションを正常に実行するには、カスタムJREに含まれているJavaFXコンポーネントを知っている必要があります。

JavaFXグラフィック・コンポーネント

効果とアニメーションを持つJavaFXアプリケーションは、グラフィック・コンポーネントで構築されたJREで実行されます。 グラフィック・コンポーネントは、ウィンドウ、シーン・グラフ、アニメーション、タイムラインおよびプロパティ・バインディングをサポートします。 グラフィック・コンポーネントは、イベントまたはUIコントロールをサポートしていません。 グラフィック・コンポーネントのみを含むJREで実行されている一般的なアプリケーションでは、効果およびアニメーションを表示できますが、ユーザー入力は処理できません。

Oracle Java SE EmbeddedでカスタムJREにインストールされるグラフィック・コンポーネントには、OpenJFX webサイトの「プロジェクト/コンポーネント・ページ」で説明されているように、ベース・コンポーネントが含まれています。

グラフィックス・コンポーネントの静的フットプリントは約6 MBです。

「表14-1」は、グラフィック・コンポーネントに含まれるパッケージを示します。

表14-1 JavaFXグラフィック・コンポーネント・パッケージ

パッケージ 説明

javafx.animation

Animation

javafx.application

ライフサイクル

javafx.beans

JavaFX beans

javafx.beans.binding

JavaFX Beanプロパティ・バインディング

javafx.beans.property

読取り専用および読取り/書込みBeanのプロパティ

javafx.beans.value

可観測値と書き込み可能値

javafx.collections

JavaFX監視可能なコレクション

javafx.concurrent

スレッド・クラス

javafx.css

スタイル設定可能なプロパティ

javafx.event

イベント処理

javafx.geometry

2Dおよび3D

javafx.scene

シーン・グラフ・コア

javafx.scene.canvas

即時モードのレンダリング

javafx.scene.effect

視覚効果

javafx.scene.image

イメージのロードと表示

javafx.scene.input

入力イベント

javafx.scene.layout

シーン・レイアウト

javafx.scene.paint

色とグラデーション

javafx.scene.shape

2Dおよび3Dシェイプ

javafx.scene.text

テキスト・レンダリングとメトリック

javafx.scene.transform

2Dおよび3D変換

javafx.stage

ウィンドウ

javafx.util

ユーティリティ

javafx.util.converter

文字列コンバータ


JavaFX Controlsコンポーネント

コントロール・コンポーネントは、UIコントロール、イベント処理およびチャートのサポートを追加します。 Controlsコンポーネントには、OpenJFX webサイトの「プロジェクト/コンポーネント・ページ」で説明されているFXMLコンポーネントも含まれています。 また、カスタムJREにControlsコンポーネントをインストールすると、自動的にGraphicsコンポーネントが含まれます。

Controlsコンポーネントの合計フットプリントとそれと一緒に取り付けられたその他のコンポーネントは約9 MBです。

「表14-2」は、Controlsコンポーネントに含まれるJavaFXパッケージを示します。

表14-2 JavaFXコンポーネント・パッケージを制御

パッケージ 説明

javafx.fxml

FXML

javafx.scene.chart

チャート

javafx.scene.control

UIコントロール

javafx.scene.control.cell

UIコントロールのセル


フォントの構成

JavaFXアプリケーションのフォントの構成の詳細は、https://wiki.openjdk.java.net/display/OpenJFX/Font+Setupを参照してください。

サポートされていないJavaFX機能

グラフィックおよびコントロール・コンポーネントは、JavaFXの大きなサブセットです。 デスクトップ・バージョンと比較して、Oracle Java SE Embeddedに含まれるJavaFXコンポーネントには、次の制限があります:

  • WebViewノード(webコンテンツを表示および操作するためのシーン・グラフ・ノード)はサポートされません。

  • アプレット、Swing統合またはStandard Widget Toolkit (SWT)統合はサポートされていません。

  • MediaViewクラスもメディア再生のサポートもありません。

  • デスクトップUI (たとえば、グローバル・クリップボード、ウィンドウの装飾またはアイコン化、ファイルおよびディレクトリ・チューザへのアクセス)との統合に関連するAPIはサポートされていません。

  • JavaFX仮想キーボードの埋込みバージョンでは、米国英語のロケールのみがサポートされます。

  • compact1プロファイル(「Compact1プロファイルAPI」を参照してください)で実行する場合、JavaFXコンポーネントは、JavaFX Scene Builderによって生成されたユーザー・インタフェースを含め、FXMLで定義されたユーザー・インタフェースをサポートしません。

「表14-3」は、2つのOracle Java SE Embedded JavaFXコンポーネントのいずれにも存在しないJavaFXデスクトップ・パッケージをリストします。

表14-3 Oracle Java SE Embeddedで使用できないJavaFXパッケージ

パッケージ 説明

javafx.beans.property.adapter

JavaBeansとの統合

javafx.embed.swing

Swing APIとの統合

javafx.embed.swt

SWT APIとの統合

javafx.print

印刷

javafx.scene.media

メディア再生

javafx.scene.web

Webコンテンツ

netscape.javascript

JavaScript統合


JavaFX APIのかわりにFXMLマークアップを使用

web設計のバックグラウンドがある場合、またはユーザー・インタフェース(UI)とバックエンド・ロジックを分離する場合は、FXMLを使用してUIのプレゼンテーションの側面を開発できます。

FXMLは、コードのアプリケーション・ロジックから切り離してユーザー・インタフェースをビルドするための構造を提供するXMLベースの言語です。 このプレゼンテーション・ロジックとアプリケーション・ロジックの分離は、web開発者にとって魅力的です。これは、データのフェッチと入力のコードをマスターすることなく、Javaコンポーネントを利用するユーザー・インタフェースを構築できるためです。

ノート:

compact1プロファイル以外はすべてFXMLを使用できます。「コンパクト・プロファイルについて」を参照してください。

FXMLを使用してJavaFXアプリケーションに統合する方法については、「Java SEクライアント・テクノロジ」ページを参照してください。

JavaFX Scene Builderを使用したUIの設計およびFXMLへのエクスポート

コードまたはFXMLを直接記述せずにUIを設計する場合は、JavaFX Scene Builderを使用します。 UIのレイアウトを作成すると、Scene BuilderによってレイアウトのFXMLコードが生成され、その後、アプリケーション・ロジックを含むJavaFXアプリケーションに統合されます。

JavaFX Scene Builderのドキュメントへのリンクは、「Java SEクライアント・テクノロジ」ページを参照してください。

ノート:

compact1プロファイルでは、基礎となるFXML出力がサポートされていないため、JavaFX Scene Builderを使用できません。

JavaFXサンプル・アプリケーション

JavaFXサンプル・アプリケーションのダウンロードzipファイルには、Ensemble 8が含まれています。これは、JavaFXをサポートし、グラフィック・コンポーネントで構築されたJREを持つ埋込みプラットフォームでテストされたサンプルです。 3DViewerおよびModenaサンプルは、埋込みデバイスでは実行されないことがわかっていることに注意してください。

Ensemble 8サンプルにアクセスするには、https://www.oracle.com/technetwork/java/javase/downloads/のJava SEダウンロード・ページからのリンクに従って、JavaFXサンプルをダウンロード

サンプルzipファイルからサンプルJARファイルを抽出したら、それをダブルクリックしてホスト・マシンで実行できます。 次の手順を使用して、JavaFXでサポートされ、グラフィック・コンポーネントでビルドされたJREを実行しているターゲット・デバイスでサンプルを実行します。

  1. JARファイルをターゲットの埋込みデバイスに転送します。

  2. ターゲット・デバイスで、javaランチャを実行してサンプルのメイン・クラスを起動します。次に例を示します:

    $ deployDir/bin/java -classpath /tmp/JavaFXSamples/Ensemble8.jar ensemble.EnsembleApp
    

    この例では、次に注意してください。

    • ターゲットのdeployDirには、コントロール・コンポーネントまたはグラフィック・コンポーネントを含むOracle Java SE Embedded JREが含まれています。

    • ターゲットでは、JavaランチャがdeployDir /bin /にあるように、PATH環境変数が設定されます。

    • ターゲットでは、抽出されたサンプル・アプリケーションは/tmp/JavaFXSamples/ディレクトリにあります。

    • ターゲット・デバイスでソフトウェア・レンダリングを使用する場合は、コマンドラインに次のオプションを追加します:

      -Djavafx.platform=directfb
      

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

$ pkill java 

ヘッドフル・アプリケーションのフォント設定

フォントの構成の詳細は、https://wiki.openjdk.java.net/display/OpenJFX/Font+Setupを参照してください。

SwingおよびAWT API

Oracle Java SE Embedded JREに含まれるJavaFXコンポーネントは、SwingおよびAWTライブラリよりはるかに小さい静的フットプリントを持っていますが、必要に応じて、Oracle Java SE EmbeddedのARM AWT/Swing構成を使用できます。 この構成では、「スイング」およびAWTグラフィックAPIがサポートされています。

ノート:

アプリケーションはSwing/AWT APIまたはJavaFX APIのみをコールでき、両方はコールできないことに注意してください。

ターゲット・デバイスのJREにAWT/Swing構成が含まれていることを確認してください。 「Swing/AWTヘッドフル・アプリケーション用のJREの構成」を参照してください。

ウィンドウを閉じる

目次

Oracle Java SE Embedded: 開発者ガイド

展開 | 縮小