【eclipse插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制

Eclipse插件开发实战1——eclipse内核结构、扩展点机制


一、前言

本系列总体介绍eclipse插件开发基本理论、插件项目结构及开发步骤,最后再给出两个插件开发实例。

总体安排结构如下:

1.介绍eclipse内核结构、扩展点机制;

2.介绍SWT的原理,控件设计及事件响应机制

3.介绍OSGi

4.介绍RCP(Rich Client Platform)——Eclipse富客户端

5.介绍插件项目文件结构

6.介绍插件开发过程及基本步骤

7.介绍插件发布jar包的方式

8.给出两个插件开发实例


二、Eclipse内核结构

Eclipse是一个称作插件加载器的小内核,有上百个插件,eclipse最重要的特征就是它的插件架构,其核心非常小,而由许多功能插件组合而成。在启动时,插件加载器扫描plugin.xml文件,寻找每一个插件,并构建一个包含这些信息的架构。

通常eclilpse富客户端程序(RCP,Rich Client Platform)由应用主程序org.eclipse.core.runtime.application、视窗org.eclipse.ui.perspective和工作台workbenchadvisor组成。其中最基本的,一个RCP程序至少需要org.eclipse.core.runtime和org.eclipse.ui两个插件的支持,其包含在requiredplugins选项中。

下面给出eclipse基本框架结构图:

【eclipse插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制_第1张图片

从图中可以清晰地看到:最底层的OSGi(OpenServices Gateway initiative),是Runtime(OSGi)(OSGi运行时),其作为eclipse插件整体结构的最基干部分,OSGi是在eclipse 3.0才被引入,虽然Eclipse在早期版本中已经开始使用插件架构。一般地讲,OSGi本来跟eclipse不相关,其也不是为了eclipse而存在,其是独立于eclipse的另一种服务机制,最初是一种为嵌入式硬件开发的,使网络上的服务提供者和使用者交互的注册服务。Eclipse使用OSGi来进行插件的管理。

在OSGi之上所有的组件都是以插件方式提供。其中SWT和JFace提供用户接(UI)口API。Eclipse把基本的用户接口作为工作台API(workbench API)提供出来。

  从Eclipse平台的角度看,SWT、JFace、工作台的部分就是EclipseRCP(Rich Client Platform)。EclipseRCP是基于Eclipse的富客户端技术,Eclipse不仅是一个开发工具,也可以作为一个通用的应用程序平台。可以说EclipseRCP是Eclipse平台的子集,同时其Eclipse自身也是一EclipseRCP的运用实例。 


三、Eclipse扩展点机制(Extension Point)

Eclipse本身就是基于插件机制,插件自身可以对其他插件进行扩展,插件本身定义了“扩展点”,需要为插件添加新功能时就可以利用扩展点。在扩展点基础上可以扩展出插件,而插件又可以有新的扩展点,插件相互连接就是通过扩展点实现的。

【eclipse插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制_第2张图片

扩展功能要按照扩展点(ExtensionPoint)定义的规范进行明确声明,eclipse通过定义扩展点可以进行扩展,每个扩展点都有唯一标识符。在程序执行时,扩展和扩展点的连接才被建立,提供扩展点的插件事先并不知道该扩展点实际被扩展了什么行为。

在plugin.xml文件中主要是由extension元素声明扩展,下面给出plugin.xml文件样例:

<extensionpoint="被使用扩展点的ID">

   ......

</extension>

Elipse平台提供的扩展点有:增加菜单项、增加视图、增加编辑器等。

RCP应用程序启动的过程中,eclipse会寻找扩展点"org.eclipse.core.runtime.application" 对应的类,然后这个类被加载运行。在这个类中,创建一个Display,创建并运行一个Workbench,通过WorkbenchAdvisor配置这个Workbench,WorkbenchAdvisor又是通过WorkbenchWindowAdvisor来实现界面的显示的,然后在这个类里面实现菜单、工具栏等。


你可能感兴趣的:(eclipse插件,内核,扩展点)