軟件開發(fā)經(jīng)常是一個不斷折衷考慮的過程,。目前最熱的爭論焦點是富有效率的應(yīng)用程序與基于瀏覽器的UI之間的權(quán)衡,。不管當前的媒體報道會導致人們什么樣的想法,,業(yè)界還沒有決定為了支持用HTML/XML/XSLT/Javascript表達的基于瀏覽器的UI而拋棄所有的桌面程序。其理由可以總結(jié)成四個字:“用戶體驗”,?!靶问阶裱δ堋笔桥袛嗫捎眯缘年P(guān)鍵標準。實際中,,較高的用戶交互性或復雜的數(shù)據(jù)關(guān)系使選擇的可能性更小,,也更多的要求將用戶接口以桌面程序的形式提供。
在當今的計算環(huán)境中,,提供在多種平臺上運行的用戶接口是非常重要的,。平臺范圍要寬,包括小型手持設(shè)備和服務(wù)器控制臺,。當用戶與他們非常熟悉的視窗管理環(huán)境中的程序進行交互時,,操作必須讓人感覺自然,并且具有可預(yù)測性,。
為了創(chuàng)建高效率的應(yīng)用程序,,首先要求有良好的設(shè)計和支撐性架構(gòu)。由于沒有能被廣泛接受的應(yīng)用程序框架,,大多數(shù)開發(fā)人員會開發(fā)自己的架構(gòu),,然后自己組成框架。然而,,這種方法的成本相當高,,解決問題所花的時間、調(diào)試努力,、支持和麻煩還只是建立目標程序功能的一些外圍性開銷,。
已經(jīng)有比“開發(fā)自己的”程序框架更好的方法,這種方法在滿足設(shè)計要求的同時可以簡化和加速項目開發(fā),。這種框架的“希望列表”可包含以下多個方面:
.實現(xiàn)清晰,、一致和內(nèi)斂性的架構(gòu);
.支持包括Windows,、Mac OS X,、Linux、QNX Photon,、Pocket PC、HP-UX,、AIX,、Solaris在內(nèi)的所有主要桌面平臺上的開發(fā)和執(zhí)行;
.“快速”保持平臺本地外觀和感覺的UI響應(yīng),;
.提供包括標準組件(如按鈕,、檢查框)和擴展組件(如工具條、樹狀瀏覽、進程測量)在內(nèi)的各種窗口組件,;
.提供包括編輯器,、位置/修改管理、基于規(guī)則的風格,、內(nèi)容完成,、格式化、搜索和強大幫助在內(nèi)的各種擴展文本處理方式,;
.必要時支持特殊平臺性能(如ActiveX)和傳統(tǒng)軟件的使用,;
.為程序設(shè)計產(chǎn)品品牌;
.包含一體化幫助系統(tǒng),;
.管理用戶配置和參數(shù),;
.支持程序更新的遠程發(fā)現(xiàn)和安裝;
.讓在創(chuàng)建面向?qū)ο蟮目蚣芊矫嬗胸S富經(jīng)驗的著名軟件公司進行創(chuàng)建和維護,;
.支持國際和國內(nèi)語言的互譯,;
.針對靈活性進行設(shè)計,可隨意增加新的功能,;
.只為需要的東西“支付”-基礎(chǔ)架構(gòu)可隨意精簡或擴展,,以便針對精確要求進行功能裁剪。
只要完成我們的“希望列表”,,就可能增加得到多個工業(yè)慈善機構(gòu)使用和支持的,、開放源代碼團隊創(chuàng)建和維護并且免版稅和許可的技術(shù),并可向全球重新發(fā)布,。雖然這些要求聽起來象是白日夢,,但Java程序開發(fā)人員可能已經(jīng)安裝了這種令人難以置信的程序框架。這就是Eclipse,。
圖1:基于“空的”Eclipse的應(yīng)用程序
但Eclipse難道不是Java IDE嗎,?簡短的回答是“是”和“否”。Eclipse項目的常見問題(FAQ)包含以下內(nèi)容:“Eclipse是一個開放源代碼軟件開發(fā)項目,,專門為高集成度工具的開發(fā)提供全功能,、商業(yè)級質(zhì)量并極具魯棒性的工業(yè)平臺?!币虼烁鶕?jù)上述定義,,Eclipse是一種用于工具集成的開放平臺,不是IDE,。之所以讓人疑惑是因為在Eclipse平臺中有一個完整的工業(yè)性Java IDE,,它作為一種插件擴展了Eclipse的基礎(chǔ)框架結(jié)構(gòu)。
Eclipse框架可以將多個獨立的工具集成進單個一體化程序中,,并提供無縫用戶接口,。新工具通過插件的形式集成進Eclipse平臺和用戶接口,,從而擴展了Eclipse的內(nèi)容,并向用戶提供新的功能,。另外,,Eclipse插件還可以擴展其它插件?;贓clipse的程序初始化時可以發(fā)現(xiàn)和激活環(huán)境中已經(jīng)配置的所有插件,。由于Eclipse程序能夠執(zhí)行通過目前包含的插件增加進的任何功能,因此Eclipse程序非常象是各組件的疊加,。
由于能夠?qū)懞蜏y試這樣的插件對Eclipse成功與否起著舉足輕重的作用,,因此Eclipse平臺捆綁了插件開發(fā)環(huán)境(PDE)和整套Java開發(fā)工具(JDT)。Eclipse開發(fā)人員對他們開發(fā)的框架能力充滿信心,。整個開發(fā)環(huán)境就是使用標準插件技術(shù)集成進平臺中的另外一套工具,。Eclipse平臺本身就是開發(fā)人員利用基于Eclipse的Java IDE(最初是beta版)自己開發(fā)出來的。由于采用了開放源代碼的形式,,因此任何人都可以檢查代碼,,并非常詳細地了解框架將被如何使用。
正是將開發(fā)工具與平臺捆綁在了一起,,使得有些人對Eclipse的特性抱有困惑,。JDT組件的高效性吸引了所有Java開發(fā)人員,而不僅那些編寫插件的人,。表面上,,Eclipse似乎只是一種優(yōu)秀的Java IDE。但不該認為Eclipse只是Java IDE,,而是應(yīng)該把它看作是一種剛好包含了Java IDE的實用性程序,,是將Eclipse基礎(chǔ)平臺用作程序框架搭建起來的一種程序。
Eclipse框架特性概述
Eclipse采用了可擴展的設(shè)計,,作為一種架構(gòu)平臺實現(xiàn)了最大的靈活性,。在它的內(nèi)核,Eclipse平臺包含了OSGi R4內(nèi)核框架規(guī)范的高效實現(xiàn),。這種框架規(guī)范名為Equinox,,可用來引導程序。在該框架上面,,Eclipse架構(gòu)定義了一套層次化子系統(tǒng),,可用作根本就不是IDE的便攜式程序(或套件)的框架。由于這種分層架構(gòu)只在個別的架構(gòu)接口處進行耦合,,程序創(chuàng)建時可以只整合需要的框架,,同時刪除那些不需要的框架。
下面介紹Eclipse的一些主要特點,。正是這些特點使得作為一種通用程序框架的Eclipse廣受人們歡迎,。
可擴展模型:因為要求一直在變化,開發(fā)人員通常要花很大的力氣設(shè)計出靈活,、可擴展的程序,。由于Eclipse采用了高度靈活和可擴展的插件模型,因此可以在平臺中增加任何類型的功能,。如果程序可以被認為是一個工具或一套工具,,那么它的功能很快就能以組件的形式增加進基于Eclipse的框架中,就象Eclipse本身具有的Java IDE功能那樣,。
內(nèi)容模型:Eclipse提供的內(nèi)容模型以用于安裝工具(功能)的工作臺概念為基礎(chǔ),。 工具所需的資源在工作區(qū)內(nèi)被組織成項目。項目包含樹狀結(jié)構(gòu)的資源,,這些資源就是包含任何類型內(nèi)容的文件夾和文件,。內(nèi)核平臺提供大量擴充點,允許定制全方位的資源壽命期管理,。
內(nèi)容模型的層次化分類特性使得它適用于多種類型的實用性程序,。例如,可以在包含了與用戶email賬號相關(guān)的單一項目的工作區(qū)上創(chuàng)建簡單的email客戶端,。用戶項目可包含用于收件箱,、發(fā)件箱和已發(fā)送郵件等公共功能型email單元的文件夾。每個文件夾可包含作為項目資源的相應(yīng)email消息,。
本地窗口組件:Eclipse平臺包含一個標準窗口工具套件(SWT),。SWT是在所有支持的Eclipse平臺上本地化實現(xiàn)的。SWT包含大量的事件,、版圖管理器和窗口組件,。當某個支持的平臺不包含Eclipse支持的本地窗口時,比如Motif上的工具條,,可提供針對該平臺的模擬窗口,。SWT還與本地的一些桌面功能(如拖放)發(fā)生交互。另外,,如果某些功能比全平臺便攜性更理想,,SWT也可以使用這些特殊OS組件,如Windows Active/X控制,。到目前為止,,SWT已經(jīng)在Windows Win32和PocketPC、Photo,、Motif和GNU窗口管理器上得到了驗證,,覆蓋了從高端工作站到嵌入式設(shè)備的各種應(yīng)用平臺。
雖然Java語言已經(jīng)包含了兩個窗口工具套件AWT和Swing,,Eclipse小組仍選擇實現(xiàn)他們自己的套件,。詳細理由可見Eclipse概論白皮書,。然而,為了證明這是正確的決定,,全部要做的只是比較你選擇的Swing或AWT程序的外觀與感受與Eclipse的外觀與感受,。Eclipse的外觀、感受和響應(yīng)就象它在無論什么平臺上運行的本地程序一樣,。
用戶接口框架:為了建立圖形界面,,SWT可以直接或通過JFace使用Eclipse平臺的用戶接口框架。JFace包括對話框,、參數(shù)選項,、進度報告、框架向?qū)б约皥D像與字體注冊等內(nèi)容,,因此用戶接口的創(chuàng)建非常直截了當,。
Eclipse平臺支持多窗口、類似MDI的用戶接口描述,。在JFace和SWT的頂部,,Eclipse工作臺提供的框架可用于建立透視圖、編輯器和瀏覽窗口,,從而實現(xiàn)與用戶的交互,。編輯器處理資源壽命期的交互,如創(chuàng)建,、編輯,、保存和刪除。瀏覽窗口用于提供與用戶正在交互的對象有關(guān)的補充信息,。例如外形,、掛起的任務(wù)和私有窗口等。透視圖是瀏覽窗和編輯器的堆疊,、平鋪或分離排列,。在某一時間窗口中只有一個透視圖是可見的,但通過打開多個窗口即可同時瀏覽多個透視圖,。
Eclipse用戶接口框架具有可擴展,、靈活和強大的功能。即使它沒有做你需要的所有事情,,它也可以非常方便地得到擴展,,所花的時間和資源要比設(shè)計和創(chuàng)建你自己的框架少得多。
更新管理器:過去,,與程序相關(guān)的最大問題是當新版本發(fā)布時包裝,、分發(fā)、維護和更新程序所發(fā)生的支持成本。當一個大而分散的用戶團體使用程序時會增加這種成本,。隨著產(chǎn)品的成功和普及,,售后支持將變得既耗時又昂貴。
組件維護和更新功能是從頭開始的Eclipse設(shè)計的一部分,。為了控制上升的成本,,排除可能妨礙項目開發(fā)和部署的維護問題,Eclipse平臺包含靈活的更新管理器,。更新管理器經(jīng)過配置既可執(zhí)行新組件的初始安裝,也可以從遠端服務(wù)器更新已有的組件,。當你發(fā)布新版的程序或附加組件時,,發(fā)布非常容易,只需用Eclipse工具對它們進行包裝,,然后把它們放在更新服務(wù)器上即可,。
幫助系統(tǒng):Eclipse的框架式幫助系統(tǒng)提供可搜索和對內(nèi)容敏感的幫助,通過文檔插件能非常方便地加以擴展,。因此對于任何建立在Eclipse上的程序而言,,無需購買第三方工具即可構(gòu)建、包裝和交付完整的,、定制的并且對內(nèi)容敏感的幫助系統(tǒng),。
將Eclipse用作程序框架
那么開始時將Java IDE的基礎(chǔ)當作程序框架至少聽起來是可行的,但為什么會有人這樣做呢,?Eclipse完全滿足上文中提到的功能與工具希望列表要求,,同時提供程序開發(fā)環(huán)境,將項目建成一系列Eclipse插件,。最開始程序框架提供空的普通程序,,但其架構(gòu)是可擴展的,非常方便未來的功能增強,,而且可從遠端進行自我更新,。
隨即主要的問題變成要求Eclipse提供多少功能?簡單地說,,程序在Eclipse框架上建立時可刪除那些不重要的功能,,然后再增加重要的一些功能。更具挑戰(zhàn)性的問題是從哪里開始,?最簡單的案例可以非常極端,。例如,當建立商用化IDE時,,就象我們建立MyEclipse Enterprise工作臺那樣,,先開始完整的Eclipse平臺下載和一些其它Eclipse項目,然后在它們的基礎(chǔ)上進行創(chuàng)建,。而另外一個極端,,在為嵌入式設(shè)備或大小約束很重要的其它環(huán)境建立程序時,,Equinox或eRCP將成為更合理的起點。如果配置目標有更多的資源,,但仍不要求大多數(shù)平臺性能,,那么將RCP(可從平臺下載頁面獲得)用作主要框架也許才是正確的出發(fā)點。只需對基本RCP進行少許的配置即可快速設(shè)置好“空”程序,,如圖1所示,,然后集中精力只增加那些能起到增殖作用的功能,而不再增加基礎(chǔ)架構(gòu),。
一旦確立了起始平臺,,剩下的程序開發(fā)工作就只是編寫插件并在Eclipse基本框架中增加功能,然后針對目標用戶設(shè)定合適的商標,。例如,,一個大型程序一般要使用許多插件寫成多個定制透視圖和支持窗口。而在集成一套小型程序時,,也許每個程序可以是自身插件中的單個透視圖,。在這些產(chǎn)品線中,Eclipse也可用作公司自己開發(fā)的程序的集成入口,??赡苄允菬o止境的。為了證明這一點,,下面介紹一些來自世界各地的各種Eclipse程序,。
GumTree是一種開放源碼的圖形化用戶接口框架,可用來創(chuàng)建科學儀器控制臺,,如圖2所示,。
圖2:GumTree
EclipseTrader是針對Eclipse RCP開發(fā)的開放源碼插件,專用于建立在線股票交易系統(tǒng),,具有豐富的功能,,如股票價格瀏覽、帶技術(shù)分析指南的當日和歷史圖表,、等級II/市場深度分析,、新聞瀏覽和系統(tǒng)交易。主窗口如圖3所示,。
圖3:Eclipse Trader
Azureus通過Eclipse RCP插件實現(xiàn)BitTorrent客戶端協(xié)議,,捆綁了許多對BitRorrent的初級用戶和高級用戶來說都很有價值的功能。Azureus是SourceForge站點上被下載最多的程序之一,,接口在任何平臺上看起來都很平易近人,,這要歸功于SWT,詳見圖4。
圖4:Azureus
Qanyon World Factbook,。Qanyon World Factbook程序用于開發(fā)Eclipse RCP在分布式環(huán)境中的使用,。與CIA World Factbook網(wǎng)站相似的是,即使在龐雜的客戶環(huán)境中Qanyon World Factbook也應(yīng)顯示國家信息,,如圖5所示,。
圖5:Qanyon World Factbook
Eclipse的未來
Eclipse還在不斷向前發(fā)展,從縱向看將進一步深入軟件工具領(lǐng)域,,從橫向看將進入全新的市場領(lǐng)域,。有趣的是,向新產(chǎn)業(yè)領(lǐng)域的縱向發(fā)展具有與Eclipse最初創(chuàng)建時同樣的理由,。雖然Eclipse最初創(chuàng)建時是向工具提供商搭建集成化平臺,,但各個可用的RCP使一切都改變了。現(xiàn)在Eclipse不只是工具提供商使用的平臺,,而且已經(jīng)成為一種通用平臺,在軟件工具領(lǐng)域有了廣泛的應(yīng)用,。伴隨著這種變化,,Eclipse開始吸引其它領(lǐng)域的參與者進來,這些參與者希望采用與目前的工具提供商一樣的合作方式 ,。在不久的將來,,我希望看到有志于為實用性程序、報告工具,、安全性,、工藝工作流程和商業(yè)智能化等創(chuàng)建基礎(chǔ)架構(gòu)的組織。現(xiàn)在Eclipse已經(jīng)完全開放,,并立身于整個軟件產(chǎn)業(yè),,它的成員在今后幾年中將呈爆炸性增長。
Eclipse未來成長的另外一個源動力可能完全來自于軟件產(chǎn)業(yè)外部,。衛(wèi)生保健,、汽車和金融等不同產(chǎn)業(yè)組織一般要設(shè)置軟件平臺和互操作性標準。然而,,如果沒有便攜的,、跨平臺標準實現(xiàn),每個組織成員必須獨自根據(jù)產(chǎn)業(yè)標準獨立地構(gòu)建它們自己的標準,。這是一個艱巨的重復性勞動,,不僅代價高,也容易出錯,。聯(lián)合起來建立一套公共的規(guī)范兼容性架構(gòu)將有效地降低成本,,同時確保完善的互操作性。但在他們合作之前競爭對手們需要的是能使他們平等受益的等級運動場。當他們開始研究他們的選項時,,他們會發(fā)現(xiàn)Eclipse的成熟,、可擴展和免版稅再分配模型作為他們合作開發(fā)工作的基礎(chǔ)具有非常大的吸引力。