SwingプロジェクトのJavaFXへの移行を開始しますか[終了]


13

Swing + SwingXで書かれた4年前のプロジェクトがあります。現在、それはまだ生きており、まだ蹴っている。

ただし、GUIに関連する機能要求が増えるにつれて(たとえば、並べ替え可能なツリーテーブル)、要求を満たすのが難しいと感じ始めます。これは特に、SwingXプロジェクトの周りで活発な開発が行われていないため当てはまります。

また、GUI Javaフレームワークを積極的に維持/開発/進化させている良いものはほとんど見つかりません。

Swing開発者の誰もが同じことを感じていますか?Swingプロジェクトを、JavaFXなどのよりアクティブな開発済みGUIフレームワークに移行し始めましたか?



7
あなたがそのスイングを持っていない場合、それは意味を持ちません。
ロバートハーヴェイ

swingはクロスプラットフォームです... javaFX2はそうではありません。

@blancは、Windows、Linux、およびOSXで利用可能です。YanChenhCHEOK、TreeTableは、JavaFX 8(今年後半、おそらく9月にリリースされるJava 8でリリース)で計画されています。
-assylias

回答:


9

私は個人的にJavaFX(2.1+、厄介なスクリプト言語を備えた古い1.xバージョンではありません)に移行しています。新しいJavaFXは100%完璧ではありませんが、すでにSwingよりも使用するのが楽しい光景です。(特に組み込みのWebkitエンジンを考えると)合理的な将来を期待しています。


9

よく同じことを自問しますが、既存のプロジェクトをJavaFXに移行するとは思いません。少なくとも現時点では、中規模から大規模のプロジェクトではありません。ただし、新しいプロジェクトのJavaFXを検討し、将来的に移行を検討し、JavaFXの進捗に基づいて質問を再評価します。

現時点では、私の懸念は次のとおりです。

  • 未熟

    はい、すぐに3.0に移行しますが、それほど長くはありませんでしたが、まだ大きな変更がありました。そのため、大規模でリスクを回避する企業ソフトウェアの場合、これは比較的痛い点です。

  • 性能

    パフォーマンスの違いに関する十分なハードデータを見ていません。

  • ウィジェットとコンポーネント

    新しいコンポーネントには十分なゲインがありません。これは未熟さに関連していると思います。また、Swingとは対照的に、それらをどれだけ拡張して合成できるかはまだわかりません。

全体的に、JavaFXが完全に納得させるには、利点に関するハードデータが欠けていると思います。

一方、Swingは実証済みでテスト済みです。はい、APIは不格好で、JTextPaneなどのSwingオブジェクトでIDEのオートコンプリートを呼び出すと、泣いたり泣いたりしますが、十分な知識があれば、Swingで素晴らしいUIを構築できます。よく機能しています(Swingの悪いパフォーマンスの誤acyを買ったことはありません。SunのブログでRomain Guyの以前のブログ投稿を参照してください)。

そのため、何かを切り替える前に、最初に小さなプロトタイプを試してみることをお勧めします。アプリケーションのダイアログの一部を移植して、どのように動作するかを確認することもできます。


5

私は今JavaFXをたくさんやっていて、Swingよりもそれを好んでいます。シーングラフの構造は、Swingで慣れているものとは異なりますが、大幅に改善されています。このAPIは作業が楽しく、爽快です。

マルチメディア、アニメーション、Webブラウジングでできることがたくさんあります。たとえば、数行のコードでhtml5とjavascriptを埋め込んでGoogle Mapsアプリケーションを構築できます

これは、Java 8ランタイムに含まれていると言われています。これは、デフォルトのUIフレームワークとしてSwingの明確な置き換えとなることを意味します

@Migration:JavaFXに変換できるアプリケーションの部分を分離することから始める必要があります。Swing-JavaFX 2の相互運用性は重要です。javafx.embed.swing.JFXPanelを使用してJavaFX要素を埋め込むことができます。swing-fx-interoperabilityを参照してください。(完全を期すために、SWTに埋め込むこともできます。)


swing-jfxの相互運用性を試さないでください。かなりバグが多いです。私のアプリで試してみましたが、netbeans内で動作しますが、.jarを直接実行しようとすると、奇妙なメモリ/スレッド関連のエラーが発生します。私の意見では新鮮に始めてください。
投票をクリックして12

4

Swingはレガシーテクノロジーになりつつあります。ただし、それは何ができるかという点で非常に優れており、予見可能な将来においてもなくなることはないので、特に既に投資している場合は、そこから離れる理由はないと思います。JIDE Softwareは、標準のSwingに欠けているものを置き換えるために、優れた(商用)Swingコンポーネントを作成します。たとえば、並べ替え可能なツリーテーブルは、そのままグリッドにあります。


3

新しいJavaFXバージョンは非常に印象的ですが、GUIの完全なオーバーホールに多くの時間/労力/お金を費やさない限り、完全な移行を行う価値はありません。

Swingには癖があり、年齢を示していますが、いくつかの利点もあります。

  • 非常に強力なクロスプラットフォーム機能。現在JavaFXよりもはるかに優れています。
  • JavaFXよりもはるかに成熟した実績のある
  • 大きなユーザーコミュニティ/ライブラリエコシステムがあります
  • あなたはおそらくすでに多くのSwingスキルを持っているか、彼らと簡単に人々を雇うことができます

最終的に、破損していない場合、なぜ修正するのですか?

もちろん、新しいプロジェクトでは、JavaFX、Android、および/またはWebベースのGUI(おそらくVaadinのようなもの)を非常に真剣に見ています。


JavaFXクロスプラットフォーム機能に問題はありますか?
[アップ投票]

前回、JavaFXがWindows、Mac、Linuxでサポートされていることを確認しました。それ以外のプラットフォームをターゲットにしている場合は、ステータスを確認する価値があります。幅広いクロスプラットフォーム機能を探している場合、Swingは(2012年半ばの時点で)より安全な賭けです。
mikera

他に興味のあるプラットフォームは何ですか?
クリック12

1

私はOPと同じ立場にいます-レガシースイングアプリケーションを持っていますが、ネイティブではサポートしていない新しいイディオムとインターフェースを実装する必要があります。これらのアプリケーションの最大のものは、さまざまな理由(モジュール性の向上、MVCおよびイベントディスパッチ構造の改善など)のために数回リファクタリングされているため、UIコードの書き換えを完全に嫌うわけではありません。だから私はこの問題について長く一生懸命考えました。

ただし、本質的にレガシーテクノロジーであることに多くの時間と労力を投資しないと、Swingで解決できないものもあります。たとえば、単純なマウスイベント以外の新しいタッチスクリーンデバイスは、Swing自体ではサポートされていません。Swingベースのブラウザコンポーネントを提供するのも同様に面倒または高価であり、私の場合、javafx-in-swingアプローチは、UIイベントの処理を自明でない方法で複雑にするため、オプションではありません。

私はそれがその時代に古くて忠実であったと思います、そしてあなたのプラットフォームがあなたのコードベースと同じくらい変わらないなら、明らかにそれを固守してください。しかし、アプリケーションがより現代的な新しいユースケースに進むためには、おそらくJavaFX 2+が私の場合に前進する方法でしょう。

サイドノートとして:Swingでjfxで消えていたら良かったと思っていたが、そうではなかった1つの機能は、UIイベントのディスパッチに対する1スレッドからルールへのすべてのアプローチです。UIを鮮明で応答性の高いものに保つために、重要なユーザーインターフェイスにはマルチスレッドが必要です。APIIHOの欠点は、同じ落とし穴を簡単に見つけられるようにアプリケーション開発者に任せることです。


0

大規模なデスクトップベースのアプリケーションでRCPを使用した素晴らしい経験があります。それは基本的にEclipseのGUIレイヤーの抽象化として始まり、それ以来長い道のりを歩んできました。RWTは、AWTに基づいたSwingの代わりに、SWTに基づいたJFace上に構築されます。これにより、アプリケーションを開発し、Eclipse自体が使用するGUIの概念(ビュー、エディター、パースペクティブ、ウィザードなど)を使用できます。非常にスケーラブルであり、Eclipse自体と同様に、絶えず改善されています。

ただし、既存のプロジェクトをSwingからRCPに移行したことはありません。さまざまなパラダイムに頭を包むにはかなり時間がかかると思います。モデルとビューレイヤーをうまく分離していないと、苦労することになります。しかし、ソート可能なツリーテーブルなどについて尋ねたので、RCPはその点で優れています。

これをさらに研究したい場合は、Lars Vogelのチュートリアルを試してみるか、RCPを使用するオープンソースプロジェクトまたは商用プロジェクトの例をご覧ください。


-2

(たとえば、ソート可能なツリーテーブル)、要求を満たすのが難しいと感じ始めます。これは特に、SwingXプロジェクトを中心とした活発な開発は行われていません。

  • 真実ではない、再びこのプロジェクトは生きている、

  • かつてSwingXがSunによる助成金を失ったとき(オラクルによる買収中)、SwingXの人々はJavaFXを構築するために行った

また、GUI Javaフレームワークを積極的に維持/開発/進化させながら、良いものを見つけることはほとんどできません。

  • Swingはフレームワークではなく、ルックアンドフィールに関するものです

  • フレームワークは非技術系ユーザー向けです(MsAccessはGUIフレームワークの最良の例かもしれません)

  • しかし、実際のアプリケーションを構築する場合は、Swingについての強力な知識があり、Frameworkからもオーバーライドされます。

  • 面白い例NetbeansにはJSR296に基づいたbuilt_in Swingフレームワークがありますが、JFramesアイコンを直接変更することはできません。

Swingプロジェクトを、JavaFXなどのよりアクティブな開発済みGUIフレームワークに移行し始めましたか?

理由はない

  • Java7への移行と同じ、おそらくJava7.15から17

  • 私はJavaFxとNimbusを比較していますが、開発は前半のどこかで終わりました。

  • 申し訳ありませんが、私はJavaとSwingファンだけです。


MsAccessはGUIフレームワークですか?
Cheokヤンチェン

じゃない?いただきました問題、プラットフォームの違い、またはEI ??? 最初のJava GUIフレームワークは非常に似ていた
mKorbel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.