Eclipse4 RCP 指南

Eclipse 基于的应用程序体系

一个 Eclipse 应用程序由独立的软件组件构成,Eclipse IDE 可以被看作是特殊的 Eclipse 应用程序,其焦点是支持软件开发。

Eclipse IDE 的核心组件在下图中描述,下图主要是演示同样概念,其显示的关系不是 100% 准确的。

Eclipse IDE 核心组件

本图中最重要的 Eclipse 组件在后续的章节描述,在这些基础组件之上,Eclipse IDE 添加了对于 IDE 应用程序重要的额外组件,例如,Java 开发工具(JDT)以及版本控制支持(EGIT)。

一个 Eclipse RCP 应用程序通常使用 Eclipse 平台同样的基础组件,然后添加额外的应用程序特殊的组件,如下图所示:

Eclipse 平台的核心组件

OSGi 是一个规范,描述 Java 应用程序的模块化方案,OSGi 的编程模型允许开发人员定义动态的软件组件,即 OSGi 服务。

Equinox 是 OSGi 规范的一个实现,在 Eclipse 平台中使用,Equinox 运行时提高需要的框架来运行一个模块化的 Eclipse 应用程序。

SWT 是 Eclipse 使用的标准用户接口组件库,JFace 在 SWT 之上提供一些方便的 APIs,Workbench 为应用程序提供框架,它负责显示所有其它的用户接口组件。

EMF 是 Eclipse 建模框架,提供数据模型建模的功能,然后再运行时使用这些数据模型。

针对 Eclipse 3.x 插件的兼容布局

Eclipse 平台版本 4 采用和版本 3.x 不同的 API,大量 Eclipse IDE 已经存在的插件还是基于 Eclipse 3.x 编程模型。

Eclipse 平台提供一个兼容层,来支持使用 Eclipse 3.x API 的插件可以不加修改的在 Eclipse 4 基于的应用程序中运行。

Eclipse API 以及内部 API

OSGi 运行时允许开发人员标注 Java 包为 API 以及标注包为内部 API,也可能标注 Java 包为临时性 API。这允许开发人员测试这些 API,但指示这些 API 还没有完成。

Eclipse 平台项目标注包要么为公共 API,要么为临时性 API,来让 Eclipse 开发人员可访问所有的 Java 类。如果 Eclipse 平台项目发行一个 API,平台项目会努力保持这些 API 尽可能的长期稳定。

如果 API 是内部但是可访问的,即标注为临时性的,平台团队可能在将来改变这个 API。如果你使用这样的 API,你必须准备好在将来的 Eclipse 发行时调整应用程序来适应。

如果你用非发行的 API,你会在 Java 编辑器中看到一个警告:

The ...is not API (restriction on required project ...)

提示:你可以通过窗口 → 首选项 → Java → 编译器 → 错误/警告,然后设置Discouraged reference(access rules)标志为忽略,来关闭这些警告。

你也可以根据每个项目来关闭这些警告,通过右击项目,选择属性 → Java 编译器,然后用前面一样的路径。你可能必须在 Error/Warning 首选页的上方激活允许项目特殊的设置

Eclipse 插件重要的配置文件

一个 Eclipse 插件有下列的主要配置文件,这些文件在 API 中定义,是插件的依赖。

  • MANIFEST.MF - 包含 OSGi 配置信息。
  • plugin.xml - 可选的配置文件,包含关于 Eclipse 特定的扩展机制的信息。

一个 Eclipse 插件通过 MANIFEST.MF 文件定义了它的 meta 数据,例如它的唯一标识,它的输出 API 以及它的依赖。

plugin.xml 文件提供创建和贡献到 Eclipse 特定 API 的可能性。你可以在这个文件中添加扩展点和扩展。扩展点定义其它插件贡献功能的接口,扩展贡献功能到这些接口,功能可以是代码,也可能是非代码,例如插件可以只包含帮助内容。