1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11....

6
1 初识 Eclipse RCP 1.1 Eclipse 平台概述 Eclipse 最初是由 IBM 公司开发的替代商业软件 Visual Age for Java 的下一代 IDE 开发环 它于 2001 11 月贡献给开源社区现在由非营利软件供应商联盟 Eclipse 基金会Eclipse Foundation管理2003 Eclipse 3.0 选择 OSGi 服务平台规范为运行时架构2007 6 稳定版本 3.3 发布 2008 6 月发布代号为 Ganymede 3.4 2009 6 月发布代号为 Galileo 3.52010 6 月发布代号为 Helios 3.6最近发布的 Eclipse 是代号为 indigo 3.7Eclipse 用户界面采用的技术是 IBM 公司开发的 SWT这是一种基于 Java 的窗口组件Java 本身提供的 AWT Swing 窗口组件不过 IBM 声称 SWT 比其他 Java 窗口组件更有效 Eclipse 的用户界面还使用了 GUI 中间层 JFace从而简化了基于 SWT 的应用程序的构建Eclipse 的插件机制是轻型软件组件化架构在富客户端平台上Eclipse 使用插件来提供 所有的附加功能例如支持 Java 以外的其他语言已有的分离插件能够支持 C/C++CDT)、 PHPPerlRubyPythontelnet 和数据库开发插件架构能够支持将任意的扩展加入到现 有环境中例如配置管理而决不仅限于支持各种编程语言Eclipse 的设计思想是 一切皆为插件Eclipse 核心很小Eclipse 的所有功能都以插件的 形式附加于 Eclipse 核心之上Eclipse 的基本内核包括图形 APISWT/JFace)、Java 开发环境 插件JDT和插件开发环境PDE1.2 Eclipse RCP 概述 富客户端平台Rich Client PlatformRCP指的是一种基于 C/S 结构Client/Server桌面应用软件实现Rich 概念是相对于 B/S 结构Browser/Server应用软件的瘦客户端 Thin Client浏览器而言的有时也称为肥客户端Fat Client或传统客户端Traditional Client应用软件早期开发的桌面应用程序大多使用微软 Visual 系列的可视化 IDE Borland 公司的 C++Builder Delphi IDE 来实现虽然 Java Web 开发领域大放异彩但使 Java 开发桌面应用程序一直都饱受指责界面不够美观性能问题没有优秀的界面设计 工具程序编写过于复杂等都阻碍了 Java 在桌面程序领域的发展Eclipse RCP 技术为我们提供了丰富的界面组件SWT JFace 还提供了大量 的基础功能和技术特性例如帮助系统多国语言化跨平台移植开发人员可以基于已 存在的平台构建应用程序以替代原有的从零开始构建复杂的应用程序这得益于平台的供

Transcript of 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11....

Page 1: 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11. 29. · Equinox 负责调查与研究未来版本的OSGi 规范及运行时的相关问题。

第 1 章 初识 Eclipse RCP

1.1 Eclipse 平台概述

Eclipse 最初是由 IBM 公司开发的替代商业软件 Visual Age for Java 的下一代 IDE 开发环

境,它于 2001 年 11 月贡献给开源社区,现在由非营利软件供应商联盟 Eclipse 基金会(Eclipse Foundation)管理。2003 年,Eclipse 3.0 选择 OSGi 服务平台规范为运行时架构。2007 年 6 月,

稳定版本 3.3 发布;2008 年 6 月发布代号为 Ganymede 的 3.4 ;2009 年 6 月发布代号为 Galileo的 3.5;2010 年 6 月发布代号为 Helios 的 3.6;最近发布的 Eclipse 是代号为 indigo 的 3.7。

Eclipse 用户界面采用的技术是 IBM 公司开发的 SWT,这是一种基于 Java 的窗口组件,类

似 Java 本身提供的 AWT 和 Swing 窗口组件,不过 IBM 声称 SWT 比其他 Java 窗口组件更有效

率。Eclipse 的用户界面还使用了 GUI 中间层 JFace,从而简化了基于 SWT 的应用程序的构建。

Eclipse 的插件机制是轻型软件组件化架构。在富客户端平台上,Eclipse 使用插件来提供

所有的附加功能,例如支持 Java 以外的其他语言。已有的分离插件能够支持 C/C++(CDT)、PHP、Perl、Ruby、Python、telnet 和数据库开发。插件架构能够支持将任意的扩展加入到现

有环境中,例如配置管理,而决不仅限于支持各种编程语言。

Eclipse 的设计思想是:一切皆为插件。Eclipse 核心很小,Eclipse 的所有功能都以插件的

形式附加于 Eclipse 核心之上。Eclipse 的基本内核包括图形 API(SWT/JFace)、Java 开发环境

插件(JDT)和插件开发环境(PDE)等。

1.2 Eclipse RCP 概述

富客户端平台(Rich Client Platform,RCP)指的是一种基于 C/S 结构(Client/Server)的

桌面应用软件实现,其 Rich 概念是相对于 B/S 结构(Browser/Server)应用软件的瘦客户端

(Thin Client)浏览器而言的,有时也称为肥客户端(Fat Client)或传统客户端(Traditional Client)应用软件。早期开发的桌面应用程序大多使用微软 Visual 系列的可视化 IDE 或

Borland 公司的 C++Builder 和 Delphi IDE 来实现。虽然 Java 在 Web 开发领域大放异彩,但使

用 Java 开发桌面应用程序一直都饱受指责,界面不够美观、性能问题、没有优秀的界面设计

工具、程序编写过于复杂等都阻碍了 Java 在桌面程序领域的发展。

而 Eclipse RCP 技术为我们提供了丰富的界面组件,如 SWT 和 JFace 等,还提供了大量

的基础功能和技术特性,例如,帮助系统、多国语言化、跨平台移植。开发人员可以基于已

存在的平台构建应用程序,以替代原有的从零开始构建复杂的应用程序,这得益于平台的供

Page 2: 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11. 29. · Equinox 负责调查与研究未来版本的OSGi 规范及运行时的相关问题。

第 1 章 初识 Eclipse RCP   3

应商已经对平台做了大量检验和测试,并且 Eclipse RCP 提供了良好的向下兼容性。随着著名

的 Java 可视化设计软件 WindowBuilder 被 Google 的收购,并且被免费提供给 Eclipse 社区,

进一步推动了 Eclipse RCP 技术的发展,简化了 Java 开发者在界面设计中面临的编码问题。

WindowBuilder 将进一步支持下一个版本 Eclipse 4 的开发。

Eclipse RCP 平台的结构如图 1-1 所示,其中主要包括下列组件:

Platform Runtime:运行期平台,用于启动 Eclipse、运行插件。 ❍

Workbench :Eclipse 工作台(包含视图(Views)、编辑器(Editors)、透视图(Perspe- ❍

ctives))。SWT:可移植构件工具包。 ❍

JFace:JFace 是建立在 SWT 之上的 UI 组件。 ❍

JDT:Java 开发工具集,开发 Java 程序的一组工具。 ❍

PDE:插件开发工具集,开发 Eclipse 插件程序的一组工具。 ❍

图 1-1 Eclipse RCP 平台结构

1.3 Eclipse RCP 的应用

Eclipse RCP 除了在软件开发平台领域有着良好的表现外,在科学技术和信息管理领域也

有着广泛的应用。随着软件开发规模越来越大,整合的技术领域越来越多,软件变得错综复

杂。现有模式的开发技术导致软件开发成本和维护成本的增加,以及软件质量的降低。基于

Eclipse RCP 及 OSGi 技术的模块化、即插即用的设计,可以使用现有的技术体系来完成新功

能的开发。而大量的 Eclipse 子项目提供了诸多技术特性帮助设计者实现不同领域的业务功能,

使其编写的应用程序更容易实现代码复用、版本升级、跨平台移植、多国语言化。这些技术

特性令软件产品可以面向更多国家的软件用户、不同平台的终端,实现一次开发多平台使用,

从而赢得更多的软件市场。

Page 3: 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11. 29. · Equinox 负责调查与研究未来版本的OSGi 规范及运行时的相关问题。

4   第一部分 基 础 篇

图 1-2 是一个 Eclipse RCP 在音乐领域的应用,它可以帮助用户编排和分析曲谱。

图 1-2 基于 RCP 的音乐艺术应用

图 1-3 是一个 Eclipse RCP 在信息管理领域的应用。

图 1-3 基于 RCP 的信息管理系统

图 1-4 是 Eclipse RCP 在色谱、光谱领域的应用,它帮助技术人员进行科学分析工作。

图 1-5 是 Eclipse RCP 在生物、化学科学领域的应用。

在 2012 年的 EclipseCon 会议中,福特汽车公司在大会中演示了如何在汽车中使用即插即

用的 Eclipse 插件开发技术。现代汽车变得越来越智能,因为有越来越多的软件开发人员参与

其中,相信在未来将会开发出更多的基于 Eclipse Plugin 和 Eclipse RCP 的软件产品。

Page 4: 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11. 29. · Equinox 负责调查与研究未来版本的OSGi 规范及运行时的相关问题。
Page 5: 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11. 29. · Equinox 负责调查与研究未来版本的OSGi 规范及运行时的相关问题。

6   第一部分 基 础 篇

自 Eclipse3.0 开始,其内核被移植到 OSGi 框架上,OSGi(bundle)成为插件的同义词。这

个新结构在 MAINFEST.MF 文件中放置了插件的依赖项和库信息,而插件的扩展信息保留在

plugin.xml 文件中。基于 Eclipse 开发插件,基于 Equinox 的 OSGi 实现无疑是最好的选择。

在过去的很多年里,设计模式被软件开发者广泛使用。“优先使用对象组合而非类的继

承”、“面向接口编程,而非面向实现编程”,这类基于编程语言角度的设计经验帮助开发者更

好地设计模块化、松耦合、易于扩展的应用程序,但是在开发大型的软件系统方面,仍然存

在很多困难,使得一些大型的系统难以维护、扩展和管理。目前的设计原则和面向对象的开

发模式,未必能够有助于解决在大型软件系统开发中所面临的复杂性,因为任何技术都有其

适用的范围,只是不同技术所关注问题的层面不同。已有的设计模式有助于解决与逻辑设计

相关的问题,但不利于解决模块组件设计中所面临的挑战。

什么是 Java 平台上的软件模块?一个模块是一个简单的“软件组件。”不幸的是,这不足

以区别于其他软件组件,例如类、包、服务,甚至应用程序。因此,我们需要把重点放在如

何定义模块上。一个软件模块应该是可部署的、可管理的、可复用的、可组合的,无状态的

单位软件能够为客户端提供了一个简洁的访问接口。类似的软件单元组件包括 :EAR、WAR和 JAR 文件。在开发过程中,将系统分割成多个模块有助于缓解复杂的开发任务所带来的问

题。这包括改善构建效率,允许开发者独立地开发自主(松耦合)的模块,并划定模块的开

发边界。

OSGi 是基于 Java 的服务平台规范,OSGi 的本质是将 Java 面向对象的开发转向面向组

件和服务的开发。OSGi 框架提供了一套完善的机制用于管理和控制组件(bundle)和服务

(service)的生命周期,以及组件和服务在其生命周期内的交互。由于具有服务组件模块化、

动态加载应用程序等优点,OSGi 技术正被越来越多的行业关注,如嵌入设备制造业、汽车制

造业、企业应用等。

与 Eclipse 一样,Equinox 也采用天文名词,指节气中的昼夜平分时刻,是春分或秋分。

Eclipse 通过开放服务网关协议(Open Services Gateway Initiative,OSGi)来替换先前版本中

不稳定的 Eclipse 插件技术,从而实现了一次巨大飞跃。从程序的角度来说,Equinox 项目是

OSGi R4 核心框架规范的一个实现,它实现了可运行基于 OSGi 系统的各种可选的 OSGi 服务

和其他基础设施。

简而言之,Equinox 项目为开发者提供一流的 OSGi 技术实现,并作为 Eclipse 动态基础

架构的默认实现。作为 Eclipse 中的一部分,Equinox 负责开发和提供 OSGi 框架实现,并为

Eclipse 的其他模块所使用,具体情况如下:

Equinox 实现了 OSGi 规范(包括 EEG、MEG、VEG)的所有方面。 ❍

Equinox 负责调查与研究未来版本的 OSGi 规范及运行时的相关问题。 ❍

Equinox 将非标准但十分重要的基础架构转化成可基于 OSGi 的系统进行运行和管理。 ❍

Equinox 为 Eclipse 的运行和基础使用实现关键的框架服务和扩展,比如 Eclipse ❍

Adaptor 和 Extension Registry 等。

Page 6: 1.1 Eclipse 平台概述images.china-pub.com/ebook3020001-3025000/3020847/ch01.pdf · 2012. 11. 29. · Equinox 负责调查与研究未来版本的OSGi 规范及运行时的相关问题。

第 1 章 初识 Eclipse RCP   7

1.5 SWT 与 JFace

SWT(Standard Widget Toolkit)最初是由 IBM 开发的一套用于 Java 的图形用户界面系统,

用来与 Swing 竞争。而开源集成开发环境 Eclipse 就是通过 Java 和 SWT 开发的。SWT 是一个

窗口构件集和图形库,它集成了本机操作系统提供的 GUI API。JFace 是建立在 SWT 之上的 UI 部件,是 Eclipse 组织为了开发 Eclipse IDE 环境所编写

的一组底层图形界面 API,其底层实现为 SWT。而 JFace 使用 SWT 却不将其隐藏,它扩展了 SWT 并能与 SWT 交互操作。JFace 工具箱提供了一组功能强大的用户界面组件,开发人员可

以轻松地在独立应用程序中利用这些组件,以简化常见的 UI 编程任务。

1.6 小结

这一章我们学习了一些 Eclipse 的相关概念。因为 Eclipse RCP 是基于 Eclipse 平台进行开

发的,所以了解 Eclipse 的技术概念是非常有必要的。国外已经有了一些关于开发 Eclipse RCP应用程序和 Eclipse 插件程序的技术书籍和相关教材,但是国内多年来依然没有将相关技术较

好地推广。这主要受到几个方面的制约:语言障碍,大多数技术文档都以英文和德文为主,在

Eclipse 社区中也是国外开发者较为活跃 ;辅助开发插件、第三方技术较多,有些属于 Eclipse基金会的项目,有些受第三方公司、组织或个人支持;很多关于插件开发的资料涉及的内容和

技巧并不太适合在基于 Eclipse RCP 技术开发业务平台中参考。

Eclipse 下的项目非常丰富,涵盖了众多技术领域,开发者既可以将它作为一个软件开发

平台来使用,也可以下载 Eclipse 的项目的源码进行分析和学习,进一步掌握 Eclipse 插件开发

的各种技巧。