一部のデスクトップアプリケーションにJava Swingを使用しました。しかし、他のGUIフレームワークをあまり使用していないので、それらを比較することはできません。
Swingで好きなことと嫌いなことは確かにありますが、それはほとんどすべての状況です。
Java Swing GUIフレームワークの最大の欠点は何ですか?
一部のデスクトップアプリケーションに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は必要以上に複雑であることを理解するようになりました。
Swingは遅く(パフォーマンスが悪い)、(他の多くのものと比較して)使用するのが難しい/不格好であり、一部のプラットフォームでは非常に見栄えがよくありません。