Java的GUI框架如何選擇? Swing、SWT、AWT、SwingX、JGoodies、JavaFX、Apache Pivot?

左邊的天堂發表於2018-10-16

本文是直譯stackoverflow的一個問題,原文在這,下面是譯文(軟體翻譯,不對之處請指正)

java有很多gui框架,但是今天的框架選擇是什麼?
以下是我對不同框架的理解,如有錯誤請指正。這是一組定義非常鬆散的問題,但我仍然認為它對任何想要建立富gui應用程式的人都很有價值。

AWT

是swing的基礎,執行良好,但缺少高階元件。如果您打算建立豐富的應用程式,那麼AWT可能不是最好的方法。但是對於不需要豐富使用者介面的較小gui應用程式來說。這可能非常適合,因為它是一個久經考驗的框架。
搖擺不定的
基於AWT,如前所述。在它的初期,它被認為是緩慢和有缺陷的,並導致IBM為Eclipse建立SWT。但是對於Java 5(或6?)Swing成為構建新應用程式的首選框架。Swing有許多豐富的元件,但在某些領域仍然缺乏。一個例子是,沒有一個功能齊全的可以進行排序和過濾/搜尋的樹狀元件。

SWT

由IBM為Eclipse建立的,他們似乎認為Swing在當時並不適合Eclipse。它本身非常低階,並且通過JNI使用平臺的本機小部件。它與Swing和AWT完全無關。然而,他們的API有些笨拙且不直觀。它們確實有一些高階元件,比如樹狀結構。(但我認為他們不支援分類和過濾).SWT使用了一些本機繫結(通過JNI?),而internet上的抱怨是這個框架不應該在今天的專案中使用。(為什麼不呢?)

SwingX

基於Swing的任務是為Swing建立豐富的元件。仍在發展。(不過不是很活躍。)有一組非常好的元件,例如TreeTable。但據我所知,TreeTable不支援過濾和排序。不過,它確實支援突出顯示搜尋。

  • 注意,SwingX是元件(AFAIU),它是現有Swing元件的擴充套件或組合
JGoodies

一個我不知道的框架…它的優點和缺點是什麼?Jgoodies有什麼不同於其他的?
JGoodies OTOH是關於PLAFs和佈局的。

JavaFX

Java/Oracle的最新旗艦。承諾成為開發富桌面或web應用程式的實際標準。

Apache Pivot

它使用Java2D呈現UI,從而最小化了Swing和AWT(在我看來,過於臃腫)遺留的影響。(@Augustus Thoo)
它的主要焦點似乎是RIA(Rich internet applications),但它似乎也可以應用於桌面應用程式。作為個人評論,看起來很有趣! 我特別喜歡這個apache專案。
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html

Qt Jambi

用c/c++編寫的本機qt庫的java包裝器。非常強大,廣泛使用和接受。具有許多GUI元件和易於使用的API。
http://qt-jambi.org/

所以,試著總結一下我的問題:
假設我今天想用Java建立一個桌面應用程式,它包含了很多高階元件,我應該選擇什麼呢?,為什麼?
這些框架中哪一個應該被認為是棄用的,哪一個應該被認為是遙遠未來的框架?
什麼是今天的反事實標準框架,您使用什麼工具來建立java gui應用程式?
我可能會後悔問這個問題,但無論如何我要試一試:c#&.Net據說有一套非常好的易於使用的元件,可以在任何方向上彎曲。在某種程度上研究了不同的java框架之後,我似乎無法對java說同樣的話。這是為什麼呢?為什麼java(世界上使用最廣泛的程式語言)沒有相同的GUI元件集?
只是因為java將gui元件建立在一個更低的層次上,並且可以編寫所有這些我正在尋找的高階元件,但是您必須自己完成大量(如果不是全部的話)工作嗎?

相關文章