插件開發 - 並非另類

(題記:曾經專職插件開發多年,是以談談插件開發作爲在CSDN的第一篇文章。)

大部分情況下,Eclipse是作爲一款優秀Java開發平臺和開源領域新概念的工具集成工具而進入大衆視野;而Eclipse內涵的核心體系 —— PDE (Plugin Development Enviroment) 應用雖然逐漸爲更多的人瞭解,但是深入實踐的插件開發者畢竟還是一個很小的羣體。 

在瞭解和不瞭解之間,人們往往形成了一個印象:“哦,插件開發?這很偏僻,跟我們要做的事情沒什麼關係吧?”  甚至,有些正在編寫插件程序的程序員也覺得自己做的這個事情很生門。

然而,插件開發並非另類:插件開發是純正的面向對象(OO)的分析(OOA)、設計(OOD)和編程(OOP)。人們之所以疑惑的原因是他們沒有寫過插件代碼、或者是寫過但還沒有認清楚插件開發的本質。

插件體系結構  —— 最爲合適的平臺程序體系結構

Eclipse基於插件體系結構設計。所謂插件體系結構,實質上就是一種Service / Components的程序結構,即由一個核心服務加一組可插拔、自定義、有層次的組件,由核心服務發現和加載組件定義、管理組件之間的依賴關係,並且,這個體系結構是開放的。

Eclipse孕育之初的目標就不僅僅是提供一款優秀的Java Dev Tool,它一開始就是以開放的、具有卓越集成擴展能力的開發工具平臺爲理想,要求未來可以在這個平臺上集成和擴展更多的功能組件。持續的擴展能力和可選擇集成是Eclipse基礎要素之一,因此它需要一個動態的可插拔方式集成組件的體系結構,無論從功能角度還是從性能角度看來,選擇插件體系結構是必然。

更準確的說,插件體系結構是遵循OSGI (Open Services Gateway Initiative)標準的一個設計。特別突出的是,通過擴展、擴展點、組件依賴這一組概念的引入,這種插件體系結構做到了最大程度上的軟件複用—— 功能和組件級別的複用。

雖然起初Eclipse架構師可能並未在意,但是多年前設計的這種插件體系結構結構與今天的SOA有着天然的相似,它們旨在解決的問題性質也正是它們擁有強大生命力的精神要義:開放的體系結構。無論是作爲應用程序結構的插件體系結構還是企業應用架構大勢所趨的SOA,這種體系結構上的開放性保證了軟件系統在系統擴容、橫向集成上的持久生命力。 

插件開發 ——  99%的OO

插件(Plugin)就是這種Service/Components結構的功能組件的發佈單元;每個插件有一個插件描述文件(Plugin.xml)和一個刻畫了插件生命週期的插件類(Plugin Class) 。除去這些並不佔據顯著工作量的部分之外,插件項目完全是一個Java Project,儘管部分人抱怨編寫一個插件時可能代碼中充斥了依賴插件的API,但是,龐大的API正是擴展開發的的特徵:如果你想享受平臺底層的好處,那麼你就對平臺依賴更多。

從這個層面認識插件開發,一旦能夠隨心所欲的駕馭這些錯綜繁複的API爲你解決相當一部分基礎性工作,插件開發中99%的工作就是充分展現你在OO領域的領悟程度和創造才華,完全按照你自己的意思設計和編碼。而一個優秀的OO Desingner 和 Programmer從來就不應該懼怕站在一堆API之上的基礎上完成自己的作品 —— 創造力和領悟力在程序員而言從來就不應該是孤立的。

Eclipse  —— OO作品的典範

翻開Eclipse的源代碼,無論是爲實現一個概念級別的大粒度的功能特性、還是爲實現一個簡單的如對話框這樣的一個具體界面,面向對象編程中的一切優良思想在大師的代碼中無所不在。如果說Eclipse是一部優秀作品,那麼這部作品中最有價值的部分除了選用插件體系結構、提供可以複用的強大的編輯工具基礎特性之外,Eclipse更加是面向對象思想的典範。

如果你是一個設計模式的擁戴者,比起《設計模式》一書,你在Eclipse中能發現更多因爲實際需要引入的令人回味悠長的經典的模式應用。 

結束語

在我曾經做的一個系列的Eclipse培訓中,我就告訴新入行的同事們,插件開發並非另類,我相信幫助他們正確的認識一個可能還沒有激起他們興趣的專業很重要。這不僅僅是幫他們做好情緒上的準備,更是因爲我希望他們這樣理解和體會插件開發。

一個做過兩三年插件開發的程序員如果還是抱怨他們所作的工作“偏門”的話,我認爲這是不應該的。程序員應該對深入接觸過的系統有自己的思考、有自己的理解並從中獲益。任何一個有影響的軟件產品總有它值得稱道之處,即使你對它有不滿也可以反思反思它這種程度的存在的根據是什麼。

Eclipse是成功的,插件體系結構也是成功的;隨着Eclipse社區影響力與日俱增、以及RCP被不斷的應用解決一個又一個的問題,Eclipse插件開發也許就是你未來工作的一部分。獻此拙篇,更多的是希望在更大範圍澄清人們對於插件開發長期的模糊的疑惑。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章