W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
架構必須持續(xù)地進行檢查以評估其是否依然合適。它是否能引入新的技術?它是否能帶動社區(qū)的成長?它是否便于吸收新的提交者?在2007年底,Eclipse項目確定這些問題的答案是否定的所以他們著手設計新版本的Eclipse。同時,他們意識到有成千上萬個Eclipse項目依賴于已有的API。在2008年的時候,他們創(chuàng)建了一個新的孵化項目,這個項目有三個明確的目標:通過開放式的架構來簡化Eclipse開發(fā)模型、吸引新的開發(fā)者以及利用基于web技術的優(yōu)勢。
圖6.10 4.0示例應用生成的模型
6.4.2級聯(lián)樣式表樣式
Eclipse發(fā)布于2001年,早于富互聯(lián)網(wǎng)應用的時代,在這個時代可以使用CSS來實現(xiàn)皮膚的切換以提供不同的外觀和體驗。Eclipse4.0提供了使用樣式表來容易地修改Eclipse應用外觀和體驗的功能。默認的CSS樣式單可以在org.eclipse.platform bundle的css文件下找到。
6.4.3 依賴注入
Eclipse的擴展注冊器和OSGi服務都是基于服務模型編程的。按照慣例,服務編程模型包含服務的生產(chǎn)者和消費者。而居間者(broker)負責管理生產(chǎn)者和消費者的關系。
圖 6.12 服務居間者上下文(Service Broker Context)
生產(chǎn)者將服務和對象添加到上下文中儲存。通過上下文,服務被注冊到消費者對象中。消費者生命需要的服務而上下文負責確定如何滿足這個需求。這種方式使得使用動態(tài)服務更容易了。在Eclipse 3.x中,消費者需要注冊監(jiān)聽器,當服務可用或不可用的時候獲取通知。在Eclipse 4.x中,一旦一個上下文注入到消費者對象中,任何變化都會自動傳遞到那個對象中。換句話說,依賴注入會再次發(fā)生。消費者通過使用Java 5的注解來聲明使用上下文,這些注解是符合JSR 330規(guī)范的如@inject,除此以外還會有一些自定義的Eclipse注解。構造器、方法以及域注入都是支持的。4.x的運行環(huán)境會掃描對象來尋找這些注解。實際執(zhí)行的操作取決于使用的注解。
分離上下文和應用使得組件能夠更好地常用,也使得服務的消費者免于理解內(nèi)部實現(xiàn)。在4.x中,更新狀態(tài)行的代碼如下:
@Inject
IStatusLineManager statusLine;
? ? ?
statusLine.setMessage(msg);
6.4.4 應用服務
Eclipse 4.0的一個主要目標是簡化用戶使用的API以便于其實現(xiàn)通用的服務。簡單的服務列表被稱為“20件事”(the twenty things)或Eclipse應用服務。其目標是為用戶提供單獨的API使得用戶不必深入了解所有的API。它們被組織成獨立的服務,因此可以用于其它非Java語言,像JavaScript。例如,有這樣的API可以訪問應用模型,讀取和修改首選項以及報告錯誤和警告。
基于組件化架構的Eclipse可以不斷吸收新的技術而同時保證向后的兼容性。這樣的成本比較高昂,但是回報在于Eclipse社區(qū)在不斷發(fā)展壯大,因為用戶能夠基于建立起來的信任,不斷使用這些穩(wěn)定的API開發(fā)產(chǎn)品。 Eclipse廣大的用戶群體會有不同的使用場景而我們眾多的API使得新的用戶很難適應和理解。回顧過去,我們應該讓API更簡單一些。如果80%的用戶只使用20%的API,有必要對其進行簡化,這也是Eclipse 4.x創(chuàng)建的原因之一。
聰明的用戶群體帶來了有趣的使用場景,例如分解出IDE中的bundle來構建RCP應用。另一方面,群體有時候也會創(chuàng)造一些噪音來要求實現(xiàn)很少見的場景,這消耗了大量的時間來實現(xiàn)。
在Eclipse項目的早期,提交者有充裕的時間來編寫文檔、樣例以及回答社區(qū)的問題。隨著時間的推移,這個任務轉移給了整個Eclipse社區(qū)。我們本可以提供更好地文檔和樣例來幫助社區(qū),但是因為每個釋放版本都會有大量的特性使得這變得很困難。一般情況下,軟件發(fā)布總是會延期;然而在Eclipse,我們總是按期發(fā)布,這樣做同時也可以幫助我們的客戶建立起按期發(fā)布產(chǎn)品的信心。
通過吸收新技術以及重新改造Eclipse的外觀和運行機制,我們會持續(xù)與用戶進行交流并使他們留在我們的社區(qū)。如果你對Eclipse相關信息感興趣,請訪問http://www.eclipse.org。
腳注
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: