Eclipse plugin

好久没有更新公众号内容,因为实在太忙了,刚进公司需要学习的东西太多了。今天就谈及最近刚开始学习的eclipse plugin开发技术。先对其做下基本介绍,后续会做些Demo.

Eclipse platform 最初是由IBM等大公司协作开发,后开源出来成为独立社区进行发展

Java Eclipse IDE只是Eclipse platform的一个应用,eclipse还有很多的优秀的应用。如GEF,EMF,程序开发框架,生命周期管理,RCP等

SWT(standard widget toolkit)是Eclipse 开发人员开发的,与sun开发的AWT(abstract widget toolkit)和Swing不同,它结合了两者的优点。如果对应的操作系统有点控件,就会直接调用,否则就会像Swing一样绘制。不管是美观上和性能上都远远优于他们。AWT是使用各种平台图像控件的交集,能使用的控件相对较少,Swing可以帮助用户“画”出想要的控件,但是缺点是脱离操作系统控件的支持,必须自己处理消息处理机制,从而使得性能受到影响。

JFace是一套基于SWT的工具箱。它将一些常用的界面操作包装了起来,进行了更高层次的抽象,使得开发人员可以更多的关注业务的逻辑。JFace和SWT是协同工作的。JFace为应用程序中一些常见的功能提供了实现框架,如对话框,创建向导(Wizard)和首选项设置(preference). 还有两个非常优秀的功能:操作(Action)机制和查看器(Viewer)机制。

是对操作的封装,使用户的操作和界面的控件解耦,这样可以达到操作与任意想要的控件进行关联,重用操作。

是对树(tree)、表 格(table)、列表(list)做的包装,使得使用起来更加便捷。viewer 使用MVC模式,即底层数据的改变会及时触发显示界面的改变。

扩展点(Extension point)和扩展(Extension)

Eclipse为了处理模块之间的依赖关系,提出了扩展和扩展点的概念。每一个希望被其他程序模块扩展的模块都需要声明一系列的扩展点,以供其使用。扩展点提供功能服务,扩展使用其功能。遵循这种可扩展的机制,则称为plugin插件。

插件技术

优点:系统结构简洁,可扩展,易维护。

缺点:插件数目庞大,对性能影响巨大。

解决办法:延迟加载(lazy loading)(扩展的声明和实现分离(被称为Eclipse Runtime)),即第一次使用时才会加载到内存中。

扩展和扩展点的声明,都遵循特定的规范的XML文件完成,这些文件被称为“清单(Manifest)”,清单中指定了具体的实现代码,清单中描述了插件能够做什么,而代码则完成具体的实现。系统启动时,只需要搜索所有的清单建立一张索引表,就能知道系统中的所有插件及所能提供的服务,而不需要一次性加载,从而提高系统的性能,减轻负载。

OSGI开放式服务网关协议(Open Services Gateway initiative)

eclipse开发人员对内核进行重新构建,框架被称为Equinox,支持运行时对模块的动态增加和删除。

Eclipse RCP 富客户端平台

为用户提供丰富功能体验的客户端程序,属于桌面程序而非Web程序,可以短暂的脱离网络运行,界面也更美观,功能更丰富。且可能具有一定的数据缓存能力和业务计算能力以减轻服务期端的负载,还可以有一些辅助功能,与操作系统的图像平台交互,如托盘显示,新版本自动升级等。

RCP包含了Eclipse平台最基本的核心功能模块:基于OSGI的Equinox,SWT/JFace, eclipse UI and Runtime 模块。

EMF eclipse建模框架(Eclipse Modeling Framework)

目的是简化建模工作。可以导入UML类图自动生成实现代码,此处不做过多研究。

11. GEF图形化编辑框架

图形化编辑可以直观显示模型对象和属性之间的关系,如UML类图设计、工作流图设计等。GEF方便开发者开发基于RCP支持图形化编辑界面而设计的一套框架。可以开发任何和图形界面相关的工具。GEF开发了一套基于SWT的轻量级的绘图系统称为Draw2D,Draw2D所有操作都基于一个SWT的Canvas对象,在Canvas上利用划线,填充等基本操作进行画图。也是基于MVC模式。