借JavaFX之風,Swing終於熬到了出頭之日

lgx522發表於2008-12-17
前幾天看了點新聞,一是說JavaFX1.0的推出,二是是說Sun停止了對SwingX的資助,由此激怒了社群。
由此一些人推論Sun已經全力押寶JavaFX,Swing將淪為雞肋。而後Sun的高管自然出面表態,Swing和JavaFX兩手都要硬。

由於本人一直從事企業資訊系統的管理和研發,平日對Swing還是多有涉獵,看到這些傳聞不免要探個究竟。其實最近忙於管理工作,技術上已多日不熟了。於是下載了NetBeans6.5 JavaFX版,順便裝了個JDK1.6 update11,這一試卻是大獲驚喜,同時對Sun的JavaFX策略深感懷疑。

驚喜在於經過多年的等待和失望,Swing居然真正快了起來,啟動速度幾乎提高了一倍以上。這對於Swing的愛好者們無異打了一針雞血!老實說,Swing一直以來是設計精品、效能垃圾,從Applet時代開始,大家就一直是恨鐵不成鋼,期待了很多年了,直到期待到絕望。以至於本人懷疑Swing的效能也“只能如此了”。於是大家才會去折騰設計上莫名其妙的Swt,才會毅然決然地把Applet扔到一邊,硬啃程式碼醜陋的Flex。經過多年的批判,很多初學者早已習慣把“Swing很爛”當做公理。其實經過多年發展和實踐,Swing的架構設計是超優秀,跨平臺也是目前最完善的,“慢”才是Swing的真正硬傷。可惜Sun一直對這個問題視而不見,才導致了這種明珠暗藏的局面。

也許Sun還是要靠買高階的伺服器掙錢吧,所以從來對“慢”這個問題相當麻木。以至於眾多從Java時代成長起來的程式設計師已經逐漸習慣了“慢”,甚至找出各種藉口說“慢”已經不是問題。結果如何呢,EJB漸成笑柄,而Swing這種超經典GUI(除MS的各大系統級廠商由於要跨平臺,故Swing是GUI首選)總是令人不滿,根本性的問題其實還是“慢”,這甚至讓愛好者都難於啟齒。與之相對的是,MS恰恰是最重視“快、慢”問題的,君不見Windows的GUI就是快,MS的軟體上手也是快,隨之是滾滾而來的鈔票。等Vista一“慢”,連MS都不好使了,大家不買帳了。所以對於使用者而言,“使用快”永遠是個硬道理。其實對於程式設計師而言,“開發快”也永遠是個硬道理,只不過在這方面是相對的,面對不同規模和生命週期的系統,各種技術是難有定論的。幾經折騰,筆者還是堅守中庸主義的Java。

這幾年RIA之風日漸瘋狂,人們早起習慣大談Flex、Ajax,甚至新出爐的SliverLight,全然忘記了Java起家時的Applet在十多年前早已是RIA的先行者。作為後起之秀的Flex強在哪裡,其實最主要是“快”,執行快、安裝快、開發快。或許遲鈍的Sun終於感到了恥辱,才開始下決心解決這個“慢”的問題。NetBeans的GUI設計器算是解決了開發“慢”的問題,更重要的是JRE update10之後終於可以讓愛好者享受一下不輸於winform和swt的速度感了。以Swing經典的架構設計、完善的跨平臺特性,優秀的可擴充套件性,筆者實在找不到不用Swing的理由了。以現在而論,針對Internet的JavaFX尚不完善(連NetBeans都不能視覺化設計,且標記化的語言實在是夠亂的),大家不必胡亂跟風。但企業應用則可以好好考慮一下JApplet或者Swing Application,與其死磕亂糟糟的JS和Flex(對於習慣了Java的程式設計師來說),不如享受一下All in Java的樂趣。

相關文章