eclipse插件开发简介

 

1.   概述

eclipse最初是由IBM公司开发的下一代IDE开发环境,现在由eclipse基金会管理。eclipse已经成为最流行的Java IDE

 

说起eclipse,就离不开OSGi。自从eclipse3.0开始,其内核被移植到OSGi框架上,OSGibundle也成为插件的同意词。可以说,想要深入地了解eclipse插件开发,就必须同时对OSGi的相关内容进行深入了解。

 

2.   eclipse体系结构

eclipse不是一个一整块的程序,而是一个包含插件载入器和数百个插件包围的小内核。每个插件以结构化的方式在整体中发挥作用,可能依赖于其他插件提供的服务,也可能提供其他插件需要的服务。

 

插件结构

插件的依赖项和服务是在MENIFEST.MFplugin.xml文件中声明的,在启动时,插件载入器为每一个插件扫描MANIFEST.MFplugin.xml文件,然后创建一个包含该信息的结构。

 

工作区

eclipse IDE中可以显示和修改工作区中的文件。工作区中一个目录层次结构,包含用户文件,项目和源码;也可以包含插件状态信息,首选项等。工作区目录层次结构中的插件状态信息只与该工作区关联,而IDE,插件,静态资源和插件配置文件在多个工作区中共享。

 

3.   eclipse相关内容

eclipse的设计思想是:一切皆为插件。eclipse的核心很小,他的所有功能都是以插件的形式附加于eclipse核心上。

 
eclipse插件开发简介_第1张图片
 

 

那么eclipse的开发需要了解哪些基本知识?

 

OSGi

属于eclipse开发的基础,对于简单的应用还可以无视OSGi的存在,对eclipse插件开发越深入就越需要了解这部分内容。

 

OSGi环境中,需要了解bundle之间是如何协作,产生依赖的,怎样使用声明式服务或BluePrintbundle之间的关系进行解耦,如何对OSGi FrameworkBundleService进行生命周期管理。

 

学习OSGi相关内容推荐读这本《OSGi实战》:

 

SWT/JFace

Sun开发了可移植的,仿真的窗口小部件库,被称为JFC,更普遍的名称是Swing;但Swing应用程序更像是Swing应用程序,而不是平台原生的应用程序。

 

SWT被设计为占有尽量少的JVM内存,经过一段时期的发展,SWT发现其在RCP中开发应用程序的开发者中受到大量欢迎,它是快速的、原生的、多平台的,它在一个平台尽可能的使用原生窗口小部件,并在没有相应窗口小部件的平台上模拟它们。

 

虽然SWT提供了原生系统窗口小部件的直接接口,但它被局限于只能使用简单数据类型,主要有字符串,数字和图像,这些都比较简单;但如果处理列表、表、树和文本部件中需要用到的面向对象的数据时,SWT是严重不匹配的,于是便提供了JFace查看器,为SWT提供了面向对象包装器。

GEF

图形编辑框架(Graphical Editing Framework)提供了用于用户信息进行图形表示的一个开发框架,用于创建动态的,交互的图形用户界面元素。GEF框架设计为使用MVC框架,模型保存显示的信息,并在会话之间保存,视图在屏幕上呈现信息,提供基本的用户交互,控制器协同模型和视图的活动。

4.   eclipse插件的开发

eclipse插件开发必须建立在PDE环境(plugin develop environment)下,其中会存在对eclipse插件开发的rcp项目以及一些其他附加项目。

 

 

eclipse的扩展性

总体而言,eclipse本身就是一个开放的平台,其中的各个部分:菜单,工具栏,视图,透视图,编辑器,右键菜单,按钮,资源,首选项,这些都可以成为eclipse插件开发扩展的目标,这其中所有扩展部分都可能被讲解成单独的一章。

 
eclipse插件开发简介_第2张图片
 

 

eclipse不仅对外发布了这些扩展点,还允许用户自定义扩展点,让其他人继续在插件上进行扩展。

 

eclipse插件内容

典型插件结构的文件包括以下内容:

Java类——组成插件的实际Java类,位于插件JAR文件的标准java目录包结构中;

图标等资源——图标、图像等资源一般位于iconsimages文件夹下,通过Activator中的方法访问;

META-INF/MANIFEST.MF——描述插件运行时特性的文件;

plugin.xml——描述扩展和扩展点的XML配置文件;

 

eclipse的可重用性

eclipse中的RCP项目,你可以使用任何当前eclipse开发环境存在的bundle(还可以额外设置独立的Target Platform最为运行环境),也就是说,eclipse暴露出来的工具类都可以被拿来使用,并且可以拿到源代码。

 

插件是基于一个或多个作为eclipse一部分的基础插件创建的,被分散成几个组,并更进一步地分离成UICoreUI插件包含用户界面的内容或依赖于其他完成该任务的插件,Core类插件可以在没有用户界面的环境中使用。

 

插件分类

含义

Core

普通级别非UI插件组,组成了基本服务,如扩展处理,资源跟踪等

SWT

标准窗口小部件工具集,与底层操作系统紧密关联,但具有与OS无关的API

JFace

基于SWT创建的附加UI功能的通用库

GEF

图形编辑框架减轻了Rich Client的开发流程

Workbench Core

提供eclipse ide本身的相关的非UI行为,如项目,项目属性和构建器等

Workbench UI

提供eclipse ide本身相关的UI行为插件,如编辑器,视图,透视图,toolbar

Team

提供服务的插件组用于集成源码控制系统至IDE

Help

提供作为eclipse ide一部分的非UI的帮助

你可能感兴趣的:(eclipse,osgi,plugin,RCP,pde)