【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基本框架结构图:
从图中可以清晰地看到:最底层的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内核结构、扩展点机制的更多相关文章
- 【eclipse插件开发实战】Eclipse插件开发3——OSGi、RCP
Eclipse插件开发实战3--OSGi.RCP 一.OSGi 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务 ...
- 【eclipse插件开发实战】Eclipse插件开发2——SWT
Eclipse插件开发实战2--SWT 一.SWT简介 SWT(StandardWidget Toolkit) 标准小窗口工具箱,一开源的GUI编程框架,与AWT/Swing有相似的用处,eclips ...
- 【eclipse插件开发实战】 Eclipse插件开发6——eclipse在线翻译插件Translator开发实例详解
Eclipse插件开发6--eclipse在线翻译插件Translator开发实例详解 在上一篇文章中讲到了一个简单的eclipse插件开发实例,主要是对插件工程的基本创建步骤进行了讲解,这篇文章当中 ...
- 【eclipse插件开发实战】 Eclipse插件开发5——时间插件Timer开发实例详解
Eclipse插件开发5--时间插件Timer开发实例详解 这里做的TimeHelper插件设定为在菜单栏.工具栏提供快捷方式,需要在相应地方设置扩展点,最后弹出窗体显示时间. 在上一篇文章里创建好了 ...
- 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构
Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...
- 关于Eclipse中的开源框架EMF(Eclipse Modeling Framework)
Eclipse项目本身可以划分为4个主要的子项目:Equinox,平台,Java开发工具(Java Development Tools,JDT)和插件开发环境(Plug-in Development ...
- 【Maven】Eclipse安装Maven插件后导致Eclipse启动出错
本文纯属复制粘贴:具体请参照原文: Eclipse安装Maven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning. 解决方法: 1. ...
- Eclipse 工作目录被破坏,导致Eclipse 打不开
由于之前一直使用的的是 visual studio 的开发工具,对 java 的 Eclipse 工具比较陌生,在使用 eclipse 的过程中误删了工作目录的部分文件,导致在在下次启动 eclips ...
- eclipse中配置c++开发环境 Eclipse + CDT + MinGW
转自eclipse中配置c++开发环境 Eclipse + CDT + MinGW 基本框架:Eclipse + CDT + MinGW 背景知识: CDT:CDT 是完全用 Java 实现的开放源码 ...
随机推荐
- CentOS7配置opencv for python && eclipse c/c++[更新]
更改前的安装过程有些问题,主要是ffmpeg-devel的安装部分,这里重新说一下 两种安装方法: 第一种,直接: # yum install numpy opencv* 这种方法安装了之后,能够在p ...
- mac osx 下编译 OpenWrt
默认的文件系统hfs大小写不敏感.新建一个磁盘镜像文件并合式化为hfs+, 然后挂载到系统中. hdiutil create -size 20g -fs "Case-sensitive HF ...
- 互联网金融MySQL优化参数标准
InnoDB配置 从MySQL 5.5版本开始,InnoDB就是默认的存储引擎并且它比任何其它存储引擎的使用要多得多.那也是为什么它需要小心配置的原因. innodb_file_per_table 表 ...
- IOS之禁用UIWebView的默认交互行为
本文转载至 http://my.oschina.net/hmj/blog/111344 UIKit提供UIWebView组件,允许开发者在App中嵌入Web页面.通过UIWebView组件 ...
- spring 过滤器简介
spring 过滤器简介 过滤器放在容器结构的什么位置 过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet.一个Jsp页面,甚至是一个HTML页面)之前截获进入的请 ...
- ASP.NET MVC4中ViewBag、ViewData和TempData的使用和区别
一.说明 本文章主要是讲解asp.net mvc中ViewBag.ViewData和TempData的使用和区别,ViewBag.ViewData和TempData常常用于将action方法中的数据传 ...
- from memory cache
from memory cache
- go网关
package main import ( "flag" "fmt" "io" "net" "os" ...
- Mac 操作系统安装 SVN server教程(Subversion With Mac OS X Tutorial)
Find recent articles on my github page: rubyrobot.github.io © 2006-2014 Imagine Ecommerce Subversion ...
- ArcGIS10和ArcGIS10.1关于AO Licence初始化的问题
两个版本主要是esriLicenseProductCode.esriLicenseProductCodeArcInfo和esriLicenseProductCode.esriLicenseProduc ...