您好,欢迎访问三七文档
1页一.RCP简介1.RCP简要介绍富客户端(RCP)这个词早在上个世纪90年代初,人们还在利用VB,dephin开发桌面应用程序的时候就已经出现了。随着桌面应用程序数量不断增长,各种各样的应用程序孕育而生,小到Windows自带的扫雷游戏,大到企业级桌面ERP系统,桌面应用充斥着我们的生活,也就是这样,我们更加渴望能得到更加丰富(Rich)的用户体验。富客户端提供给用户高质量的用户体验,能让界面元素更加丰富,用户更容易操作,使应用程序的设计贴近用户,并且,由于富客户端采用了本地接口的调用,而不同于基于Web浏览器的网上作业,也让富客户端的处理速度比起B/S结构的应用速度快。好的富客户端,提供了例如拖拽操作、系统剪切板、导航、用户自定义等UIs元素,让程序的用户界面(UIs)更为人性化。随着桌面应用的增加,RCP技术也随之完善。UI设计者可以利用各种界面设计工具,轻松地设计出完美的用户界面,并且,这些成熟的设计开发工具,也让开发者提高模块的复用性,缩短了开发时间。早期的富客户端,开发者把复杂的业务逻辑和操作,紧紧地和系统以及用户界面本身粘在了一起,这使得他们的应用维护、扩展成本大大增加,也使得这些开发者不得不减少应用的许多功能,而把更多的精力放在了创建用户界面和连接数据库等工作上。当中间件的出现,提供给了开发者许多框架以及基础设施,这才使得开发者从那些繁琐的事务中解放出来,专心研究业务逻辑。用户对于那些又好看又好用的桌面应用程序可谓是情有独钟,而IT管理者却发现,想要为用户打造这么一个即好看又实用的桌面应用,虽然不是什么难事,但是却存在着许多隐形的消耗支出和潜在的危险,就拿自动部署和升级来举例,往往开发人员会让用户变相地自动去安装某些应用,或者删除移动一些文件,更可怕的是在安装了某些新的应用后,那些本来共享的数据源却被覆盖了。2页随之而来的Web应用(或者称为痩客户端)称可以解决早期RCP带来的许多问题,就拿上面安装部署升级更新为例,Web应用由于是集中在服务器进行了更新,而只要客户端拥有了浏览器就可以去访问服务器、执行也取流程,这就免去了安装部署的麻烦,并且,若我们需要更新我们的业务逻辑,我们只要去更新服务器就可以了。虽然这减少了维护成本,但是用户却无法得到良好高速的交互以及人性化的UI。虽然减少成本是好事,但是由于Web应用本身的特点是基于网络的,那这种请求/响应的交互方式需要基于良好的网络环境才能保证和用户之间的交互达到昀好,并且由于用户的需求日趋复杂,用户对交互的要求也越来越高,Web应用慢慢呈现出捉襟见肘的态势——很多高效率的用户交互性无法实现,用户新的要求也开始无法满足了。如今,用户的需求以及以上的这些问题,让我们的应用开发又返回到了桌面应用上来。各种行业领域的业务越来越复杂,数据量也越来越大,这也开始需要在各个应用系统之间进行整合,Web应用开始力不从心了。富客户端的良好特性恰恰能很好地解决这些问题。但那些导致早期采用痩客户端的部署升级问题呢?是的,但是如今提出的分布组件式的应用系统很好地解决了部署和升级这一问题,正如Eclipse那样,是这种分布组件应用的杰出代表。我们接下来将会讲述什么是Eclipse。2.Eclipse和RCP2.1.Eclipse介绍Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。更多信息可以去Eclipse的主站点获得:。当我们提到Eclipse的时候,很多Java开发者的第一个反映就是那个性能良好,界面漂亮,Debug功能奇佳的JavaIDE工具。我们不否认Eclipse常常是作为一款优秀的IDE出现在开发者面前的,不仅仅是Java的IDE,Eclipse还可以是C语言的IDE、Python的IDE,或许以后还可以是其他什么3页语言的IDE。但这些IDE严格来说,都是EclipseRCP应用。真正的Eclipse,是一个提供了完善插件机制的RCP平台,它以SWT/JFace座位界面元素组件,提供给用户一个名为Workbench的UI平台,加上它本身优秀的插件机制,能够构造出扩展能力强、性能优秀、并能提供给用户良好UI体验的RichClientPlatform。Eclipse分为几大部分:¾Workbench工作台工作台为Eclipse提供用户界面。它是使用标准窗口工具包(SWT)和一个更高级的API(JFace)来构建的;SWT是Java的Swing/AWTGUIAPI的非标准替代者,JFace则建立在SWT基础上,提供用户界面组件。SWT已被证明是Eclipse昀具争议的部分。SWT比Swing或SWT更紧密地映射到底层操作系统的本机图形功能,这不仅使得SWT更快速,而且使得Java程序具有更像本机应用程序的外观和感觉。使用这个新的GUIAPI可能会限制Eclipse工作台的可移植性,不过针对大多数流行操作系统的SWT移植版本已经可用。Eclipse对SWT的使用只会影响Eclipse自身的可移植性——使用Eclipse构建的任何Java应用程序都不会受到影响,除非它们使用SWT而不是使用Swing/AWT。如果想要获得更多SWT的信息,请登陆获得更多信息。¾Workspace工作区工作区是负责管理用户资源的插件。这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。¾Help帮助系统帮助组件具有与Eclipse平台本身相当的可扩展能力。与插件向Eclipse添加功能相同,帮助提供一个附加的导航结构,允许工具以HTML文件的形式添加文档。4页¾Team团队支持系统团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所使用的任何版本控制系统(如果有的话)交互。大多数插件都不需要与团队支持组件交互,除非它们提供版本控制服务。¾Platformrun-time运行平台平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。除了内核外,其他每样东西都是作为插件来实现的。在上面的介绍中,我们频频用到了“插件”(Plugins)这一词。我们会在下一节讲解什么是Eclipse插件。2.2.Eclipse插件和RCPEclipse的价值是它为创建可扩展的集成开发环境提供了一个开放源码平台。这个平台允许任何人构建与环境和其它工具无缝集成的工具。工具与Eclipse无缝集成的关键是插件。除了小型的运行时内核之外,Eclipse中的所有东西都是插件。从这个角度来讲,所有功能部件都是以同等的方式创建的。从这个角度来讲,所有功能部件都是以同等的方式创建的。但是,某些插件比其它插件更重要些。正如上节图中所示,Workbench和Workspace是Eclipse平台的两个必备的插件——它们提供了大多数插件使用的扩展点,如图1所示。插件需要扩展点才可以插入,这样它才能运行。5页图2.2.1插件结构图每一个plug-in都用一个目录包起来,而且起目录名也是有讲究的,比如plug-in的名字叫org.eclipse.swt.example,版本是1.0.0,那这个目录名就是org.eclipse.swt.example_1.0.0.而一个plugin工程目录下,可以发现总有一个文件叫一个叫plugin.xml,plugin.xml文件是一个描述插件的配置文件,它将插件的许多扩展信息、版本、classpath等插件运行必须的东西都包括进来了,而在新版本的Eclipse中,plugin.xml更多地是描述插件的扩展信息,而其他比较重要的信息都收录到了MF文件当中。这里我们就不详细讲述如何去构建一个插件工程并生成插件了,我们会在后续的章节里介绍。我们从上面的图了解到了Eclipse插件的简单机制,现在我们可以看看下图:6页这个图是第一节图的一个扩充。我们可以看得出来,Eclipse所带得JDT(Java开发工具)以及PDE(插件开发工具),实际上都是以插件形式存在的,也就是说,如果我们把整个Eclipse的JDT和PDE等和核心组件无关的插件清楚后,那这时候的Eclipse就是一个完整意义上的RCP平台了,但是没有任何应用而已。正如上面所说“Eclipse的价值是它为创建可扩展的集成开发环境提供了一个开放源码平台。这个平台允许任何人构建与环境和其它工具无缝集成的工具。”,Eclipse其实本身并不能做什么,它只是提供了这么一个平台给开发者,但是它所提供的“无缝集成”也就是它具有的插件机制,正是我们开发RCP应用时候昀需要的东西,我们可以利用它的插件机制,对我们的RCP应用进行扩充以及升级,而这些操作对原有的系统是不会有什么损害的。正因为Eclipse的插件机制有如此强大的功能,所以Eclipse才逐渐成为Java开发者开发RCP应用的首选平台。2.3.Eclipse的RCP历程Eclipse并不打算先从一开始就建立一个RCP平台的,相反,它的目标是建立一个整个开发工具的平台。Eclipse做为RCP出现是在Eclipse2.1版本发布的时候而提出的,这一举动说明了EclipseIDE本身是专业、漂亮、性能优良的,一些前卫的开发者指出,这一架构容易扩展,能够吸引更多的人在上面为其开发。事实上他们所说的话都灵验了。7页Eclipse3.0是使得Eclipse成为RCP一个重要的里程碑。这一版本中,Eclipse将许多UI部分的组件都进行了修改,让他们能够用户自定义化,并且3.0在更新、安装方面引入了OSGi机制,也就是这两大变化,使得Eclipse真正成为了RCP。2.4.EclipseRCP应用介绍¾jLibraryjLibrary是一款开源的CMS系统,它将自己的CMS编辑客户端放在EclipseRCP上来做。¾NOAOfficeIntegrationEditor这是集成了NOAOffice的RCP应用,能够让OpenOffice操作集中到RCP上来。8页.¾NomadPIMNomadPIM是一款简易的个人信息管理系统,可以对个人信息例如日程、支出、日记等进行管理。9页2.5.进一步了解EclipseRCP2.5.1.Eclipse插件我们近距离看看Eclipse插件。Eclipse插件其实和一般的Java工程类似,但是不同于普通的Java工程的是,Eclipse插件工程的组织安排都有一些特殊的配置文件进行维护。一个插件工程是有一些列的Java文件和一个进行描述和连接其他依赖插件的manifest文件组成,其中还包括一个名位plugin.xml的配置文件,该文件是描述该插件项目具体扩展了哪些Eclipse的扩展点。下图是一个Eclipse工程的截图:10页插件工程包括有代码或者一系列的资源文件,例如图片、Html文件等、Web页面、文档等,如上图所示,该插件工程的代码包含在org/eclipse/ui..文件架下,另外还包括了about.html文件以及plugin.properties资源文件。请注意该工程下的plugin.xml文件,从Eclipse3.1开始,大部分信息比如classpath、依赖插件项等信息,都储存在了manifest.mf文件中,plugin.xml的功能延续了Eclipse以前的扩展点描述以及扩展点的定义。2.5.2.EclipseRCP系统概要EclipseRCP整个系统又是什么样子的呢?昀顶层的文件架是RCP安装目录,它的子目录中包含了一个plugins目录,这里是所有RCP所需要的plugin,以及开发者所部署的plugin。此外还有一些RCP的启动代码和可执行文件eclipse.exe。11页二.EclipseRCP开发(1)1.简单CRM系统我们将通过利用Eclipse构建一个简单的CRM系统RCP应用,来深入讲解EclipseRC
本文标题:RCP开发入门
链接地址:https://www.777doc.com/doc-4209417 .html