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单独运行提供了可能。
首先是一个的插件层次图
+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单独运行提供了可能。