BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JavaFX 2、JavaSEプラットフォームの完全に新しいクライアント層が公開ベータに

JavaFX 2、JavaSEプラットフォームの完全に新しいクライアント層が公開ベータに

ブックマーク

原文(投稿日:2011/06/07)へのリンク

Oracleの Java指向リッチクライアント プラットフォームであるJavaFX 2.0の最初の公開ベータがダウンロードできるようになった。 NetBeans 7用のプラグインも入手できる。

このリリースには以下が含まれている。

  1. JavaFX用Java API、JavaFX 1.0製品系列からの継続である。
  2. 新しいグラフィックス スタック は、グラフィックス エンジン(Prism)を含み、Glassと呼ばれる新しいウィンドウ ツールキットが一緒で、プラットフォーム非依存層の役割をし、JavaFX プラットフォームとネイティブ オペレーティングシステムを繋ぐ。Prismは、 NVIDIA, ATI 、Intel製の様々なカードのハードウェア高速化をサポートしている。これらのカードは使われるプラットフォーム(WindowsのDirectX そしてMac、Linux,組込み用のOpenGL)によって、それぞれ異なったレンダリングパスを使用する。ハードウェア高速化ができない場合は、Prismは古い2D レンダラーを使う。
  3. メディア エンジンは、Gstreamerフレームワークをベースにしたwebマルチメディア コンテンツの再生をサポートしている。メディア エンジンは MP3, AIFF, WAVオーディオファイルの再生とVP6ビデオとMP3オーディオから成るFlash(FLV) ビデオファイルの再生をサポートしている。
  4. webコンポーネントは、WebKitを使ってHTMLをレンダーするが、Prismを使ってハードウェア高速化レンダリングも行う。
  5. アップデートされたブラウザー プラグイン はPrismベースのJavaFX アプレットをロードできる。
  6. 新UIコントロールのセットは、例えばチャート、テーブル、メニュー、ペインは全てCSSを使って見栄えを変えられる。

ベータにはサンプルの一部も入っている。JavaFX の主要なサンプル集である Ensembleもある。

Ensemble

JavaFX 2.0の最初のリリースはWindows版のみである。アーキテクチャ的には、明らかにクロスプラットフォームであるように設計されている。OracleはJavaFXはマルチプラットフォームを意図していることは明言している

我々はもちろん異なったプラットフォーム、ビッグ3だけではない (Mac, Linux, Windows)の全ホストをターゲットにしています。Javaプラットフォームの価値は複数のオペレーティング システムとデバイスに跨って書けることにあります。

FlexとSilverlightの両方がXMLを宣言型言語(それぞれMXMLとXAML)として使っており、JavaFXはその役に、元々新しいDSL、JavaFX Scriptを持っていた。JavaFX Scriptは面白いが、多くの開発者は始めるには障害である、と見ていた。Oracleは昨年、JavaFXには投資を続けるが、JavaFX Scriptは中断する、とアナウンスした。XMLベースの宣言型言語(現在FXMLと呼ばれている)が開発中であるが、ベータには入らない。

JavaFX Script がないので、APIがずっと冗長に感じられる。しかし違いは思ったほど劇的ではない。一つには、 javafx.buildersパッケージが257のビルダー提供しており、全APIをカバーしている。更にJava 8の Lambdaサポートにより劇的な違いが生まれる。Oracleでクライアントソフトウェアのアーキテクトである Richard Bair氏が以前InfoQに次のように語った。

JavaFXはJava SE 8に計画されている"lambda"言語フィーチャに対応できるように設計されています。現行のLambdaに対する計画と提案は「単一抽象メソッド」インターフェースに振る舞いが似ています。我々はJavaFXにある新Java APIがこのパターンに従うように設計しましたので、lambdaが使えるようになったら、それらはJavaFX 2.0 APIと一緒に使うのが自然です。

Javaサポートと同様に、APIは替りのJVM言語にもよく合うように設計されている。その中には JRuby ()、 Scala、 Groovyがある。JavaFX Script ベースのVisageのようなDSLも代替言語である。

JavaFX 2はクライアントサイドJava スタックへの重要なアップデートを意味しており、JavaSEプラットフォームの全クライアント層に対する代替手段を提供する。 Osvaldo Pinali Doederlein氏は以下のように極論している。

JavaSEがもう死んでいる。多くの人がこのことを認識しているのか疑わしい。もしお分かりになっていないのなら、もう一度 Cindy Castillo氏の JavaFX Architectureに関する素晴らしい概説を読むといい。それはコンポーネント、アニメーション、リッチメディアの単なる新ライブラリではない。それは完全に AWT [Abstract Window Toolkit], Java2D, Swing, Java Sound, Applets, ImageIO, Accessibility 端的に言えばJavaSEプラットフォームの全クライアント層を置き換えてしまうものだ。Oracleは、AWTの大量のレガシーとその上に作られた全てを削除してしまった。これが理由で新ブラウザープラグインがずっと良くなったのである。

Sun MicrosystemsでSenior Staff Engineerであり、Java Swing GUI Toolkitの最初の開発メンバーの一人であるAmy Fowler氏は、Javaがクライアント プラットフォームとして生き続けるには、そのような変化が必要である、と言っている。

ユーザーインターフェース技術はグラフィックスとぶつかる運命にある。Javaが長期にわたって、ちゃんとしたクライアント プラットフォームで在り続けるには、iPhone/iPad アプリケーションで見られるようなビジュアルな繊細さの類を本質的に持っていなければならない。私はこれまで何回も言ってきたように、SwingにあるJava2Dトリックを使えば、この内あるものは達成可能である(例えば、Kirillの非常に素晴らしいTridentライブラリ)が、洗練された知的訓練を要する。自然に合うものでもない。問題の本質は、Swingが古臭いAWTが起源であり、2次元座標システムに組込まれていないことである。これを修正するには相当量の非互換な変更が必要で、一旦これをやりだしたら、他にどのような非互換な改善をやらなければいけないのかを自問し始めなければならない。非常に早く、再モデル化が再構築となり、新しい基盤が本当に必要であることを認識することになる。

長い間、FlashでAdobeが制覇していたRIAの世界は、HTML 5と関連技術に向かって動いているようであるが、現世代のスマートフォンとパッドがネイティブ アプリケーションを 広範囲に使っていることが、非webベースアプリケーションの役割がまだあることを物語っている。もちろんOracleは、自分たちのデスクトップアプリにJavaとSwingを非常に使っており、そして JavaFX 2.0への投資が結局は、 開発に必要なSwing 2.0プラットフォームを手に入れることになる。

この記事に星をつける

おすすめ度
スタイル

BT