この記事を読むのに必要な時間:およそ 2 分
Swingに代わる新しいJava GUIライブラリ「JavaFX」
JavaFXは,Oracleが開発しているJavaアプリケーションのための新しいGUIライブラリです。もともとはJavaのためのRIAフレームワークとして開発されていたものですが,2011年にコンセプトの大幅な見直しが図られ,現行バージョンのJavaFX 2.0からJavaアプリケーションのGUI開発のためのAPIという位置づけに落ち着きました。その経緯や,JavaFX 2.0に関する概要は「レポート:Javaに回帰した新生JavaFX 2.0─オラクル Java Developer Workshopレポート」に詳しくまとめられているので,本稿と合わせて参照してください。
JavaFXは,次期バージョンのJava SEプラットフォームとなるJava 8から正式にJava標準ライブラリのひとつとして組み込まれることが決まっています。従来のGUIライブラリであるAWT/Swingも引き続き利用できますが,今後大きな機能拡張が行われる見込みは薄く,スタンダードはJavaFXに移行していくと見られています。
JavaFXアプリケーションUIは,AWT/SwingのようにJavaプログラムとして記述することもできますが,FXMLと呼ばれるXMLベースのUI記述言語を使って記述することもできるようになっている点が大きな特徴です。FXMLによってより直感的に分かりやすく,簡潔な形でのUI構築が可能となり,Java GUIアプリケーションの開発生産性は大幅な向上を期待することができるでしょう。
本稿執筆時点でのJavaFXの最新版はJava FX 2.1.1であり,Windows版およびMax OS X版がリリースされていて,ランタイムと開発キット(JavaFX SDK)がJDKの最新版であるJDK 7u5に同梱される形で配布されています。また,JavaFX 2.2やLinux版のランタイム/開発キットはこのページにて公開されています。
JavaFXのためのUI構築ツール「JavaFX Scene Builder」
JavaFXアプリケーションのUIはシーングラフと呼ばれる形式で構成されます。シーングラフはUIパーツやグラフィック要素などをツリー状の階層構造で保持するグラフであり,ノードごとにエフェクトやイベント処理などを適用できるようになっています。前述のFXMLは,このシーングラフをXML形式で表現するための記述言語というわけです。
図1 JavaFXのシーングラフの例

Oracleでは,JavaFX SDKと並んでシーングラフをグラフィカルに作成することができる「JavaFX Scene Builder」(以下,Scene Builder)というGUIツールを開発中であり,WindowsおよびMac OS X向けの開発プレビュー版が公開されています。Scene Builderを使えば,自分でXMLコードを記述しなくても,グラフィカルな操作と設定だけでFXMLを生成することができます。生成したFXMLはJavaFXのプログラムに読み込んで利用することが可能です。
ただし,Scene BuilderはあくまでもFXMLによるUI定義を手助けするためのツールであり,これ単体でJavaFXアプリケーションを開発することはできません。また,現時点ではCSSを扱うこともできません。
図2 JavaFX Scene Builder

NetBeansとScene Builderの連携
Java用の統合開発環境であるNetBeans IDEでもJavaFXアプリケーション開発のサポート機能が整いつつあります。まず,NetBeans 7.1からは標準でJavaFX 2.0に対応し,プロジェクトマネージャからJavaFX向けのプロジェクトを作成できるようになりました。また,ソースコードエディタでもJavaFXの文法に対応したシンタックスハイライト等の機能が使えるようになっています。
図3 NetBeansがJavaFXアプリケーション開発を正式にサポート

それに加えて,次期バージョンとなるNetBeanse 7.2ではScene Builderとの連携機能が提供される予定になっています。NetBeans 7.2は現在RC版が公開されています。この連携機能によって,FXMLを直接編集する代わりに,NetBeans上からScene Builderを起動してUIレイアウトを作成できるようになります。
使い方はいたって簡単で,NetBeansのプロジェクトツリー上でFXMLファイルをダブルクリックするか,右クリックメニューで[開く]を選択するだけで,自動的にScene Builderが立ち上がります。
図4 FXMLファイルを開こうとすると自動的にScnene Builderが立ち上がる

Scene Builder上で編集を行って保存すれば,編集内容がNetBeans側に反映されます。ただし,NetBeans側でFXMLファイルを編集した場合には,Scene Builder側には自動では反映されないので,再度ファイルを読み込み直す必要があります。その際に文法ミスなどがあるとファイルを開くことができないので注意が必要です。
JavaFXにも待望のビジュアルなGUI構築ツールが登場し,NetBeansとの連携が可能になったことで,いよいよSwingからJavaFXへの移行が現実味を増してきました。正式に統合されるのはJava 8からですが,AWT/Swingとは使い勝手が大きく異なるので,早い段階から準備しておくことをお勧めします。