JavaFX は、Java プラットフォーム上のリッチ・クライアント・プラットフォームである。 同じ JavaFX という名前ではあるが、バージョン 1.x 系と 2.0 以降では開発方法などが大きく異なっており、JavaFX 1 系と JavaFX 2.0 以降は別物であると考えた方が良い。
バージョン 2.0 以降の JavaFX は、ネイティブの Java ライブラリとして実装されているため、JavaFX を使用するアプリケーションはネイティブの Java コードで記述される。 JavaFX 1 系で用いられていた JavaFX Script は廃止された。
JavaFX 2.2 では、Windows、Mac OS、Linux プラットフォームがサポートされている。
UI 構造を記述するために、FXML という XML ベースの言語を使用できる。 FXML を使用せずに Java コードで UI を構築することも可能である。 また、見た目の変更を行うために CSS を使用できる。
JavaFX 2.x 系の次のバージョンは Java SE のバージョン番号に合わせ、JavaFX 8 となる。
Oracle の Java SE 7u6(Java 7 Update 6) から、JavaFX SDK が含まれるようになっている。 同様に Oracle の JRE 7u6 から JavaFX Runtime が含まれるようになっている。 JDK や JRE をインストールすることで JavaFX の機能も使用できる。
JavaFX 2 より前、Java SE 環境での GUI アプリケーションの記述には、Swing が用いられることが多かった。 JavaFX 2 は Swing を置き換えるものであると Oracle の JavaFX の FAQ では述べられている。
Swing と JavaFX を組み合わせて使うことも可能となっている。 例えば、Swing アプリケーションの GUI の中に JavaFX の部品を組み込むことが可能である (参考: JavaFX for Swing Developers: Integrating JavaFX into Swing Applications | JavaFX 2 Tutorials and Documentation)。 JavaFX 8 で導入される SwingNode
クラス を使用することで、JavaFX アプリケーションの GUI の中に Swing の部品を組み込むことも可能である (参考: Embedding Swing Content in JavaFX Applications | JavaFX 8 Tutorials and Documentation)。
2007 年、サンフランシスコで開催された JavaOne カンファレンスにおいて、Sun Microsystems が発表した Java 上で動作する RIA (リッチ・インターネット・アプリケーション) プラットフォーム。 その構想を端的に言うなら、「一度書けばどこでも、どのデバイスでも動く、RIA 開発環境と実行環境」 と言える。
JavaFX アプリケーションの開発には、JavaFX Script と呼ばれる専用のスクリプト言語が使用された。 JavaFX Script は、静的な型付けと宣言的な記述、UI プログラミングを楽にするための様々な機能などを提供する言語。 宣言的なシンタックスを持つため、UI コンポーネントの構造に近い記述を行うことができる。 JavaFX Script は Java バイトコードにコンパイルされるため、Java 言語を使って開発を行うこともできた。
2009 年 9 月においては、デスクトップで動作するバージョンと Windows Mobile 上で動作する JavaFX Mobile Beta がリリースされている。