JavaFXは、デスクトップアプリケーションや、多様なデバイスで動作するリッチなWebアプリケーションを作成・配信するためのソフトウェアプラットフォームです。JavaFXは、Microsoft Windows、Linux(Raspberry Piを含む)、macOS上のデスクトップコンピュータとWebブラウザに加え、 Gluon Mobileを介してiOSおよびAndroidを搭載したモバイルデバイスにも対応しています。
2018年にJDK 11がリリースされた際、OracleはJavaFXをOpenJFXプロジェクトの下でOpenJDKの一部とし、開発のペースを加速させた。[ 4 ] [ 5 ]
オープンソースのJavaFXPortsはAndroidとiOS(iPhoneとiPad)に対応しています。[ 6 ]関連する商用ソフトウェア「Gluon」は、同じモバイルプラットフォームに加えてデスクトップもサポートし、さらに追加機能も備えています。[ 7 ]これにより、単一のソースコードベースでデスクトップ、Android、iOSデバイス向けのアプリケーションを作成できます。
JavaFX 1.1 は、JavaFX がサポートするすべてのデバイスにまたがることを目的とした「共通プロファイル」の概念に基づいています。このアプローチにより、開発者はデスクトップとモバイルデバイスの両方を対象としたアプリケーションを構築する際に共通のプログラミング モデルを使用し、デスクトップ版とモバイル版の間でコード、グラフィック アセット、コンテンツの多くを共有できます。特定のデバイス クラスでアプリケーションをチューニングする必要性に対応するため、JavaFX 1.1 プラットフォームには、デスクトップまたはモバイル固有のAPI が含まれています。たとえば、JavaFX Desktop プロファイルにはSwingと高度な視覚効果が含まれています。JavaFX はすべてのシンボルを名前空間に配置しますjavafx。
エンドユーザーにとって、「ドラッグ・トゥ・インストール」機能を使えば、Webサイトに存在するJavaFXウィジェット(アプリケーション)をドラッグしてデスクトップにドロップするだけで済みます。ブラウザを閉じても、アプリケーションの状態やコンテキストは失われません。また、ユーザーのデスクトップに自動的に作成されるショートカットをクリックすることで、アプリケーションを再起動することもできます。この動作は、Java 6u10アップデート以降、Javaアプレットメカニズムによって標準で有効になっており、JavaFXは基盤となるJavaレイヤーからこの機能を活用しています。Sunは、「ドラッグ・トゥ・インストール」によって新たな配布モデルが開拓され、開発者が「ブラウザから脱却できる」と謳っています。
JavaFX 1.x には、高度なグラフィックを JavaFX アプリケーションに直接統合できる Adobe Photoshop および Illustrator 用のプラグイン セットが含まれていました。これらのプラグインは、グラフィックのレイヤーと構造を保持する JavaFX Script コードを生成します。開発者は、インポートした静止グラフィックにアニメーションやエフェクトを追加できます。また、グラフィックをインポートして JavaFX 形式に変換した後にアセットをプレビューできる SVG グラフィック変換ツール (Media Factory とも呼ばれる) もあります。[ 8 ]
JavaFX 2.0 より前のバージョンでは、開発者はJavaFX Scriptと呼ばれる静的型付けの宣言型言語を使用してJavaFX アプリケーションを構築していました。JavaFX Script はJava バイトコードにコンパイルされるため、プログラマーは代わりにJavaコードを使用することもできます。2.0 より前の JavaFX アプリケーションは、現在のバージョンと同様に、Java SEを実行できるデスクトップであればどれでも実行できました。 [ 9 ]
JavaFX 2.0以降はJavaライブラリとして実装されており、JavaFXを使用するアプリケーションは通常のJavaコードで記述されます。スクリプト言語はOracleによって廃止されましたが、その開発はVisageプロジェクトで数年間続けられ、最終的に2013年に終了しました。[ 10 ] [ 11 ]
サン・マイクロシステムズは、JavaFX搭載デバイスで使用するためのカスタムフォント「Amble」のライセンスを取得した。このフォントファミリーは、モバイルユーザーインターフェースデザインの専門企業であるPunchcut社によって設計され、JavaFX SDK 1.3リリースの一部として提供されている。
組み込みWebブラウザコンポーネントであるWebViewは、 WebKitブラウザエンジンを使用しています。canvas、media、meter、progress、details、summaryタグといった一般的なHTML5機能に加え、MathML、SVG、JavaScript、CSSもサポートしています。WebAssemblyはサポートされていません。
JavaFX 8以降、JavaFXには動的なライト、基本的な形状、メッシュ、テクスチャマッピングなどの3D機能が搭載されています。これらのコンポーネントはシーンやサブシーンに統合できます。
JavaFX Mobile は、モバイル デバイス向けのリッチ Web アプリケーション向けに JavaFX プラットフォームを実装したものです。JavaFX Mobile 1.x アプリケーションは、ブラウザやデスクトップ向けの JavaFX 1.x アプリケーションと同じ言語であるJavaFX Scriptで開発でき、JavaFX SDK や JavaFX Production Suite といった同じツールを使用できます。このコンセプトにより、デスクトップ アプリケーションとモバイル アプリケーションでコード ベースやグラフィック アセットを共有することが可能になります。Java MEとの統合により、JavaFX アプリケーションは、ファイルシステム、カメラ、GPS、Bluetooth、加速度計など、基盤となる端末の機能にアクセスできます。
JavaFX Mobileは、Javaをベースに構築された独立したアプリケーションプラットフォームであり、 Android、Windows Mobile、および独自のリアルタイムオペレーティングシステムを含む、複数のモバイルオペレーティングシステム上で動作可能です。
JavaFX Mobileは、サン・マイクロシステムズが2009年2月12日に発表したJavaFX 1.1リリースの一部として一般公開されました。
サン・マイクロシステムズは、携帯端末メーカーや携帯電話事業者と協力して、端末にJavaFX Mobileランタイムをプリロードすることで、端末上でJavaFXをすぐに利用できるようにすることを計画していた。Android上で動作するJavaFX Mobileは、JavaOne 2008でデモが行われ、 2009年2月のJavaFX Mobile発表会では、 LGエレクトロニクスやソニー・エリクソンなどの提携企業が発表された。
JavaFXアプリケーションを起動するには、メインクラスがを拡張しjavafx.application.Application、main()を呼び出します。Application::launch内部的にはが呼び出されApplication::start、これはメインクラスによってオーバーライドされ、アプリケーション自体のエントリポイントとして機能します。
パッケージorg.wikipedia.examples ;import javafx.application.Application ; import javafx.scene.Scene ; import javafx.scene.control.Button ; import javafx.scene.layout.StackPane ; import javafx.stage.Stage ;public class JavaFXExample extends Application { @Override public void start ( Stage primaryStage ) { Button button = new Button ( "Click Me!" ); button . setOnAction ( e -> System . out . println ( "Hello from JavaFX!" ));StackPane root = new StackPane ( button ); Scene scene = new Scene ( root , 300 , 200 );primaryStage.setTitle ( " JavaFXの例" ); primaryStage.setScene ( scene ) ; primaryStage.show ( ) ; }public static void main ( String [] args ) { launch ( args ); } }JavaFXプラットフォームには、以下のコンポーネントが含まれています。
JavaFXは現在、 Java 8 (2014年3月18日リリース)のJRE/JDKの一部となっており、JavaFX 8という同じ番号が付けられています。[ 13 ]
JavaFX 8 では、以下のような新機能が追加されています。[ 14 ]

JavaFX 9の機能は、JavaFXコードから有用なプライベートAPIを抽出し、これらのAPIを公開することに重点が置かれていました。
Oracleは、 JDK 11以降のビルドにJavaFXをバンドルするのをやめる意向を発表しました。 [ 19 ]最新バージョンにはバンドルされなくなりました。
JavaFX 11は2018年9月に初めて出荷されました。
JavaFX 12は2019年3月に初めて出荷されました。
JavaFX 13は2019年9月にリリースされました。
JavaFX 14は2020年3月にリリースされました。
JavaFX 15は2020年9月にリリースされました。
JavaFX 16は2021年3月にリリースされました。
JavaFX 17は2021年9月にリリースされました。主な特長は以下のとおりです。
JavaFX 18は2022年3月にリリースされました。主な特長は以下のとおりです。
JavaFX 19は2022年9月にリリースされました。主な特長は以下のとおりです。
JavaFX 20は2023年3月にリリースされました。主な特長:
JavaFX Script は JavaFX のスクリプト コンポーネントであり、Chris Oliver による F3 というプロジェクトとして始まりました。[ 27 ]
サン・マイクロシステムズは、 2007年5月に開催されたJavaOne世界Java開発者会議で、JavaFXを初めて発表した。
2008年5月、サン・マイクロシステムズは、ブラウザおよびデスクトップ向けJavaFXを2008年第3四半期までに、モバイルデバイス向けJavaFXを2009年第2四半期までに提供する計画を発表しました。また、サンはOn2 Technologiesと複数年契約を結び、同社のTrueMotion Videoコーデックを使用してJavaFX製品ファミリーに包括的なビデオ機能を追加することも発表しました。2008年7月末以降、開発者はWindowsおよびMacintosh向けJavaFX SDKのプレビュー版と、NetBeans 6.1向けJavaFXプラグインをダウンロードできるようになりました。
JavaFX 1.1 以降のメジャーリリースには、サンフランシスコの通りや地区に基づいたリリース名が付けられています。アップデートリリースには通常、リリース名がありません。[ 28 ]
2008年12月4日、サン・マイクロシステムズはJavaFX 1.0.2をリリースした。
モバイル開発向けのJavaFXは、2009年2月12日に正式に発表されたJavaFX 1.1リリース(Franca [ 28 ]と命名)の一部としてついに利用可能になった。
JavaFX 1.2(Marina [ 28 ]と命名)は、 2009年6月2日にJavaOneでリリースされました。このリリースでは、以下の機能が導入されました。[ 29 ]
JavaFX 1.3(Soma [ 28 ]と命名)は2010年4月22日にリリースされました。このリリースでは以下の機能が導入されました。[ 30 ]
JavaFX 1.3.1は2010年8月21日にリリースされました。このリリースでは以下の機能が導入されました。
JavaFX 2.0(Presidio [ 28 ]という名称)は2011年10月10日にリリースされました。このリリースでは以下の機能が導入されました。
JavaFXライブラリでは、マルチスレッド処理に関して様々な改善が加えられました。タスクAPIが更新され、より簡潔なスレッド処理機能がサポートされるようになりました(つまり、すべてのAPIがJavaで記述されているため、JavaTaskBaseクラスは不要になり、コールバックインターフェースとJava実装クラスを用意する必要もなくなりました)。さらに、シーングラフは、バックグラウンドスレッド上でシーンを構築し、スレッドセーフな方法で「ライブ」シーンにアタッチできるように設計されています。
2011 年 5 月 26 日、Oracle は JavaFX 2.0 ベータ版をリリースしました。ベータ版は、Microsoft Windows XP、Windows Vista、Windows 7 の 32 ビット版と 64 ビット版のみで利用可能でした。当時、JavaFX パートナー プログラムのメンバー向けにMac OS X用の早期アクセス版も提供されていましたが、Linux のサポートは JavaFX の将来のリリースで予定されていました。JavaFX 2.0 は Windows のみのサポートでリリースされました。Mac OS X のサポートは JavaFX 2.1 で追加され、Linux のサポートは JavaFX 2.2 で追加されました。
JavaFX 2.0 では、 FXMLと呼ばれる新しい宣言型 XML 言語が使用されています。[ 31 ] [ 32 ]
2012年4月27日、OracleはJavaFXのバージョン2.1をリリースしました[ 33 ]。このバージョンには、以下の主な機能が含まれています[ 34 ]。
2012年8月14日、OracleはJavaFXのバージョン2.2をリリースしました[ 35 ]。このバージョンには、以下の主な機能が含まれています[ 36 ]。
JavaFX 2.2では、ネイティブパッケージングと呼ばれる新しいパッケージングオプションが追加され、アプリケーションを「ネイティブバンドル」としてパッケージ化できるようになりました。これにより、ユーザーはシステムJREやFX SDKなどの外部依存関係なしにアプリケーションをインストールおよび実行できます。
Oracle Java SE 7 Update 6およびJavaFX 2.2以降、JavaFXはOracle Java SEプラットフォームにバンドルされてインストールされるようになりました。[ 13 ]
オラクルは2012年11月に、 OpenGLとDirect3D用のシェーダーを生成できるJavaFX用のDSLシェーダー言語であるDecoraのオープンソース化も発表した。[ 37 ]
Oracleはクライアントサポートロードマップで、JavaFXの新しい修正は2025年3月までJava SE 8で引き続きサポートされると述べている。 [ 38 ]以前、Oracleは「JavaFXを個別に配布可能なオープンソースモジュールとして構築および保守しやすくするために、関心のあるサードパーティと協力している」と発表していた。JavaFXは今後もJDKに加えてダウンロード可能なモジュールとしてGluon社によってサポートされ続ける。[ 39 ]
2014 年 3 月現在、JavaFX はMicrosoft Windows、OS X、およびLinuxに展開されています。[ 40 ] Oracle はiOSおよびAndroid用の JavaFX の内部ポートを持っています。[ 41 ] [ 42 ] ARM のサポートは JavaFX 8 から利用可能です。[ 43 ] 2013 年 2 月 11 日、Oracle のクライアント Java プラットフォームのチーフ アーキテクトである Richard Bair 氏は、Oracle が今後 2 か月以内に JavaFX プラットフォームの iOS および Android 実装をオープンソース化すると発表しました。[ 44 ] [ 45 ]
JDK for ARM のバージョン 8u33 以降、JavaFX Embedded のサポートは削除されました。[ 46 ]
x86ベースのアーキテクチャのサポートは継続されます。[ 47 ]
AndroidおよびiOS向けのJavaFXの商用版が「Gluon」という名前で作成されました。[ 7 ]
JavaFXランタイムを構成していた以前のモジュールには、さまざまなライセンスが存在します。
開発中、SunはJavaFXの最初のリリースでJavaFXライセンスモデルに関する戦略を展開すると説明した。[ 51 ] 2008年のリリース後、Sunのクライアントソフトウェア担当副社長であるJeet Kaulは、JavaFXとその関連ファイル形式の仕様を間もなく公開し、JavaFXランタイムをオープンソース化し続け、このコアを外部の当事者によってライセンスされている独自の部分から切り離すと説明した。[ 52 ]
JavaOne 2011で、Oracle CorporationはJavaFX 2.0がオープンソースになることを発表しました。[ 31 ] 2011年12月以降、OracleはGPL +リンク例外の下でJavaFXコードをオープンソース化し始めました。[ 3 ] [ 53 ]
2012年12月、JavaFXソースコードの新たな部分がOracleによってオープンソース化された。[ 54 ]
{{cite web}}: CS1 maint: bot: 元の URL の状態が不明です (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)