自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

描述AWT和Swing的歷史

開發(fā) 后端
本文描述AWT和Swing的歷史,故事中的歷史有了大概的了解,尤其是SWT?,F(xiàn)在你也許會覺得,IBM創(chuàng)建SWT的理由是合理的而Swing應該沿用SWT采用的方式。

Overview概述

Java GUI 工具包一直是一個倍受爭議的話題。同樣的爭論也發(fā)生在其他編程語言如Smalltalk。實際上每個平臺無關(guān)的語言都存在著這樣的爭論。Java作為當前最受廣泛使用的編程語言而尤為突出。

這場爭論在支持模擬組件(如widgets和control,在下文中也稱之為仿造組件)和支持本地組件(在下文中也稱之為原生組件)的人們之間展開,于是Java開發(fā)者形成了兩個不同的陣營,提倡使用模擬組件的Swing,和提倡使用原生組件的SWT。

歷史

Internet上有許多圍繞這一爭論的故事。你可能已經(jīng)聽說過它們中的大多數(shù)了,其中之一有助于讓你理清頭緒,讓我們就從這里開始,Amy Fowler是Swing陣營的一個倡導者。

回到上個世紀90年代,曾幾何時有3家龐大的Smalltalk公司——IBM、Parc-Place和 Digitalk。在90年代初期3家公司的市場份額大致相等,生活是美好的。Parc-Place采用仿窗口部件(emulated widgets)的設(shè)計(即Swing的設(shè)計),IBM和Digitalk則采用原生窗口部件(native widgets)。后來IBM壓倒了另外兩家,因此他們打算合并成一家,假設(shè)叫做Parc-Place Digitalk。隨后當他們試圖將他們的產(chǎn)品融合到一個叫做Jigsaw的計劃中時爆發(fā)了一場大戰(zhàn),計劃由于政治原因失敗了(開發(fā)人員實際上已經(jīng)能讓它運轉(zhuǎn)起來),就因為原生和仿造兩派的死戰(zhàn)。

Amy贏得了精神上的勝利,不過IBM贏得了他們所有的生意,因為這兩家公司在一整年里除了吵架什么都沒做。當塵埃落定之后PPD(Parc-Place Digitalk當時已改名為Objectshare,跟Windscale改名為Sellafield的原因相同——讓人們淡忘之前發(fā)生的災難)的股票價格從60美元掉到了低于1美元1股。他們因為偽報收入被NASDAQ摘牌,從此消失。

當時,AWT和Swing已經(jīng)出現(xiàn)了。SUN當時已經(jīng)建立了一套基本的可移植控件類,這些類映射到不同操作系統(tǒng)上的原生窗口組件(native widget),當時的AWT還滿是漏洞,遠不能稱為可靠,還需要SUN的coder們?nèi)バ扪a。然后Amy被雇傭了,她承諾通過輕量級方案解決所有窗口組件的問題,以此說服SUN管理層讓她當了GUI開發(fā)部門的頭頭。隨后Amy雇傭了所有她過去在Parc-Place的舊朋友,讓他們來開發(fā)Swing。

在IBM,VisualAge for Java最初是用Smalltalk(用的是原生窗口組件)寫的,當將這些工具向Java代碼庫遷移時,他們需要一套窗口組件。IBM這邊的開發(fā)人員都是原來搞Smalltalk的那一批人,他們對管理層要求用Swing來構(gòu)建WebSphere Studio工具都非常不情愿?!癝wing是個可怕的充滿缺陷的怪獸“。因此開始了一個新的項目,把他們的Smalltalk原生窗口組件移植到 Java上去。這個工具集后來被成為SWT,S開始是Simple的縮寫,不過后來變成了Standard的縮寫。這個項目獲得了成功,被運用在發(fā)布的 VisualAge Micro Edition產(chǎn)品中。他們當時發(fā)現(xiàn)在Swing讀事件隊列的時候用了一種可能留下內(nèi)存漏洞的方式,而不得不采用他們自己的查詢 Windows事件隊列的循環(huán),以糾正這個錯誤。這促成了他們關(guān)于SWT,AWT和Swing不能共存的決定。他們把這個工具包放到了Eclipse中,這是一個來自于早期Visual Age的工具平臺。

你應該已經(jīng)從上述的故事中對三者的歷史有了大概的了解,尤其是SWT?,F(xiàn)在你也許會覺得,IBM創(chuàng)建SWT的理由是合理的而Swing應該沿用SWT采用的方式。這樣的觀點是片面的,當你深入了解到Java的本質(zhì)之后,你會發(fā)現(xiàn)其實并不像你想象的那么簡單。
先決條件

什么才是Java本質(zhì)的,影響到工具集設(shè)計的特征呢?或者說,什么才是Java GUI工具集設(shè)計的先決條件呢?

答案來自于Sun對Java的承諾之一:write once, run anywhere(一次編寫,隨處運行)。這是Java不同于其他語言的優(yōu)勢所在。在Java被創(chuàng)建之前,軟件的跨平臺性能是開發(fā)者,特別是那些希望對多平臺提供支持的開發(fā)者的夢魘。在當今的生活中Internet的使用已經(jīng)相當?shù)钠毡榱?,在世界不同角落的人們在不同的平臺上工作著。軟件提供商為不同的操作系統(tǒng)提供支持是再平凡不過的事情。Java的write-once-run-anywhere(WORA)承諾顯然減輕了開發(fā)者的負擔,極大地提高了軟件開發(fā)的生產(chǎn)力。

然而編寫跨平臺的應用程序,你必須使用支持平臺無關(guān)性的標準庫。這些標準庫包括語言支持,公共用途,網(wǎng)絡(luò),I/O和GUI工具集等。所以當Sun開始設(shè)計 GUI工具集的時候,首要任務就是考慮一個設(shè)計良好的平臺無關(guān)的API。AWT和Swing都被小心地設(shè)計以保證平臺兼容性。SWT則相反,它在設(shè)計之初并不以擴展性為原則,它為一個專有的IDE Visual Age for Java而設(shè)計,Windows作為這個IDE的首選運行環(huán)境擁有很高的優(yōu)先級考量。SWT API類似于WIndows,通常它并不如Swing的擴展性好,盡管Steve Northover,SWT之父,辯稱SWT是平臺無關(guān)的,你可以很容易地發(fā)現(xiàn)許多Windows API的痕跡。

【編輯推薦】

  1. 概述Swing窗體的種類
  2. 淺談Swing線程三種
  3. Swing全屏幕模式
  4. 淺析Swing線程中的LookupEvent
  5. Swing文件選擇器的制作
責任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2009-07-14 15:01:02

AWT和Swing

2009-07-17 10:11:55

AWT和Swing

2009-07-17 09:36:14

SWT和Swing的區(qū)

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-16 13:37:33

Swing和AWT

2009-07-15 16:39:51

AWT和Swing

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-10 17:20:38

Swing構(gòu)件AWT構(gòu)件

2009-07-14 12:58:49

AWT和Swing

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-16 13:50:28

AWT和Swing

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-17 10:01:14

Swing和AWT

2009-07-10 15:41:27

Swing AWT

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 17:16:44

Swing實現(xiàn)的目標

2011-04-15 17:33:39

SWINGAWT

2009-07-17 09:55:02

事件監(jiān)聽器SWT和SwingAWT

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2011-05-04 15:21:20

swing
點贊
收藏

51CTO技術(shù)棧公眾號