ついにベールを脱いだJavaFX

第1回 JavaFXの概要と基本

この記事を読むのに必要な時間:およそ 7 分

他のRIA技術との比較

JavaFXがよく比較されるのは,RIA向けの技術であるAdobe AIRやMicrosoftのSilverlightです。それぞれ微妙にターゲットが異なっているので,AIRやSilverlightという比較ではなく,Sun,Adobe,Microsoftという観点から比較してみましょう。

実行系

JavaFXはデスクトップアプリケーションとしてはJREを使用して動作します。また,ブラウザを介して配備するためのツールとしてJava Web Startを使用することができます。一方,ブラウザ上で動作させるアプリケーションはAppletとして動作させることができます。もちろん,Java Web Startを使うこともできます。

特にJava SE 6 update 10で導入された新しいJava Plug-inにはさまざまな特徴があり,JavaFXを動作させるのに適しています。この新しいJava Plug-inに関しては,Java Expert #03「Applet Reloaded? 再び進化するAppletを使おう」をご参照ください。

携帯電話などの組込み用途では,前述したようにCLDCやCDC用のJavaFX Mobileが公開される予定になっています。

Adobeでは,デスクトップアプリケーションのプラットフォームとしてAIRを使用します。ブラウザ上で動作させる場合は,主にFlash Playerが使用されます。組込み用途の場合,Flash Liteが使用されます。また,Google Android向けには,LiteではないFlash Playerが開発されているようです。

MicrosoftではデスクトップアプリケーションとしてはWPF(Windows Presentation Foundation)が使用されます。そして,ブラウザで動作させるためにWPFのサブセットとして開発されたSilverlightが使用されます。組込み用途にはSilverlight for Mobileが用いられます。

構築言語

JavaFXが他の技術と最も異なるのは構築言語の扱いです。AdobeやMicrosoftでは,ユーザインターフェースの構造に関する部分はXMLを使用し,ロジックの部分に手続き型言語が使用されます。Adobeの場合,構造はMXML,ロジックは主にActionScriptが使用されます。Microsoftでは,構造をXAML,ロジックにC#などが使用されます。

なぜ,このように2つの形式でアプリケーションを構築するのでしょうか。

ユーザインターフェースを構築する場合,構造的なデータとイベント処理などを行うロジックという2つの側面があります。たとえば,図1のようなアプリケーションを考えてみましょう。

図1 簡単GUIアプリケーション

図1 簡単GUIアプリケーション

このアプリケーションは図2のような構造を持っています。

図2 アプリケーションの構造

図2 アプリケーションの構造

FrameにはPanelが貼ってあり,PanelにはTextFieldとButtonが貼ってあります。そして,それぞれのコンポーネントはサイズやレイアウトなどのアトリビュートを持っています。このようなツリーで表される情報を表すのにXMLは適しています。一方,Buttonを押された時のアクションを記述するには,手続き型言語が優れています。このため,AdobeもMicrosoftも構造をXML,ロジックを手続き型言語で表しているのです。

では,JavaFXではどうでしょう。JavaFXでは前述したJavaFX Scriptだけを用いてアプリケーションを構築します。しかし,構造を表すのが苦手なのではと思われるかもしれません。そこで,取り入れられたのが構造を表すのに適している宣言的文法です。宣言的文法を採用することによって,XMLなどを使用せずにアプリケーションを構築することが可能になっているのです。宣言的文法に関しては詳しい説明は後述します。

開発環境

RIAを開発する場合,開発環境は非常に重要になります。ロジックが主体のアプリケーションと異なり,グラフィカルな要素が多分に含まれているためです。グラフィカルな要素の開発には,ドローツール的な機能と,ドローした要素をロジックに結びつける機能の2つの側面があります。

特にドローツール的な機能は,その使いやすさによって作業効率が大きく変わってしまいます。

AdobeはAIRやFlashなどのアプリケーションを作成するのに,Flash ProfessionalやFlex Builderなどの開発環境を使用することができます。もともと,Flash Professionalはドローツールとして提供されてきており,グラフィカルな開発はお手のものです。また,Flashのタイムラインが苦手という開発者には,FlashをベースにしたFlex Builderが提供されています。RIAアプリケーションを作成する場合,Flash Professionalよりも,Flex Builderが広く使われているようです。

一方のMicrosoftは,Visual StudioとExpression Studioを使用します。主にグラフィック部分をExpression,ロジックをVisual Stdioで開発します。双方とも同じプロジェクトをオープンすることができるので,デザイナと開発者の分業にも適しています。

JavaFXの開発にはNetBeansが使用されます。現状のところドローツール的な機能を持つグラフィカルな開発環境は提供されていません。ここが現時点でのJavaFXの一番の弱みであると筆者は考えています。そこで,グラフィック部分の作成を補助するため,Adobe IllustratorやAdobe Photoshopのプラグインを含む,JavaFX Production Suiteが提供されています。Production Suiteは以前Project Nileという名前でしたが,正式版リリースと共に名称が変更されたようです。

Production Suiteを使用することで,IllustratorやPhotoshopで作成したグラフィックをJavaFXに取り込むことが可能になります。しかし,FlashやExpressionなどの開発環境からすると,やはり見劣りがしてしまうのは確かです。

著者プロフィール

櫻庭祐一(さくらばゆういち)

横河電機に勤務するかたわらJava in the Boxにて新しい技術を追い続けています。JavaOneは今年で11年目。名実共にJavaOneフリークと化しています。