Eclipse因為其強大的外掛程式機制而聞名,完全可以說,整個Eclipse就是由外掛程式組成的。到了eclipse 3.0,隨著RCP概念的興起,整個eclipse的外掛程式也形成了明晰的層次關係。底層是RCP的org.eclipse.core.runtime,org.eclipse.ui;中間是構成eclipse本身workbench的大量外掛程式如org.eclipse.swt,org.eclipse.jface,org.eclipse.platform,再到最上層,是一些專用的功能外掛程式,如CDT,JDT,EMF等。本文簡單的針對當前流行的外掛程式,做一個簡單的介紹。
首先是一個的外掛程式層次圖
+Eclipse SDK
org.eclipse.sdk
+Eclipse Platform
+RCP
org.eclipse.core.runtime
org.eclipse.ui
org.eclipse.update.configurator
org.eclipse.swt
org.eclipse.jface
org.eclipse.platform
org.eclipse.debug
org.eclipse.ant
org.eclipse.help
...
+JDT
org.eclipse.jdt.core
org.eclipse.jdt.ui
org.eclipse.jdt.doc
org.eclipse.jdt.debug
org.eclipse.jdt.junit
+PDT
org.eclipse.pde
org.eclipse.pde.build
org.eclipse.pde.core
org.eclipse.pde.runtime
org.eclipse.pde.ui
org.eclipse.pde.doc
org.eclipse.pde.source
由可以看到,Eclipse SDK是這些外掛程式的總和。在所有這些外掛程式中,最為核心的是RCP所屬的幾個外掛程式,org.eclipse.core.runtime,org.eclipse.ui(理論上RCP應該就包含這兩個組件,但是據本人的瞭解,沒有org.eclipse.update.configuration,org,eclipse.swt,org.eclipse.jface,org.eclipse.workbenchde的支援,
編寫帶有UI的RCP程式是不可能的)。org.eclipse.core.runtime主要提供跨平台的運行時支援,以及對其它外掛程式的管理機制;而org.eclipse.ui則提供跨平台的介面支援,需要注意的是,org.eclipse.ui依賴於5個外掛程式,不妨開啟eclipse/plugins/org.eclipse.ui_3.0.1/plugin.xml檔案,你能發現如下的幾行文字,清楚地說明了這種依賴關係:
<requires>
<import plugin="org.eclipse.core.runtime"/>
<import plugin="org.eclipse.help"/>
<import plugin="org.eclipse.swt" export="true"/>
<import plugin="org.eclipse.jface" export="true"/>
<import plugin="org.eclipse.ui.workbench" export="true"/>
</requires>。
RCP之上,是Eclipse的platform層,這一層負責Eclipse本身的介面,操作和功能。比如Eclipse的菜單,各種視圖和編輯器,調試能力,協助支援等。這一層是Eclipse的最龐大,也最複雜的一部分。
其中,org.eclipse.swt,org.eclipse.jface提供的是跨平台的UI的底層支援,而org.eclipse.ui.workbench實現了一部分的Eclipse的一部分上層UI架構,並最終由org.eclipse.ui.ide實現了大部分的菜單,編輯視窗,工作清單等UI組件和功能。
Platform之上,就是Eclipse的SDK層了,其實就是platform+JDT+PDT,在platform之上,使得Eclipse真正成為一個完整的開發工具。同時,正是由於Eclipse的這種設計方式,使得Eclipse作為一個開發環境,幾乎可以無限擴充,不僅支援java開發,外掛程式開發,C++開發,還可以是Python,XML,Perl,UML等等等等。去http://www.eclipse-plugins.info上去看看,你就會理解我為什麼這麼說了。遺憾的是,我沒能找到.Net開發相關的外掛程式。
可見,正式由於Eclipse基於外掛程式的設計方式,使得Eclipse本身擁有了無限的發展空間,在眾多開發環境中獨具一格。而且從3.0版本以來,Eclipse的開發組正在調整Eclipse的外掛程式組織圖,使得這些外掛程式的階層更加清晰,在此基礎上出現的RCP概念更是為很多外掛程式離開Eclipse單獨運行提供了可能。