2013-04-23 15 views
8

私はWebベースのプログラミング(php、jsf、...)の背景とswingとswtの最小限の背景を持っています。Java FX:宣言的なものと手続き的なもの

現在、私は新しいデスクトップアプリケーション用のjava fx 2.xを探しています。実際のGUIの構築に関するベストプラクティスについては疑問に思っています。私はfxmlを使って宣言的なルートに行くことができました。または手続き的なルートに進むことができました。現在、私は後者をやっていますが、fxmlを使う魅力的な理由があるのか​​どうか疑問に思っていました。

UPDATE

は最後に、私は平均的なサイズのプロジェクトのためのFXMLルートを行って、シーンBuilderベータ版は、私のLinuxシステム上でまだ多少不安定であっても、それはに非常に優れていることが証明されています元の手続き型プロトタイプ。これまでの最大の利点は、多くの要素(特にhbox、vbox、ラベル、タブなど)がfxmlにのみ存在するため、コードが乱雑にならないことです。

答えて

12

のOracle推奨

は、Oracleのアドバイスを参照してください。 JavaFXのため

代替宣言テクノロジーズ

JavaFXの中の他の宣言型のピースがCSS3D models

ある半宣言型の方法がJavaFX Builder APIですが、the builder api will be deprecated in future JavaFX versionsとしてそれを避けたいと思うかもしれません。

さらに、他の言語でプログラミングする場合、JavaFX開発用の宣言型ドメイン固有言語(DSL)(たとえば、ScalaFXまたはGroovyFX)が組み込まれているものがあります。

一般に、宣言的構文の使用は、主にUIマークアップタスクの大部分の手続き型プログラミングよりも勝っています。これは、そのようなカスタムJavaFXのコントロールを開発するような低レベルのタスクについて

プログラミングなどHTML、CSS、FXML、XAML、MXML、XUL、などの技術のプロミネンス

低レベルで見られますJavaFXキャンバスを操作したり画像データを処理したりする場合、宣言的なFXMLではなく手続き的なJava APIが最適です。JavaFX codebase in openjfxのどれもFXMLを使用しません。最後に

個人の選択とアドバイス

、ここには正しい答えはありません。選択肢は、彼らが一番気に入ったアプローチを選択するために開発者に任されています。

2つのスタイルを適切に組み合わせることはできません。直接的な宣言的アプローチを使用すると、手続き型宣言的アプローチ(例えば、html + javascript + ajax)を混在させるものと比較して、非常に堅固なUI(静的なHTMLページなど)が残されます。この場合のHTML開発のために。

小さなプログラムでは、IDEにコードを書くだけで、XMLベースのFXMLとJavaコード間のコンテキスト切り替えに対処することなくコンパイルして実行できます。しかし、私はこの手続きのみのアプローチが大規模なプロジェクトにうまく適合しないことを発見しました。ビューをFXMLに分けておくことで、懸念とモジュール化を分離することができます。 FXMLが要求する人工的な分離なしに、これらのビューとロジックの問題を混在させるのは非常に簡単です。

私はUIレイアウト言語としてXMLを本当に好きではありません。私は、現在廃止されているJavaFX 1.xブランチのFXDフォーマットがはるかに優れていると思います。しかし、FXMLはJavaFX 2のための最もアクセス可能で広く使われている宣言的なUI構文です。

私はCSSをJavaFXプログラムで使いますが、FXML宣言コードとJava API手続きコードの両方で使用します。私の意見では、コードからレイアウトを分離することと同じように、コードとスタイルを分離することは少なくとも重要です。

CSSを使用する場合は、コード内のスタイルをインライン化するのではなく、常に別のスタイルシートにスタイルを配置することをお勧めします。

他の答えで指摘されているように、JavaFX SceneBuilderビジュアルデザインツールは現在のところ、FXMLだけで動作し、他のものはすべてそろっているので、FXFMLを使用してJavaFX UIを定義するのに十分な理由です。

2

私がfxmlを使用する理由は、それがシーンビルダによって生成されるということです。私は手作業でレイアウトを手伝ってはいけません。

2

アプリケーションコードからレイアウト(FXML)を分離している場合、いくつかのUXの人にSceneBuilderはIDE全体を必要とするのではなく、

  1. Why use FXML
  2. Implementing JavaFX Best Practices

オラクルのJava APIを介してレイアウト定義のためのFXMLをお勧めします:

1

しかし、SceneBuilderはまだ十分に機能していません。私たちはFXMLに戻って詳細を知る必要があります。それは良くありません。

そして、詳細なFXMLファイルを持つSceneBuilderのバグはほとんどありません。

OracleはシーンファインダをJavaFXの健康状態に更新する必要があります。非常に良いツールを探しているので!

関連する問題