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基本框架结构图:

从图中可以清晰地看到:最底层的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本身就是基于插件机制,插件自身可以对其他插件进行扩展,插件本身定义了“扩展点”,需要为插件添加新功能时就可以利用扩展点。在扩展点基础上可以扩展出插件,而插件又可以有新的扩展点,插件相互连接就是通过扩展点实现的。

扩展功能要按照扩展点(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插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制的更多相关文章

  1. 【eclipse插件开发实战】Eclipse插件开发3——OSGi、RCP

    Eclipse插件开发实战3--OSGi.RCP 一.OSGi 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务 ...

  2. 【eclipse插件开发实战】Eclipse插件开发2——SWT

    Eclipse插件开发实战2--SWT 一.SWT简介 SWT(StandardWidget Toolkit) 标准小窗口工具箱,一开源的GUI编程框架,与AWT/Swing有相似的用处,eclips ...

  3. 【eclipse插件开发实战】 Eclipse插件开发6——eclipse在线翻译插件Translator开发实例详解

    Eclipse插件开发6--eclipse在线翻译插件Translator开发实例详解 在上一篇文章中讲到了一个简单的eclipse插件开发实例,主要是对插件工程的基本创建步骤进行了讲解,这篇文章当中 ...

  4. 【eclipse插件开发实战】 Eclipse插件开发5——时间插件Timer开发实例详解

    Eclipse插件开发5--时间插件Timer开发实例详解 这里做的TimeHelper插件设定为在菜单栏.工具栏提供快捷方式,需要在相应地方设置扩展点,最后弹出窗体显示时间. 在上一篇文章里创建好了 ...

  5. 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...

  6. 关于Eclipse中的开源框架EMF(Eclipse Modeling Framework)

    Eclipse项目本身可以划分为4个主要的子项目:Equinox,平台,Java开发工具(Java Development Tools,JDT)和插件开发环境(Plug-in Development ...

  7. 【Maven】Eclipse安装Maven插件后导致Eclipse启动出错

    本文纯属复制粘贴:具体请参照原文: Eclipse安装Maven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning.  解决方法: 1. ...

  8. Eclipse 工作目录被破坏,导致Eclipse 打不开

    由于之前一直使用的的是 visual studio 的开发工具,对 java 的 Eclipse 工具比较陌生,在使用 eclipse 的过程中误删了工作目录的部分文件,导致在在下次启动 eclips ...

  9. eclipse中配置c++开发环境 Eclipse + CDT + MinGW

    转自eclipse中配置c++开发环境 Eclipse + CDT + MinGW 基本框架:Eclipse + CDT + MinGW 背景知识: CDT:CDT 是完全用 Java 实现的开放源码 ...

随机推荐

  1. some cmds,tools and utils man

    NAME stdbuf - Run COMMAND, with modified buffering operations for its standard streams. SYNOPSIS std ...

  2. Oracle SQL_杂记

    1. 查询当前用户角色,当前用户下的表权限以及所有用户表权限 desc user_role_privs;select * from user_role_privs; desc user_tab_pri ...

  3. LeetCode:判断最长前缀

    之前一直忽略了一个问题就是:给定的空字符串数组 char* longestCommonPrefix(char** strs, int strsSize) { char* result; if(strs ...

  4. MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)

    Linux下安装初始化完MySQL数据库之后,使用mysqld_safe启动mysql数据库,如下发现,启动失败 [root@SVNServer bin]# ./mysqld_safe –user=m ...

  5. MacBook Pro使用初体验之Mac快捷键汇总(持续更新中)

    我于近日购置了一台13寸的MacBook Pro高配,打算開始进行iOS开发的学习.Pro的配置情况例如以下: (1)OS X Yosemite ,版本号10.10.3 (2)Retina显示屏,13 ...

  6. poj3040(双向贪心)

    Allowance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1540   Accepted: 637 Descript ...

  7. 【原创】Sublime Text 3快捷配置c++的编译,运行,gdb环境

    打开Tools ->Build System -> New Build System 弹出一个文件,将原有的东西删掉,输入: { "encoding": "u ...

  8. 开源服务器监控工具 — JavaMelody 类 jvm 内在性能(转)

    开源服务器监控工具 — JavaMelody     JavaMelody它能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Sessio ...

  9. 支付宝cookie 是支付密码 不是登录密码

    开发文档/ 手机网站支付 / 产品介绍 开放平台文档中心 https://docs.open.alipay.com/203/105288

  10. mysql user password plugin

    caching_sha2_passwordcaching_sha2_passwordcaching_sha2_passwordcaching_sha2_passwordcaching_sha2_pas ...