Eclipse的插件机制

原文地址:http://blog.csdn.net/dengyunze/article/details/157139


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的插件机制)