Eclipse RCP application ,RCP(Rich Client Platform)也就是我们常说的富客户端平台, 是一种基于eclipse platform框架的独立的应用程序。Eclipse 不仅仅是我们耳熟能详的IDE工具,也是一种开发框架,是IBM贡献给全人类宝贵财富。本文将从Eclipse结构方面开始价绍。
2 Eclipse 的架构
2.1 基于application 的 Eclipse 架构
完整的Eclipse是一个由一个个的组件共同组合而成的,我们口中常说的Eclipse其实是Eclipse IDE,他是一个专注于软件研发工作的特殊的Eclipse Application。Eclipse本身也是一个开发Application的框架。
Eclipse 的IDE的核心组成如下图所示,但下图也仅仅只是表明一个大致的结构概念,组件之间的关系并不是完全准确的:
一般的每一个Eclipse Application 都是用了这些基础组件,并在基础组件上添加额外的模块,来完成特殊的任务。我们所熟知的Eclipse IDE是在上图所示的组件结构之上又增加了额外的模块,比如GIT, JDT
2.2 Eclipse Platform的核心组件
这里不得不提的就是OSGi。OSGi是java application开发中的一种规格模块,OSGi模块允许我们动态定义软件组件,比如: OSGi服务,Equniox是一种OSGi的实现组件,并在运行时由Eclipse Platform所使用,这种Equniox runtime为运行一个Eclipse Application 模块了必要的API和Framework。
- SWT(Standard Widget Toolkit)是Eclipse所使用的一个标准的用户交互组件库;
-JFace 是在SWT的基础上对一些控件进行了封装,丰富并优化了SWT的功能,为开发提供了更加方便的API; - Workbench则为Eclipse Application提供了运行框架,他负责展示所有的用户界面。
EMF (Eclipse Model Framework)为Eclipse Application提供了功能模型,数据模型。
2.3 Eclipse API和 Internal API
一个OSGi运行时环境允许开发人员将java包标记为Public API和Provisional API。从字面意思不难理解:- Internal API是内部的私有的API,对外是不可见的;
- Provisional API是为了测试的API,是可见的但也是不稳定的;
- Public API是开放的,稳定的API,允许其余组件反复使用的API;
Eclipse platform将java包标记为public API或者Provisional API是为了让开发人员访问到所有的java文件,若Eclipse 发布一个public API那么Eclipse Platform团队将会尽可能保持该API的稳定性。
若一个API被标记为Provisional API, 虽然我们可以访问到,但是尽量不要去使用。这样的标记意味着Eclipse Platform团队随时有可能会去改变这个API,一旦我们使用了这样的API,最好做好随时修改代码的准备,如果项目庞大,也许就万劫不复了······
2.4 Eclipse plug -in 的配置文件
一个Eclipse Plug-in有如下的文件,这些文件定义了API和plug-in的依赖关系
- MANIFEST.INF:包含了OSGi的配置信息;
- plug-in.xml:是一个可选的配置文件,包含了Eclipse 的特殊的扩展机制的信息。
一个Eclipse plug-in可以定义自己的元数据(Meta data) ,如同插件本省的ID, 他可以通过MENIFEST.INI发布自己的API 和依赖。
Eclipse plug-in机制提供了为插件本省创建或者为Eclipse本身提供代码贡献的机制,通过在plug-in.xml的配置文件中天剑Extension-point为别的插件提供贡献代码的接口;通过Extension为这些接口提供实现,可以在插件本省实现也可以在别的插件中实现。这种机制是非常灵活的。