Saturday, December 13, 2008

Java GUI的恩怨情仇

第一次接觸Java的GUI是在大一,掐指一算,六年前...計事本無敵,硬摳都可以寫出Swing介面,不過實在不是個有效率的開發方法,但不得不承認,這樣硬幹上來,內心覺得踏實無比。看著一堆英文字,竟然可以搞出個活生生的介面,不但可以按它、拖它、戳它,它還會乖乖照著你的指示動作,這太好玩了。一直覺得Swing的介面東西很可愛,雖然有人覺得他很醜...

vNoteReader出生前,只隱隱約約記得,參加SOA比賽時,Sigma有用過SWT,他說用SWT來開發GUI介面很方便。前幾個禮拜,在網路上看到一篇Java GUI的歷史發展,雖然跟程式開發沒啥直接關係,但SWT的輪廓卻慢慢的在腦海中成形。那種感覺就像是藉由一個人的成長背景,來瞭解這個人;藉由歷史的演進,瞭解現有的一切都其來有自。

參考資料:AWT, SWT, Swing: Java GUI Clean Up



Java GUI的開發,基本上有兩大派:一派支持native components(直接使用作業系統中的元件,外觀看起來就跟一般的應用程式沒兩ex. SWT),另一派則支持emulated components(重新製造出類似作業系統中用的元件,有自己的look。ex. Swing, AWT)。這兩派有各自的後台撐腰,SWT是IBM,AWT和Swing和是Sun。

說到Java GUI歷史,emulated components的死忠支持者艾美小姐(Amy Fowler)在那段刀光劍影的歷史中,份量可說是舉足輕重。















Java GUI的恩怨情仇

西元1990左右,有三大巨頭公司以Smalltalk語言來開發他們的產品,然而,這三顆大頭對GUI的看法分成了兩大派別:一派支持native components,另一派則支持emulated components。
* SmallTalk是一種物件導向語言,對後來的Java, Ruby...有深遠的影。

這三大巨頭分別是:IBM,Digitalk和Parc-Place。IBM和Digitalk是native componets派,Parc-Place則是emulated components派。這派不能吃。

兵戎相見,必有勝敗。IBM在市場上超越了另外兩家公司。西元1995年,Digitalk和Parc-Place合併成為ParcPlace-Digitalk。

合併後的ParcPlace-Digitalk,為了整合他們的產品,Native和Emulated兩派人馬為此吵到不可開交。最後由來自Parc-Place,堅持使用emulated components的Amy Fowler勝出。

西元1997年,品牌重新命名為ObjectShare。合併後的公司並未尋找自己在Java市場的定位,也或許因為內部爭吵,使得元氣大傷,股價跌破一元。最後,西元1999年從NASDAQ下市。

就在此時,Sun公司的AWT剛發開發出一組基本的控制類別,能在不同的作業系統上,對應到此系統中的Native compnets。但AWT就還像是個嗷嗷待「補」的小北鼻,許多功能還不甚健全與穩定。

過沒多久,Amy被Sun雇用了,Amy也保證能將現有AWT的問題解決。此外,Sun並任命她為GUI開發團隊的頭頭。Amy找來她之前在Parc-Place的朋友們一起著手開發Swing。

另一邊,IBM持續著巨人的腳步,將過去以Smalltalk語言開發的Visaul Age,一步步轉為Java的程式碼。但IBM一直以來就是native components的死忠支持者,若要他們使用Swing改寫介面,請直接拿刀…

於是,IBM為了將Smalltalk上的native components遷到Java平台上,展開了一個專案計劃,這就是後來的SWT (Simple/Standard Widget Tool)。

IBM這項程式轉移專案相當成功,跟著在市場推出的Visual Age Micro Edition亦獲得好評。其後,IBM開發人員發現Swing在處理某些視窗事件時會有memory leak的情形,遂決定將SWT獨立出來,不與AWT/Swing共存,並進一步把SWT放入Eclipse中。Eclipse即是從早期Visual Age所衍生出來的軟體。

因此,現在大概就呈現兩大派別的狀態。分別是以IBM為首的的SWT,及以Sun為首的AWT/Swing。

4 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. 呵呵~ 畫得好可愛易懂喔,給您鼓勵鼓勵~ (抱歉沒跟到followup,再波一次)

    ReplyDelete
  3. 不好意思, 弱弱的問一下那netbean platform又是怎麼回事?

    ReplyDelete