オラクルの推奨事項
オラクルのアドバイスを参照してください。
- FXML を使用する理由
- JavaFX ベスト プラクティスの実装
Oracle では、Java API よりもレイアウト定義に FXML をお勧めしています。
JavaFX の代替宣言テクノロジ
JavaFX のその他の宣言部分は、CSSと3D モデルです。
半宣言型のメソッドはJavaFX ビルダー APIですが、ビルダー API は将来の JavaFX バージョンで非推奨になるため、これは避けたほうがよいでしょう。
さらに、他の言語でプログラミングする場合、JavaFX 開発用の宣言型ドメイン固有言語 (DSL) が組み込まれているものもあります (例: ScalaFXやGroovyFX )。
一般に、UI マークアップ タスクの大部分では、宣言型構文の使用が主に手続き型プログラミングに勝っています。これは、HTML、CSS、FXML、XAML、MXML、XUL などのテクノロジーの卓越性によって見られます。
低レベルのプログラミング
カスタム JavaFX コントロールの開発、JavaFX キャンバスの操作、画像データの処理などの低レベルのタスクには、宣言型 FXML を使用するよりも手続き型 Java API が最適です。openjfx のJavaFX コードベースはどれも FXMLを使用しません。
個人的な選択とアドバイス
結局、ここに正解はありません。選択は開発者に任されており、開発者が最も好むアプローチを選択できます。
また、2 つのスタイルを自由に組み合わせることができない理由もありません。単純な宣言型アプローチを使用すると、手続き型アプローチと宣言型アプローチの両方を組み合わせたもの (例: html + javascript + ajax) と比較して、非常に厳格な UI (静的 html ページなど) になります。JavaFX の場合も同様です。この場合のhtml開発用。
小さなプログラムの場合、IDE でコードを書き、それをコンパイルして実行するだけで、XML ベースの FXML と Java コードの間のコンテキスト スイッチを処理する必要がありません。しかし、この手続き型のみのアプローチは、大規模なプロジェクトにうまく拡張できないことがわかりました。ビューを FXML に分離することで、関心の分離とモジュール化を強化できます。FXML が要求する人為的な分離なしに、これらのビューとロジックの問題を混在させることは非常に簡単です。
UI レイアウト言語としての XML はあまり好きではありません。廃止された JavaFX 1.x ブランチの現在は機能していない FXD 形式の方がはるかに優れていたと思います。ただし、FXML は JavaFX 2 で最もアクセスしやすく、広く使用されている宣言型 UI 構文です。
私は JavaFX プログラムで CSS をよく使用し、FXML 宣言型コードと Java API 手続き型コードの両方で CSS を使用するのが好きです。私の意見では、スタイルをコードから分離することは、レイアウトをコードから分離することと少なくとも同じくらい重要です。
CSS を使用する場合は、スタイルをコードにインライン化するのではなく、スタイルを別のスタイル シートに配置することをお勧めします。
別の回答で指摘されているように、JavaFX SceneBuilder ビジュアル デザイン ツールは現在、FXML でのみ動作し、他のことはさておき、多くの人が FXML を使用して JavaFX UI を定義するのに十分な理由です。