JavaFX 14が一般公開された。単一のコードベースをコンピュータ、組み込みデバイス、iOS、Androidに拡張可能な、クロスプラットフォームGUIフレームワークの最新版だ。
今回のリリースは、ディスクトップにおけるJavaの"死"が喧伝されてからの、活気にあふれた死後の世界における新たなマイルストンとなる。ソフトウェアエンジニアのGerrit Grunwald氏はこの進化について、かつて講演"Not dead yet — Java on the desktop"で取り上げている。公開が延期されたジェームス・ボンドの映画"No Time to Die"とは違い、Javaには、その広範な採用と成長ゆえに"死んでいる暇などない(no time to die)"のだ。Oracle Javaの外部フレームワークとしてJavaFXがアンバンドリングされた以降は、Microsoft、Gluon、Pivotalなどのメンバシップの下で、素晴らしいコミュニティによるメンテナンス作業が継続されている。JavaFX 14には、WebViewコンポーネントでのHTTP/2サポートを含む、注目すべき機能強化が含まれている。WebViewは、JavaFXアプリケーション内でブラウザを直接コントロール可能な、組込みWebブラウザコンポーネントである。これを使用することで、例えばローカルJavaコードと、外部にホストされたWebアプリケーションをミックスすることが可能になる。
開発者がJavaFXフレームワークを選択する理由のひとつに、Windows、Mac、Linuxに加えて、AndroidやiOSを実行するモバイルフォンやタブレットで動作する単一のアプリケーションを記述できるという点がある。このクロスプラットフォーム機能は、JavaFXフレームワークとGraalVMのインテグレーションによって実現されている。コンパイルを実行すると、単一のアプリケーションから複数のアウトプットが生成される。従来のJava JARファイルやクラスパスとは違ってGraalVMは、Windows用、iOS用というように、プラットフォーム毎にひとつのバイナリ出力を生成する。iOS用にネイティブコンパイルされた場合、生成されたJavaFXアプリケーションは、bitcodeなど現行のiOS機能をサポートする。Android用の機能についても同様である。クロスプラットフォームの開発者に必要なのは、JavaとJavaFXフレームワークを理解することだけである。後はGraalVMがコンパイル時に処理してくれる。
OpenJFXコミュニティは、アプリケーション開発用にさまざまなライブラリやツールを提供して、開発者がアプリケーションを差別化するためのビジネスロジックに集中できるようにする。主要なライブラリの一覧はJavaFX経由で入手可能である。TwitterのBootstrapなど、UIフレームワーク用の既存のライブラリもその中に含まれている。これが可能なのは、JavaFXがCSSをネイティブサポートしているためだ。Java開発者にとってこのライブラリは、アイテムが完全なローカルWebブラウザではなくネイティブである点を除けば、最終的にはElectronがNode開発者に提供するものと同じような結果を提供してくれる。
JavaFXアプリケーションの開発者には、JavaコードとFXMLという2つの選択肢がある。FXMLはXMLベースのレイアウトで、SceneBuilderなどのツールを使うことで、デザイナがコードとは分離した形でエレメントを操作することができる。GluonがオープンソースのSceneBuilderのダウンロード可能なビルドを公式に提供しており、スタンドアロンまたはApache NetBeansなどのIDEに統合して使用することが可能である。
JavaFXアプリケーションには実行時診断機能もある。Javaアプリケーションであるため、OpenJDK Flight Recorderなどの一般的なパフォーマンス監視ツールを統合することも可能だが、UI診断用のツールも存在する。そのひとつであるScenic Viewは、ブラウザベースのDOMインスペクションツールと同じように、実行中のJavaFXアプリケーションを対象としてUIレイアウト構造をナビゲートする機能を提供する。
単一のデバイスをターゲットとした、あるいはクロスプラットフォームなグラフィックJavaアプリケーションの開発を検討中のチームは、JavaFXをライブラリとしてダウンロードして、AdoptLOpenJDKなど任意のJavaディストリビューションで使用することが可能である。