国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java秘史:隱藏在SWT/Swing背后的故事

2019-11-18 15:47:36
字體:
供稿:網(wǎng)友

譯注:本文來自straight_talking_java@yahoogroups.com討論組,已經(jīng)是一年多前的文章。Alan Williamson是Java Developers Journal的編輯,下文來自他在IBM的一個(gè)消息來源。SWT和Swing的論爭我見過不少,Netbeans和Eclipse的也同樣多。

譯者翻譯此文并不是要激起什么爭執(zhí),也不是支持哪一方(雖然我的確是站在SWT一邊的),更不是要攻擊Amy。我最重要的理由是,這是一篇有趣的文章。里面有內(nèi)幕、線人、公司政治、壟斷巨頭、美女、商界風(fēng)云……足夠拍一出電影。有趣,這就夠了。不過此文反映了IBM對(duì)Swing的看法和SWT的由來,還是有一點(diǎn)營養(yǎng)的。

要想弄清楚為什么一切都被弄得如此混亂,要從幾年前只存在AWT的時(shí)候說起。SUN當(dāng)時(shí)已經(jīng)建立了一套基本的可移植控件類,這些類映射到不同操作系統(tǒng)上的原生窗口組件(native widget),顯然下一步應(yīng)該繼續(xù)增強(qiáng)這套模型,除了初始的CUA 92組件(文字、按鈕等等),再繼續(xù)加上表格、樹、記事本、滑塊等等……當(dāng)時(shí)的AWT還滿是漏洞,遠(yuǎn)不能稱為可靠,還需要SUN的coder們?nèi)バ扪a(bǔ)。SUN的developer們?nèi)鏕raham和Otto總是習(xí)慣于公開把他們的bug歸咎為操作系統(tǒng)的差異,比如“Windows和OS/2的焦點(diǎn)次序不同”或者“在……之間Ctrl-X的行為不一樣”,以及其他蒼白的托辭,好讓批評(píng)的火力從SUN太早釋出代碼這個(gè)問題的真相上移開。然后Amy Fowler來到了SUN。不是我大男子主義,Amy是個(gè)聰明的美女,大多數(shù)呆頭呆腦只懂技術(shù)的開發(fā)人員都要被她捏在手里。 Amy來自一家Smalltalk公司,叫做Objectshare,在那里她負(fù)責(zé)搞UI類庫。

跟Java相比Smalltalk的歷史有些悲慘,曾幾何時(shí)有3家龐大的Smalltalk公司——IBM、Parc-Place和Digitalk。在90年代初期3家公司的市場份額大致相等,生活是美好的。Parc-Place采用仿窗口部件(emulated widgets)的設(shè)計(jì)(即Swing的設(shè)計(jì)),IBM和Digitalk則采用原生窗口部件(native widgets)。后來IBM壓倒了另外兩家,因此他們打算合并成一家,假設(shè)叫做Parc-Place Digitalk。隨后當(dāng)他們?cè)噲D將他們的產(chǎn)品融合到一個(gè)叫做Jigsaw的計(jì)劃中時(shí)爆發(fā)了一場大戰(zhàn),計(jì)劃由于政治原因失敗了(開發(fā)人員實(shí)際上已經(jīng)能讓它運(yùn)轉(zhuǎn)起來),就因?yàn)樵头略靸膳傻乃缿?zhàn)。

Amy贏得了精神上的勝利,不過在IBM我們贏得了他們所有的生意,因?yàn)檫@兩家公司在一整年里除了吵架什么都沒做。當(dāng)塵埃落定之后PPD(Parc-Place Digitalk當(dāng)時(shí)已改名為Objectshare,跟Windscale改名為Sellafield的原因相同——讓人們淡忘之前發(fā)生的災(zāi)難)的股票價(jià)格從60美元掉到了低于1美元1股。他們因?yàn)閭螆?bào)收入被NASDAQ摘牌,從此消失。此時(shí)SUN正走上與PPD類似的技術(shù)方向,于是PDD的技術(shù)人員都把他們的簡歷投到了SUN。Amy被雇傭了,她承諾通過輕量級(jí)方案解決所有窗口組件的問題,因此說服SUN治理層讓她當(dāng)了GUI開發(fā)部門的頭頭。她是拿著“這里原來的人都搞砸了,我是來解決的”的鑰匙進(jìn)來的。隨后Amy雇傭了所有她過去在Parc-Place的舊朋友,讓他們來開發(fā)Swing。

顯然Swing應(yīng)該做的是僅僅成為一個(gè)繪制框架,給那些希望創(chuàng)建地圖軟件或者繪圖軟件的人們使用,無論如何,應(yīng)該圍繞AWT類庫來建造它,按鈕之類的東西仍然交給AWT來管。SUN的人比如Philip和Mark已經(jīng)讓AWT能夠處理表格、樹和記事本(notebook,?),所以Swing的方向應(yīng)該說很明顯了。但那些毀了PDD的人不干,他們非要把一切都弄成輕量級(jí)的。由于SUN治理層的無知,再加上Amy無情的政治手段,造成了我們今天所見的混亂局面。Amy還使SUN相信Swing是作為Mozilla項(xiàng)目的一部分與Netscape聯(lián)合開發(fā)的,事實(shí)上這只是她的宣傳伎倆。

在IBM,我們從第一天起就憎惡Swing。龐大、滿是錯(cuò)誤,而且難看至極。原先我們的工具如VisualAge for Java都是用Smalltalk(用的是原生窗口組件)寫的,所以當(dāng)我們將這些工具向Java代碼庫遷移時(shí),我們需要一套窗口組件。IBM這邊的開發(fā)人員都是原來搞Smalltalk的那一批人,我們對(duì)治理層要求用Swing來構(gòu)建WebSphere Studio工具都非常不情愿。Swing是個(gè)可怕的布滿缺陷的怪獸。

在WebSphere Studio最初的預(yù)覽中,當(dāng)與Microsoft Visual Studio作對(duì)比演示的時(shí)候,我們所有的客戶都討厭它,就因?yàn)樗耐庥^,而不管它的功能有多強(qiáng)。大多數(shù)消費(fèi)者都不會(huì)買一輛讓人覺得難看的車,哪怕這車有一臺(tái)出色的引擎。因此我們開始了一個(gè)項(xiàng)目,是把我們的Smalltalk原生窗口組件移植到Java上去。這個(gè)項(xiàng)目是加拿大的Object Technology International小組做的。這個(gè)項(xiàng)目獲得了成功,被運(yùn)用在在我們發(fā)布的VisualAge Micro Edition產(chǎn)品中,VisualAge Micro Edition后來成為J2ME開發(fā)方面一個(gè)非常成功的IDE。但是OTI的人發(fā)現(xiàn),Swing在讀取Windows事件方面有極嚴(yán)重的缺陷,我們甚至無法進(jìn)行SWT(S開始是Simple的縮寫,不過后來變成了Standard的縮寫)和Swing間的互操作。他們?cè)谧x事件隊(duì)列的時(shí)候用了一種可能留下內(nèi)存漏洞的方式,所以我們不得不采用我們自己的查詢Windows事件隊(duì)列的循環(huán),以糾正這個(gè)錯(cuò)誤。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌苏市| 洛宁县| 遵义县| 西华县| 万荣县| 康保县| 麦盖提县| 时尚| 赤壁市| 休宁县| 沂南县| 青河县| 濉溪县| 延吉市| 浦北县| 波密县| 天峨县| 广州市| 天津市| 紫阳县| 西华县| 双峰县| 曲阳县| 安福县| 永和县| 乳山市| 五华县| 景德镇市| 邛崃市| 玉门市| 平塘县| 施甸县| 广安市| 德保县| 丹东市| 永城市| 乐东| 阳曲县| 沛县| 民县| 东兴市|