`
holmessong
  • 浏览: 14778 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

[转载]Eclipse RCP:用于构建平台的平台

阅读更多

                                                                           Eclipse RCP:用于构建平台的平台

文章来源:BEA中国

技术存在着一定的周期性。在经历了一段由瘦客户端统治的时期后,富客户端技术开始了它的回归。大量的组织正在将它们的应用程序构建成富客户端,其中许多组织将其应用程序建立在RCP(Eclipse Rich Client Platform)的基础上。术语富客户端首先表明此应用程序为用户提供丰富的体验;其次,它还表明此应用程序是某台服务器的客户端。虽然富客户端并不必须具有对应的服务器组件,但是它们通常会有对应的服务器组件。

  富客户端在很多方面与胖客户端类似。它们两者都能为用户带来本地桌面体验,并提供那些通过瘦客户端技术很难、不方便或不可能交付的信息和功能。然而,富客户端可提供更多好的特性。胖客户端通常是一个难以部署和更新的大型单体应用程序,而富客户端在体积上更为轻巧,并且是基于部署和更新相对容易的组件模型的。从历史上来看,胖客户端是特定于平台的;而当今的富客户端技术发挥了底层平台的强大功能,同时隐藏了底层平台的细节,从而允许开发人员将精力集中于任务而不是各种特殊平台的特殊细节。

  相对于胖客户端,富客户端还具有更好的可伸缩性。传统上,胖客户端直接与数据库相连接。这样就限制了胖客户端的运行环境(防火墙可能会限制胖客户端与数据库之间的连接),同时应用程序的可伸缩性(客户端与服务器之间的连接总数)也可能会受到数据库的限制。富客户端通常利用应用服务器,后者负责建立到数据库的连接。这种配置非常灵活(防火墙友好的)并且具有高度的可伸缩性。当然,技术中并没有必然限制胖客户端与应用服务器进行通信的东西,只不过在胖客户端技术流行的时候,应用服务器还没出现罢了。

  没有规则规定富客户端应用程序必须是某台对应服务器的客户端。许多利用富客户端技术的组织正在构建健壮、可扩展、可更新、本地化的独立应用程序。同样,虽然富客户端通常利用应用服务器,但是并不存在要求必须这么做的规则或技术限制。没有理由说富客户端应用程序不能直接访问数据库。

  富客户端技术代表了胖客户端与瘦客户端二者优势的结合:丰富的用户体验、高可伸缩性、平台独立,以及非常易于部署和更新。

  Eclipse RCP是一项位于Eclipse平台核心的功能。大多数人想到Eclipse时,他们会想到Java集成开发环境(IDE)。如果您将Eclipse中关于IDE的内容剥去,剩下的就是一个提供基本工作台功能的核心,这些功能包括对可移动和可叠加的窗口组件(编辑器和视图)、菜单、工具栏、按钮、表格、树形结构等等的支持。这个核心功能就是Eclipse RCP。

  Eclipse RCP为应用程序开发人员提供了:

  • 应用程序和特性的一致且本地的外观
  • 公共应用程序服务,例如窗口管理、更新管理、帮助和选择管理
  • 本地的外观,利用Windows、Mac OS X、Linux、Solaris、HP-UX、AIX和嵌入式设备上的实际平台窗口部件
  • 标准化的组件模型
  • 普及的可扩展性
  • 整合的更新机制
  • 顶级开发工具(Eclipse 软件开发包(SDK)是世界级的软件开发环境)

  尽管使用这个术语事实上是不合适的,但Eclipse RCP仍可以被视为构建富客户端应用程序的中间件。它提供应用程序所需的基础设施,从而允许开发人员将精力集中于核心应用程序功能而不是细节。别再浪费时间了:立即使用Eclipse RCP吧。

组件

  Eclipse RCP由许多组件构成,每个组件负责整个环境中相应部分的功能。事实上,Eclipse RCP几乎所有的部分都是由组件构成的;除了少量的引导代码,RCP的每一部分都是一个组件。在Eclipse世界中,组件更多时候是被称为插件(或者在OSGI词汇中被称为包裹)。术语“插件”表明了这项组件功能在某种程度上属于二级功能,或者它只是内置功能的一个附加物。但事实并非如此;Eclipse RCP对待所有的插件都是平等的,内置和定制插件之间并没有明确的概念界限。您创建的用于实现应用程序行为的插件可与构成Eclipse RCP的插件一起运行。

  通常,富客户端应用程序的开发都是从单一插件开始的。在一个单独的插件中,您可以为您的应用程序定义整个用户界面、业务逻辑和对象模型。创建一个新的Eclipse RCP应用程序非常容易,您只需选择菜单项File>New>Project...、选择创建新的Plug-in Project(插件项目)、然后遵循出现的向导中的步骤。在向导的Content(内容)页面上,对于问题“Would you like to create a rich client application?(您是否希望建立一个富客户端应用程序?)”,记得选择“Yes(是)”。图1中显示的是向导的Templates(模板)页面;在这里我们选择创建“RCP application with a view(带有视图的RCP应用程序)”。

Eclipse RCP:用于构建平台的平台图-1

图1. New Plug-in Project向导的Templates页面

  这将创建一个包含RCP应用程序所需部分的新插件,其中包括工作台(菜单栏和工具栏)设置和包含一个表格的单一视图(参见图2)。

Eclipse RCP:用于构建平台的平台图-2

图2. 向导创建了一个具有全部功能的RCP应用程序

  向导生成了以下类:

Application.java

  生成的Application类包含一个单一方法,run(Object args),此方法负责运行应用程序(真奇怪)。这个方法引导并打开工作台窗口,当它退出时,应用程序将关闭。

ApplicationActionBarAdvisor.java

  ApplicationActionBarAdvisor类负责构建菜单栏、工具栏和状态行。这一生成的类会创建一个带有单一File菜单(其中包含Exit项)的菜单栏。您可以利用fillCoolBar(ICoolBarManager coolBar)方法为您的工作台窗口添加一个工具栏。类似地,您也可以用fillStatusLine(IStatusLineManager statusLine)来为工作台窗口添加一个状态行。

ApplicationWorkbenchAdvisor.java

  ApplicationWorkbenchAdvisor类提供大量到应用程序生命周期的钩子。例如,您可以添加程序启动或关闭时调用的方法。生成的实现只是指定呈现给用户的初始视图。

ApplicationWorkbenchWindowAdvisor.java

  和ApplicationWorkbenchAdvisor类似,ApplicationWorkbenchWindowAdvisor类提供到工作台生命周期的钩子。您可以添加创建、打开、还原或关闭工作台窗口时调用的方法。生成的实现提供一个preWindowOpen()方法,此方法设置窗口的初始大小和标题,以及是否隐藏工具栏和状态行(二者都是隐藏的)。

Perspective.java

  Eclipse SDK提供了大量的视图。生成的应用程序包括一个视图;您可以根据要求指定额外的视图。生成的视图隐藏了编辑器区(即,编辑器在视图中是隐藏的)并且会添加由向导生成的视图。这种视图被设置为固定的:它的视图没有熟悉的标题栏,而且不能移动。用户可以通过将设置从false修改成true(和为应用程序添加一些新的视图)来随意调整视图的位置。

View.java

  生成的View类包含了一个带有少量硬编码条目的表格。您可以利用它来制定您的应用程序外观。如果表格是您所需的,您可以通过将其与您的对象模型相连接来定制它,或者使用一个或多个窗口组件彻底替换掉它。

  下一步我们将根据要求,通过更改或增加菜单、菜单项、工具栏、视图,以及编辑器来修改生成的代码。

进阶

  以这种方式构建应用程序可以使开发人员了解到很多基本功能。RCP不仅是一个窗口组件的集合,它还提供了一个用于管理应用程序用户界面的系统,其中包括了更高等级概念的编辑和视图(可以移动和叠加)、工具栏、菜单、选择管理等等。但是用这种方式构建应用程序仅仅发挥了Eclipse的一小部分功能。这是一个进入Eclipse应用程序构建的不错的开始;接下来的步骤自然就是构建真正的组件了。

  插件是Eclipse平台的一项重要功能。实际上,Eclipse本身就是一个插件集;Eclipse中的大部分组件都是插件(除了一小部分引导代码)。这使得Eclipse极具可扩展性。可以通过创建一个或多个插件(这些插件可由框架动态发现和安装)的方式,将新功能添加进SDK。插件可被动态发现;添加插件时并不需要更新插件列表。

  类似于Eclipse SDK,RCP应用程序也是一个插件的集合。插件的外形大小不一。如上面所说的,您可以用一个单一的插件建立整个Eclipse RCP应用程序并执行ECP全部的功能。或者您也可以将RCP应用程序建设成一个插件集,每一个插件都会执行程序的一部分功能。

  将RCP应用程序构建成插件集有很多获益,包括:

延迟加载

  Epclise只在需要的时候加载插件。如果您将您的程序分解成很多插件,您就可以缩短程序的启动时间,改善它的内存占用率。在启动时,只有初始化所需的插件子集会被加载,而不是整个应用程序;这将减少启动所需的时间和内存。

更新

  Eclipse可根据需要更新单一插件。如果您的应用程序是由多重插件构成的,那么更新时只需下载所需插件的那一部分进行安装。这样的话,就会减少应用程序更新的时间和所需的资源。

扩展性

  将一个应用程序分割成多重插件有利于程序今后的扩展性。

重用

  将应用程序建成一个组件集合,使得您有机会在其他程序中重用这些组件而无须修改代码。

更好的设计

  使用多插件更利于设计。当您分割一个应用程序时,您会被迫去考虑一些类似于“我该如何去定义组件之间的接口”或“怎样才能使它们之间的交流更便利”之类的重要问题。不幸的是,这并不保证您能得到一个伟大的设计,但它确实鼓励您往这方面努力。

  分割应用程序的一个普遍的方式是将您的领域业务逻辑和对象模型归入一个插件,将您的用户界面归入另一个。这样做的话,您可以有效地按照模型观察控制器模式所列出的程序行来编写您的程序。那就意味着,应用程序的业务逻辑(包含在其自身的插件里)和用户界面的细节互不干涉(理想状态下,这就避免了任何用户界面技术或语言的概念)。用户界面代码(观察和控制层)由另一个插件来提供,从而不会牵涉到商户逻辑的执行。业务逻辑插件从属于用户界面插件,后者会调用某些在业务逻辑中定义的模型。这种架构形式十分类似于Java EE应用程序:一个网络模型(WAR文件)包含了小服务程序(控制器)和JSP(视图);其他的JAR文件则包含了业务逻辑和对象模型。

  Eclipse组件在这种架构模式下提供了极其出色的服务。通过加强可视化模型,Eclipse迫使开发人员不再愿意把用户界面代码放入模型中(当然,真正的程序员可以解决这个问题)。商户逻辑插件(或其他的插件)都从属于用户界面插件集:在视图中可以看到模型,但反过来却不行。通过鼓励这种分割方式,代码中的耦合度降低了,从而使代码在修改过程中不再那么脆弱而且代码的重用率也提高了。

组件的集合

  当您将您的应用程序代码分割成多重插件之后,接下去的步骤就是将这些插件组合成一个整体,从而建立一个RCP应用程序。定义一个应用程序所需的插件集是产品配置的功能之一。产品配置中也包含了品牌信息,包括启动画面的位置、窗口图标、介绍图像和文本等。

  将一个插件集合组装成一个应用程序是一项简单的工作。实际上,在这一步中,最大的挑战就是如何品牌化应用程序从而使其更加美观,作为品牌化过程的一步,您可以添加启动画面、窗口图标、启动图标和介绍图形。通过选择菜单条目File>New>Product Configuration,您可以为您的应用程序创建一个产品配置。此向导如图3所示。

Eclipse RCP:用于构建平台的平台图-3

图3.“New Product Configuration(新产品配置)”向导

  作为创建新的产品配置的一部分,您需要指定一个父插件项目。通常,就是这个插件定义了应用程序。创建初始配置的方法有三种:

  • 创建一个包括了基本设置的配置文件。选择这一项后,将创建一个空配置文件,您必须自己完全配置它。
  • 使用一个现有的产品。选择这一选项后,您将根据现有的产品配置中的值创建一个新配置文件。
  • 使用启动配置。选择这一选项后,初始配置是基于现有启动配置中引用的插件集的。如果您先前是通过菜单中的Run As>Eclipse Application来运行您的程序,那么您就可以使用这一选项。

  您可以创建多个产品配置。例如,当基本程序需要通过所添加的可选插件来实现一些功能,那么创建这些插件的配置就显得很有必要。向导中的第二个选项旨在方便多个类似配置的创建。

  在产品配置编辑器的Configuration(配置)选项卡上(参见图4),您可以为应用程序所需的插件命名。

Eclipse RCP:用于构建平台的平台图-4

图4. 产品配置编辑器的Configuration(配置)页面。

  插件列表需要包括所有应用程序自带以及所需的插件。编辑器会帮助您为所需的插件分类。当您把应用程序的插件添加到插件列表后,单击Add Required Plug-ins按钮;这样就会将您的插件所要参考的插件,以及那些插件所要调用的插件全部添加进了插件列表。这个集合会包含很多Eclipse平台本身的插件。使用这个按键时,您只要添加最上层的插件,随后编辑器会自动搜索并添加与这些上层插件相关联的插件。这一功能同样可以使用在产品的配置上;事实上,使用更新系统就是为了使用新的功能。

  启动文件与那些负责启动程序的可执行文件相关联。在这一页面上,您可以定义文件浏览器中的图标和名称。Branding页面负责品牌化应用程序(真奇怪)。其中包含了启动画面的识别、可选启动进度条的位置、窗口图标,以及关于对话。这些您所指定的信息将在导出项目时使用。

  导出程序时,所有在配置页面列出的插件会连同标记信息以及基本Eclipse配置一起被建立(如果需要的话)或复制到您的文件系统的目录中。这个结合了Java Virtual Machine(JVM)的目录就是您运行应用程序所需的全部。

  运行程序并不需要对其进行导出;您可以在工作台中直接运行应用程序。对于测试配置和用调试器确定并解决问题,这是一个很棒的方法。在产品配置编辑器的全局页面上,有两个选项可以用来运行程序。这两个选项是以超链接形式出现的:“运行产品”和“在调试模式中运行产品”,两者分别在常规和调试模式中运行启动配置。

建立平台

  到目前为止,这场讨论主要集中在一个由众多定义非常明确的插件集构成的应用程序上。Eclipse的一个非常出色的功能就是它能够动态地搜索和加载组件。这使得开发人员能够去构建扩展性很强的应用程序。更进一步说,您可以将RCP应用程序构建成具有您自己的开放API的基础平台。

  在Contributing to Eclipse: Principles, Patterns, and Plug-Ins这本书中,作者们讨论了一些有关于扩展性的规则。第一,开放规则指出,“只要有可能,就让其他人服务于您的工作。”为了做到这一点,您可以定义您自己的扩展点集,使得其他开发人员能够在您的应用程序上进行他们自己的创作。Eclipse的工作台大量使用了这一机制,每个开发人员都能添加他自己的视图、编辑窗口、菜单入口等等。

  想象RCP应用程序正在管理一张to-do列表。这个应用程序的核心功能提供了这项to-do任务的对象表达,以及可视化这张任务列表的能力。图5显示了列表的视觉表达。

Eclipse RCP:用于构建平台的平台图-5

图5.To Do View

  就其自身来说,这个应用程序已经够吸引人的了。而更强大的功能是在我们将程序带入扩展的空间后出现的。用硬编码编写应用程序来存储任务信息会变得相对简单。但除了硬编码,您可能会开放您的应用程序以便让其他的开发人员通过扩展点将他们的存储系统与您的代码相连。您的初始实现可以引导扩展点使其具有在本地数据库存储信息的能力。另一个开发人员可能会利用一项网络服务或其他功能来扩展您的应用程序使得它能够在远程服务器上存储信息。

  想象一下您的应用程序是如何与桌面交互的。为应用程序提供对拖拽的支持相对简单。但是从哪里拖?在您的初始实现中,您可能会将文本从浏览器中托拽入应用程序。如果您在应用程序中建立一个扩展点,您可以允许其他开发人员能够扩展您的程序,使其能够从诸如Microsoft Outlook或Mozilla Thunderbird之类的应用程序中进行拖拽。

  通过建立一个扩展点,您使自己和其他开发人员能够在不改变应用程序的基础上对其进行扩展。利用扩展点动态地搜索可利用的扩展能使您的程序变得完全可制定。例如,也许让应用程序能够从Outlook中把程序包拖到Linux中没有什么意义;对此配置来说,您只需将那个支持Outlook的插件去掉即可。

  当然,有效地利用扩展点机制需要不断的实践。

结束语

  Eclipse RCP是一个用于构建富客户端应用程序的功能强大的框架。直观上,RCP将主机平台与本地外观、窗口管理、可定制性(具有可叠加的编辑器和视图)紧密整合在了一起。但这只是它的表面。位于RCP核心的是将功能和灵活性完全发挥的OSCI-兼容组件模型。当被请求时,RCP会动态地发现和加载这些组件;它们可以进行更新和扩展。

  人们最终必将完全接受Eclipse RCP。一开始,您可能会把精力放在熟悉Eclipse RCP的界面上。随着对组件模型的熟悉程度不断加深,您会开始将代码分割成多重插件。最终,当您掌握了基于多重扩展插件的领域平台开发后,Eclipse RCP真正的强大功能将展现在您的眼前。

参考资料

作者简介

Wayne Beaton 是Eclipse Foundation的一名顾问,负责宣传介绍并帮助人们采用Eclipse技术。

分享到:
评论

相关推荐

    EclipseRCP:用于构建平台的平台

    大量的组织正在将它们的应用程序构建成富客户端,其中许多组织将其应用程序建立在RCP(EclipseRichClientPlatform)的基础上。术语富客户端首先表明此应用程序为用户提供丰富的体验;其次,它还表明此应用程序是某台...

    Eclipse RCP 学生管理平台 执行程序01

    Eclipse RCP 学生管理平台 执行程序

    Eclipse RCP 软件打包发布方法

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...

    Eclipse rcp深入浅出中英文版及配套代码

    1. **基础架构**:Eclipse RCP的基础是插件系统,每个插件都可以提供特定的功能。通过插件之间的依赖关系,可以构建复杂的系统。书中会详细介绍如何创建和管理插件项目。 2. **工作台(Workbench)**:Eclipse RCP...

    EclipseRCP教程

    Eclipse RCP(Rich Client Platform)是一种基于 Eclipse 平台的客户端开发技术,能够帮助开发者快速构建功能强大且界面美观的桌面应用程序。在本教程中,我们将详细介绍 Eclipse RCP 的开发过程、技术要点和注意...

    eclipse rcp应用系统开发方法与实战源代码.zip

    2. **插件开发**:Eclipse RCP的开发基于插件模型,每个功能模块都是一个独立的插件。开发者需要了解如何创建、配置和管理插件,包括编写plugin.xml文件,定义插件的依赖关系,以及实现自定义功能。 3. **工作台...

    Eclipse RCP.pdf清晰版

    ### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序...对于希望利用Eclipse平台构建复杂应用的开发者来说,掌握RCP将是开启无限可能的关键。

    eclipse RCP mp3工程

    1. **Eclipse RCP**:Eclipse RCP是一个用于构建桌面应用程序的开源框架,基于Java语言。它提供了一套丰富的视图、编辑器、透视图等组件,以及插件系统,使得开发者可以专注于业务逻辑,而非基础架构。 2. **MP3...

    Eclipse Rcp

    Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...

    Eclipse RCP培训.zip

    13. **部署与发布**:Eclipse RCP应用可以打包为可执行的RCP产品,通过Eclipse PDE工具进行发布,确保用户可以在各种平台上运行。 通过学习和实践这些知识点,开发者可以熟练掌握Eclipse RCP,构建出高效、稳定且...

    EclipseRcp 例子程序

    1. **插件系统**:Eclipse RCP的核心是其插件模型,它允许通过插件来扩展应用程序的功能。每个插件都有自己的生命周期,可以独立发布和更新。在例子程序中,我们可以看到如何定义插件的元数据(plugin.xml文件),...

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    Eclipse RCP(Rich Client Platform)是Eclipse IDE的一个核心组成部分,它提供了一个框架和工具集,用于构建桌面应用程序。Eclipse RCP允许开发者利用Java和SWT(Standard Widget Toolkit)构建功能丰富的、可定制...

    Eclipse RCP与Spring OSGi技术详解与最佳实践

    高级篇(第6-12章)系统讲解了Eclipse RCP应用开发的基础知识、Eclipse RCP软件产品各个组成部分的构建方法,以及Eclipse RCP扩展的使用和扩展点的开发,掌握这些技术知识的读者将能构建一个结构完整的Eclipse RCP...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    3. **视图和编辑器**:Eclipse RCP中的关键元素,视图(View)用于展示数据,编辑器(Editor)则用于编辑和操作数据。书中会详细阐述如何创建和管理这两个组件。 4. **模型-视图-控制器(MVC)模式**:RCP设计通常...

    EclipseRCP:Eclipse RCP 演示和片段的存储库

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序,它基于Java语言并充分利用了Eclipse IDE的功能。这个"**EclipseRCP**"存储库显然是一个资源库,包含了各种Eclipse RCP的演示和示例...

    Eclipse RCP 插件开发指南

    Eclipse RCP 是一个灵活的平台,它提供了构建桌面应用程序所需的所有组件和服务。通过使用Eclipse RCP,开发者可以创建高度可定制和扩展的应用程序,这些应用不仅具有强大的功能,而且还能与其他Eclipse插件无缝集成...

    documents about Eclipse RCP

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它基于Java,由Eclipse基金会维护,是Eclipse IDE的核心组成部分。RCP允许开发者利用已有的插件系统构建可定制、模块化的应用,具有...

    eclipse_rcp

    4. **强大的调试工具**:Eclipse本身就是一个IDE,为RCP开发提供了强大的调试和测试支持。 五、实际应用示例 Eclipse RCP被广泛应用于各种领域,如软件开发工具(比如Eclipse IDE自身)、图形设计工具、数据库管理...

    菜鸟EclipseRCP学习之路

    标题中的“菜鸟Eclipse RCP学习之路”表明我们将探讨的是关于Eclipse Rich Client Platform(RCP)的基础知识,这是Eclipse框架下用于构建桌面应用程序的一个强大的开发平台。Eclipse RCP提供了一组可重用的组件和...

    Eclipse RCP开发详解

    总之,Eclipse RCP提供了一个强大而灵活的平台,用于构建高质量的桌面应用。通过深入学习"**Eclipse RCP开发详解**",你可以掌握构建自定义插件的技巧,从而充分利用这个平台的优势,打造出满足特定需求的应用程序。

Global site tag (gtag.js) - Google Analytics