JavaFX Mobileのアーキテクチャ
JavaFXアプリケーションは、Java仮想マシン(JVM:Java Virtual Machine)上で動作するJavaFXランタイムを利用します。モバイルアプリケーションの場合、JavaFXはJava ME JVM上で動作します(図5と図6を参照)。
現在のJavaFX APIは、共通(common)とデスクトップ(desktop)という2つのAPI要素のカテゴリに分かれています。これらのカテゴリはプロファイル(profile)と呼ばれ、そこに含まれる要素はそのプロファイルに特有の、さまざまなUIのニーズおよびプラットフォームの機能をサポートしています。共通プロファイルには、デスクトップとモバイルデバイスの双方でサポートされるクラスが用意されています。つまり、Java MEとJava SEの別を問わず、JVM上で動作するすべてのプラットフォームで使える最小公約数的なUIが揃っているわけです。これに対し、デスクトッププロファイルは、より大規模で多機能なプラットフォーム向けのさらに高度な機能を提供します。
すべてのフォームファクタに移植可能なアプリケーションを作成するなら、開発者は共通プロファイルを使う必要があります。一方、デスクトッププラットフォームまたは一般的なデスクトップ用ブラウザへの導入を考えている開発者は、デスクトッププロファイルに用意されているAPIを使ってアプリケーションの機能を強化することができます。
デバイスによるサポートとアプリケーションのプロビジョニング
では、どんなデバイスがJavaFX Mobileをサポートしているのでしょうか。また、そうしたデバイスにアプリケーションを導入するにはどうすればよいでしょうか。今のところ、JavaFXを搭載した製品は市場に出ていません。しかし、SunはJavaFX Mobileのリリースにあたって、近いうちにJavaFX対応製品の提供を約束しているデバイスメーカが何社かある(LG、Sprint、Sony Ericcsonなど)と発表していました。
現時点では具体的なJavaFXデバイスの情報はありませんが、Sunは、JavaFXがすべてのモバイルデバイスを対象としたものではないことを明らかにしています。Java MEのMIDP/CLDCをサポートしているデバイスがJavaFXをサポートしているとは限りません。JavaFXが対象としているのは、Mobile Service Architecture(MSA)プラットフォームの仕様(JSR 248)に準拠したデバイスです。つまり、JavaFXデバイスはMIDP/CLDCだけでなく、スマートフォン特有のAPIもサポートする必要があるのです。例えば、個人情報管理(PIM:Personal Information Management)、ワイヤレスメッセージング、3Dグラフィックス、モバイルメディアなどです。
JavaFXアプリケーションをデバイスに導入するには、主として次の2つの方法があります。どちらもJava ME開発者にとってはおなじみのものです。
- デバイスに埋め込む
- 「無線で」デバイスに送信する
JavaFXはMSAに対応したモバイルデバイスのJava ME上で実行されるので、既存のJava MEインフラストラクチャと導入の仕組みがそのまま利用できるはずです。