Java一部のデスクトップアプリケーションにはSwingを使用していますが、他のGUIフレームワークをあまり使用していないため、比較することはできません。
Swingで好きなことと嫌いなことは確かにありますが、それはほとんどすべての状況です。
Java Swing GUIフレームワークの最大の欠点は何ですか?
Javaがどこかにインストールされている必要があります。これはもちろんすべてのGUIフレームワークに当てはまりますが、Javaは2トンのゴリラの知覚を持っています。ロードされますより良いですが、これらの初期Java=アプレットの日は多くの人をオフにしました。1つのアプリを実行するためだけに必要な場合、セキュリティパッチを適用して最新の状態に保つことは多くのメンテナンスです。誰もがYouTubeのFlashを持っている必要があり、.Netフレームワークは舞台裏でインストールされ、誰もがブラウザでJavaScriptを有効にしています。Javaは通常、追加の作業です。
すべてが一回限りの書き込みでどこでも実行できますが、Mac OSXには使いたい新しい機能が備わっていないか、1つのクライアントがMandrake linuxをJRE 1.4以降にアップグレードすることを拒否しています。
開発者は、スレッド化について考える必要があります。そして、マルチスレッド化は可能ですが、swingはすべてシングルスレッドのように振る舞うので、注意が必要です。ただし、プルしたライブラリの半分にはある程度のマルチスレッドがあり、EDT invokeLaterについて知っていると想定すると、多くのレッスンが困難になります。
Swingのエクスペリエンスは、他の種類のUI開発に簡単には移行しません。たとえば、.cssのテーブルを熟知している場合は、Jtables、レンダラー、エディターなどによって完全に道に迷うことになります。
一般的に、Swingの主な問題は、Swingが市場に出された方法に対応していないことです。これは多くのユースケースに完全に適したテクノロジーですが、最初の5〜6年はひどい実装とひどいアプレットでいっぱいでした。そして今、それは古い技術です-Web 3.0などに。
とはいえ、私はSwingが好きで、プロが一般に短所よりも優れていると思います。しかし、Webエクスペリエンスは広く普及しているため、多くのユーザーは、最も合理化された驚くべきSwingアプリよりもWebアプリを使いやすくなっています。そして素晴らしいSwingアプリが世の中にありますが、それらは主流ではないようです。
ジョナス、
Swingは、基盤となるアーキテクチャを一般化して、プラットフォームに依存しないユーザーエクスペリエンスを提供します。 (OSが提供する)唯一のヘビーウェイトコンポーネントはJFrameコンテナーで、残りはほとんどSwing Takeitによって処理されます。一方、AWTは、OSにすべてのUIコンポーネントを描画するように要求します。つまり、OS固有のネイティブUIコンポーネントを使用するよりも、多くの点で高速です。 SWTは、ボタンやラベル(ほとんどのOSで利用可能)などのさまざまな標準コンポーネントの中間点を実現しようとします。これにより、OSがそれらを処理できるようになり、他の特殊なコンポーネントの場合、SWTが作成を処理します。
そうは言っても、私は欠点を概説できます。
(1)ツールキットは、OSに要求するのではなく、コンポーネントを作成してレンダリングするため、OSが提供する組み込みコンポーネントの速度を利用できません。
(2)UIは、使用するルックアンドフィールに関係なく、ほとんどのOSプラットフォームでは異質に見えるため、特に煩雑ではありません。
(3)レイアウトマネージャーの一部、つまりGridBadLayoutなどは、より単純化できます。 GridBagLayoutをいくつかの特注のコードにラップして、より簡単に使用できるようにしたプロジェクトの数を失っています。
AWT、Swing、SWTでシンプルなアプリを作成し、開発アプローチと最終製品をすべて比較してから、他の開発者から寄せられたさまざまなコメントを確認して、どれが最適かを判断することをお勧めします。私は長年Swingで働いており、嫌いなSWTを使用していましたが、他のフレームワークと比較すると、Swingは必要以上に複雑であることを理解するようになりました。