ついにベールを脱いだJavaFX

第1回 JavaFXの概要と基本

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

2008年12月4日(米国時間),とうとうJavaFXがリリースされました。2007年のJavaOneで発表されて以来1年半,やっとリリースまでこぎつけました。そこで,このたびリリースされたJavaFX 1.0をベースに,短期集中連載としてJavaFXを解説していきます。

JavaFXとは何だ

JavaFXはSun Microsystems(以下Sunと表記します)が提供するリッチクライアント向けの新しいプラットフォームです。Javaという名前が入っていますが,Javaとは別個のプラットフォームです。とはいうものの,技術的にはJavaがベースになっています。

JavaFXの開発はオープンソースで行われています。java.netのOpenJFXプロジェクトを中心に,OpenJFX-CompilerプロジェクトSceneGraphプロジェクトなどで精力的に開発が行われています。ただし,現状ではすべてのソースが公開されているわけではないようです。

JavaFXは,2007年にサンフランシスコで行われたJavaOneで発表されました。当初は,RIA(Rich Internet Application)向けという面が強調されていましたが,RIAに限らずさまざまなユーザインターフェースを構築することができます。たとえば,JavaのGUIのAPIであるSwingを用いて作成されたアプリケーションの一部だけをJavaFXで構築する,ということも可能です。

前述したようにJavaFXはJavaの技術をベースに構築されているため,Javaとの相性がよく,Javaの多様なAPIをシームレスに使用することもできます。

JavaFXがカバーする領域

JavaFXはデスクトップPCで動作するアプリケーションだけでなく,携帯電話をはじめとしたさまざまな領域をカバーしています。JavaFXはJava VM上で動作します。Java SEのJava VMだけでなく,Java MEのCLDC(Connected Limited Device Configuration)やCDC(Connected Device Configuration)でも動作させることが可能です。このため,携帯電話やスマートフォン,セットトップボックスなどでもJavaFXを動作させることができます。また,Blu-rayプレイヤで採用されているCDCをベースとしたBD-Jも,JavaFXがカバーする領域になります。CLDCを採用しないGoogle Androidでも,2008年のJavaOneにおいてJavaFXを動作させるデモが行われました。

このようにさまざまな領域をカバーしているJavaFXですが,それぞれの領域において,アプリケーションの作成方法が異なるというのでは,開発効率も上がりません。そこで,開発されたのがユーザインターフェースの構築に特化されたスクリプト言語であるJavaFX Scriptです。JavaFX Scriptを用いることで,かつてJavaが謳っていたWrite Once, Run Anywhereをもう一度実現することができるのです。

JavaFXの開発史

もともとJavaFXは,SeeBeyond社のChristopher Oliver氏の個人的なプロジェクトとして開始されました。その当時はJavaFXではなく,Form Follows Function(F3)という名前でした。

2005年9月にSunがSeeBeyond社を買収したことで,F3はSunの技術資産になりました。その後,Oliver氏は2006年11月にブログを開設し,そこでF3を公開しました。その当時のF3はJava SEのSwingおよびJava 2Dに依存しており,デスクトップでしか動作できませんでした。しかし,携帯電話を中心にした組込み用途でもF3を動作させることは重要です。そこで採られた戦略が,SavaJe社の買収でした。これはJavaOne 2007の直前,2007年4月のことになります。

通常,携帯電話ではCLDCを動作させますが,SavaJe社では携帯電話向けのCDCを開発していました。CDCではJSR 209 Advanced Graphics and User Interface Optional Package for the J2ME PlatformによりSwingとJava 2Dを動作させることが可能です。そこで,CDCとJSR 209をベースに組込み用途向けのJavaFXが構築されました。

そして,JavaOne 2007でF3はJavaFXと名前が変更され,大々的に発表されたのでした。

JavaOne 2007ではもともとF3のセッションが組まれており,それほど注目を受けているわけではありませんでした。ところが,初日のジェネラルセッションでJavaFXが発表され,F3のセッションもJavaFXのセッションに変更になりました。そして,JavaFXのセッションは大入り満員。セッションに入れなかった人も多数おり,最終日に同じ内容をもう一度行うアンコールセッションも組まれたほどでした。

JavaOneで発表された直後に,OpenJFXプロジェクトが開始されJavaFXのSDKが公開されました。

この時に公開されていたJavaFXはインタープリタで動作しました。つまり,起動時にスクリプトが解釈され,Javaのクラスに変換,コンパイルを行ってから動作するという流れになっていました。このため,どうしても起動時間が長くなってしまうという欠点があったのです。

そこで,毎起動時に行っていたコンパイルを事前に行う,コンパイラ方式が採用されました。このコンパイラを開発するためにOpenJFX-Compilerプロジェクトが2007年7月に開設され,同時にGUIコンポーネントもSceneGraphプロジェクトで開発されることになったのです。その後,デスクトップ向けのJavaFX DesktopのプレビューSDKが公開されたのが今年の7月。もちろん,コンパイラ方式で動作するものです。

そして12月4日,JavaFX Desktop 1.0を含む JavaFX SDK 1.0 がリリースされました。また,JavaFX SDKには組込み用途向けのJavaFX Mobileのベータ版も含まれています。

なお,2007年に公開されていたインタープリタ版と今回のコンパイラ版では,文法やAPIなど多くの部分が変更されています。また,Preview SDKと正式版でも一部APIが変更になっているので注意が必要です。これらの変更点については,本連載の最後に付録にまとめますので,参考になさってください。

著者プロフィール

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

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

コメント

  • 結合関数の例と説明が不適切?

    結合関数の例ですがこの例だと非結合関数でも同じ結果になります。引数は関数呼び出しの式 add(x, y) で参照されているだけなので通常の式で参照される変数と同様に変数 x や y の変更に伴い z の値が更新されます。結合関数にする必要がありません。

    Commented : #1  say (2009/02/08, 02:24)

コメントの記入