JavaFX 8──Web/3D/Embedded対応強化など、大きく進化したJava SEの標準GUIフレームワークを概観する

Oracle Java & Developers編集部
2014-12-19 16:00:00
  • このエントリーをはてなブックマークに追加

Java SE 8で導入された「JavaFX 8」は、デスクトップ向けのリッチ・クライアント・フレームワークとして機能が拡充されているほか、組み込み機器など小型デバイスへの対応も強化されている。主なポイントを紹介しよう。

米国オラクル Javaプロダクト・マネジメント/Javaテクノロジー・アンバサダーのスティーブン・チン氏
米国オラクル Javaプロダクト・マネジメント/Javaテクノロジー・アンバサダーのスティーブン・チン氏

 2014年3月にリリースされたJava SE 8では、従来のSwingに代わるGUIフレームワークとして、JavaFXの最新版である「JavaFX 8」が導入された。Java SE 8に合わせてバージョン番号が2から一気に引き上げられたJavaFX 8の大きな特徴は、デスクトップ・アプリケーション向けの機能が拡充されたほかに、組み込み機器など小型デバイス向けの機能も大きく強化されている点だ。主な変更点について、米国オラクルでJavaプロダクト・マネジメント/Javaテクノロジー・アンバサダーを務めるスティーブン・チン氏が解説する。

※ 本記事は、2014年5月に東京で開催された「Java Day Tokyo 2014」におけるスティーブン・チン氏のセッション「Exploring JavaFX 8」の内容を基に構成しています。

Java SE 8の標準GUIフレームワークとなったJavaFX 8

 ご存じのとおり、JavaFXを使うと、リッチなデスクトップ・アプリケーションを開発することができます。アニメーションやビデオ、グラフなど、さまざまなビジュアル要素を扱えるほか、HTML5に対応したWebベースのビューをアプリケーションに組み込んだり、3Dのハードウェア・アクセラレータを活用したアプリケーションを作ったりすることも可能です。

 Java SE 8では、標準のGUIフレームワークとしてJavaFX 8が導入されました。となると、気になるのは従来の標準GUIフレームワークであるSwingとJavaFXの関係ですが、両者は排他的な関係にあるわけではありません。JavaFXは、既存のSwingアプリケーションと双方向で統合することが可能なのです。Swingは、以前からJFXパネルをサポートしており、SwingアプリケーションにJavaFXコントロールを埋め込むことができましたが、JavaFX 8では、これとは逆のことが可能になりました。すなわち、SwingのコントロールをJavaFXアプリケーションに組み込めるようになったのです。

 この双方向の統合が可能になったことで、SwingからJavaFXへのマイグレーション・パスが確立されました。既存のSwingアプリケーションで作ったコントロールを生かしつつ、新しいJavaFXアプリケーションに移行することが可能となったのです。

 JavaFXの動作環境は、Javaをインストールするだけで準備完了です。Java SE 7(Java SE 7 Update 2以降)と同8には、すでにJavaFXが統合されているからです。もちろん、WindowsでもMac OSでも同様に動作します。また、Java SE 8にはJavaFXライブラリのブートストラップ・クラスパスが用意されており、jfxrt.jarを別途インストールしてパスを設定するといった準備も不用になりました。

 GUIアプリケーションの開発に使用する統合開発環境(IDE)における対応も進んでいます。NetBeansにはJavaFXサポートが組み込まれており、EclipseにもJavaFX開発用プラグインが用意されているほか、IntelliJもJavaFXをサポートしています。

JavaFXのアーキテクチャ

 次に示すのは、JavaFXのアーキテクチャを図示したものです。この図で強調したいのは、JavaFXはJava仮想マシン(JVM)上で動作し、Javaのパワーをすべて活用できるということです。

 Java SE 8では、新しいガベージ・コレクタの導入や並列処理の改善など、JVMのパフォーマンス向上が図られています。その恩恵は、既存のJavaFXアプリケーションでも受けることができます。さらに、Java SE 8ではラムダ式やストリームAPIといった性能や開発生産性を高める機能が追加されており、それらもJavaFXアプリケーションの開発で活用できるのです。

 また、上の図にも示したように、JVMの上にはJava2Dと3Dグラフィックスのレイヤがあります。3Dに関してはDirectXやOpenGLをサポートしているほか、組み込み用のEGLにも対応しています。

パッケージド・アプリケーション
──Java実行環境をバンドルできる新パッケージング方法

 デスクトップ用のJavaFXアプリケーションを正しくコーディングするうえで重要なのは、ユーザーがアクセスしやすいかたちにパッケージングすることです。JavaFXには、3つのパッケージング方法があります。1つ目はWebブラウザ上で動作するアプレットとして実装する方法、2つ目はJava Web Startを利用する方法、そして3つ目が新たに追加された「パッケージド・アプリケーション」で、これが最も推奨される方法です。

 パッケージド・アプリケーションとは、OSのネーティブ・インストーラを使う方法であり、ユーザーがJava実行環境を導入していない状態からでもアプリケーションとJava実行環境を一緒にインストールすることができます。この方法なら、インストールするJavaのバージョンを指定できるため、テストが容易になりますし、Mac App Storeで配布することも可能です。

Mac App Storeで配布されているJavaFXアプリケーションの例
Mac App Storeで配布されているJavaFXアプリケーションの例

JavaFX 8の新しいコントロールと新ツール

 それでは以降、JavaFX 8の新機能を紹介していきましょう。

DatePickerコントロール

 JavaFX 8では、フィールドのクリックによりポップアップ表示できるカレンダー・コントロールとして「DatePicker」が追加されました。これは日付や期間の指定に使うことができます。通常のグレゴリオ暦が適当でなければ独自のカレンダーを使うこともでき、そのデザインはCSSで指定します。

DatePickerコントロールの例
DatePickerコントロールの例

TreeTableViewコントロール

 「TreeTableView」とは、ツリー・ビューとテーブル・ビューを組み合わせたコントロールです。ツリー・ビューで階層構造を表示して対象項目を選択し、その項目の詳細をテーブル・ビューで表示するといった用途で使います。複数選択や階層の折り畳みに対応しており、DatePickerと同様にCSSによるデザイン指定をサポートしています。

TreeTableViewコントロールの例
TreeTableViewコントロールの例

Modenaテーマ

 「Modena」は、従来のCaspianテーマに代わり、JavaFX 8からデフォルトとなったテーマです。最新のOSデザインとの適合性を考慮して、クリーンでエレガントなデザインを採用しています。このテーマもCSSでカスタマイズすることができます。

JavaFX Scene Builder 2

 「JavaFX Scene Builder 2」は、新しいビジュアルGUIプログラミング・ツールです。左側のペインで選んだコントロールを中央のペインにドラッグ&ドロップで配置し、右側ペインで選択したコントロールのプロパティを動的に変更することができます。GUI操作で行った変更は、即座にXMLファイルに反映されます。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]