1、引言

Eclipse是一个开放源代码的、基于Java的可扩展的开发平台。就其本身而言,它只是一个框架、一组服务,用于通过插件来构建开发环境。当我们提到Eclipse的时候,许多Java开发者的第一反应就是那个性能良好,界面漂亮,Debug功能奇佳的Java集成开发平台。

无可否认,Eclipse常常作为一款优秀的IDE(Integrated Development Environment,集成开发环境)出现在开发者面前的。它不仅仅是Java的IDE,还可以是C语言的IDE、Python的IDE——只要开发出相应语言的插件,Eclipse就可以成为任何语言的IDE。但是,这些严格来说都是Eclipse RCP的应用。真正的Eclipse,是一个提供了一个完善的插件机制RCP(Rich Client Platform,胖客户端平台)平台;它以SWT/JFace作为界面元素组件,提供给用户一个名为Workbench的UI平台;加上它本身优秀的插件机制,它能够构造出扩展能力强、性能优秀、并能提供给用户良好UI体验的服客户端平台。

2、Eclipse RCP简介

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

个人理解Eclipse RCP就是由插件开发转向桌面应用开发,构建最小化的Eclipse平台(8M)运行你的桌面应用,不必再为程序框架烦心,摆脱失败的AWT和Swing,让程序拥有专业级效果,而实现又很简单、很优雅。

RCP提供了丰富的界面控件,这使得基于 Java 开发桌面应用也变得容易了很多,虽然仍然不能和基于VB、Delphi进行相比。对于开发者而言,尽管使用 RCP 也是为了开发桌面应用,但 RCP 给开发者带来的更多的感觉是在它充分发挥了插件化系统的优势, RCP 可以视为基于 OSGi(Open Service Gateway Initiative) 构建插件化系统的最佳实践的指导,从 RCP 的设计中,可以学习到如何将应用做到模块化、将应用做到动态化,甚至还可以学习到如何自动生成界面这样的设计思想。 RCP 可以看做是基于 OSGi 做插件化应用系统的最佳实践,其中的不少设计方法甚至都可以整理成为基于 OSGi 做插件化应用系统的设计模式,让我们进入 RCP 之旅,揭开面纱,一探其本质吧!相信大家在了解了 RCP 的设计思想,看过其代码后,不得不对 RCP 表示崇高的敬意,大师之作,不同凡响。

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

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

Eclipse RCP项目用SWT图形库和工具包取代了Java标准中的AWT和Swing。SWT直接调用了操作系统的图形库,从而使得Java应用程序的LOOK & Feel 与操作系统的习惯完全一致;更为重要的是,对本地方法的直接调用大幅度的提高了基于SWT 的Java应用程序的运行速度。SWT 的缺点主要在于两点:(1) 不是Java语言标准; (2) 支持的平台太少。

3、Eclipse RCP体系结构

一个Eclipse RCP可分为如下五个部分,如下图所示:

图1

(1)Wrokbench工作台
为Eclipse提供用户界面。它是使用SWT(Standard Widget Toolkit)和一个更高级的API(JFace)来构建的;SWT是Java的Swing/AWT GUI API的非标准替代者,JFace则建立在SWT基础上,提供用户界面组件。

(2)Workspace工作区
工作区是负责管理用户资源的插件。它包括用户创建的项目、项目中的文件,以及文件变更和其它资源。工作区还负责通知其它插件关于资源变更的信息,比如文件创建、删除或者变更。

(3)Help帮助系统
帮助组建具有与Eclipse平台本身相当的可扩展能力。与插件向Eclipse添加功能相同,帮助提供一个附加的导航结构,允许工具以HTML文件的形式添加文档。

(4)Team团队支持系统
团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所有使用的任何版本控制系统交互。大多数插件都不需要与团队支持组件交互,除非它们提供版本控制服务。

(5)Platform Runtime运行平台
平台运行库是整个Eclipse的内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要某个插件的时候才加载该插件。除了内核外,其它每样东西都是作为插件来实现的。

Eclipse最明显的一大优点就是即插即用、即删即无。在构建插件化的应用系统的时候,我们通常希望做到以下三点:

(1)通过增加插件来动态扩展系统功能,包括功能的入口等,最重要的就是不要因为增加了新的插件,而导致对原插件的修改,做到即插即用, OSGi 本身提供了基于插件动态扩展系统功能的支持,但是否可以真的做到即插即用,是否可以不导致对原插件的修改,这个还是要看设计者的功力;

(2)通过删除插件来动态移除系统功能,包括功能的入口等,最重要的就是要让插件的卸载不影响到系统的运行,这个和 1 里面所说的情况也是一样的, OSGi 是可以支持这样的要求,但应用系统是否能做到还是看设计者的功力;

(3)通过增加或更新插件来动态改变系统行为。

RCP基于OSGi来保证其插件化以及动态化可实现的情况下,还定义了扩展点的机制,而正是因为扩展点的机制,使得 RCP 在设计角度上能够更好的达到我们构建插件化应用系统的前两个目标,同时 RCP 通过其对桌面应用支撑的设计为我们展示了扩展点的最佳实践方法,将界面按照对象的思想进行划分,在划分的过程中根据职责形成插件,暴露出扩展点,最后形成了像树一样的结构体系,如图所示:

图2

这种设计方法最佳的一个地方就在于充分的做到了真正的即插即用、即删即无的情况,典型的例子就是在 RCP 中可以通过扩展实现 Perspective ,将这个插件安装上后就可以在 RCP 中看到这个 Perspective ,删除这个插件后 RCP 中自然就看不到这个 Perspective 了。

从 RCP 的结构体系上,可以看出 RCP 在基于扩展点的设计思想上是怎么去设计的,它的设计思路采取的就是从顶至下、按照职责进行划分、形成插件的方法,插件中需要支持动态扩展的部分则做成扩展点,从而形成一个非常容易扩展的开发平台。

即插即用、即删即无的支持使得系统可以很好的以插件的方式来进行组装,做系统的时候就象在种树,先把系统的根撒下,让根长出主干,在主干上培育出枝叶,枝叶上结出果实,整颗树就这么培育成了,当不需要了某个果实的时候,把它摘下来吃了,当不需要了某颗枝叶的时候,把那颗枝叶砍了,而这都不会影响到主干,当希望树上形成别的果实的时候,甚至都可以接上不同的枝叶,让它长出不一样的果实。

4、总结

目前,基于Eclipse开发的插件非常多,涉及到软件领域的各个方面。但是,基于Eclipse RCP开发的独立软件并不常见,其中比较著名的几款Eclipse RCP软件有:

JLabrary:开源的CMS系统,用Eclipse RCP实现客户端;
NOA Office Integration Editor:将Open Office集成到RCP上的一款办公软件;
Nomad PIM:一款建议的个人信息管理系统,可以对个人信息,例如日程、支出、日记等进行管理。

感兴趣的读者可以下载这些软件的源代码进行学习。另外Eclipse本身也具有十分详细的RCP开发帮助文档(都是英文的),充分利用这些资源将大大加快Eclipse RCP开发。

转载:http://www.51cto.com/specbook/319/44641.htm

RCP体系结构及简介相关推荐

  1. R开发(part1)--R语言知识体系结构

    学习笔记,仅供参考,有错必纠 参考自:<R的极客理想>-- 张丹 R开发 R语言知识体系结构 R简介 R语言是一门统计语言,主要用于数学建模.统计计算.数据处理.可视化等几个方向,R语言天 ...

  2. [转载] JVM(一):JVM体系结构详解

    参考链接: JVM如何工作–JVM体系结构 JVM简介        JVM是Java程序得以运行的平台,也是Java程序可以跨平台的底层支撑,从整体上来看,JVM的主要功能可以分为加载和执行两大块. ...

  3. 计算机网络体系结构分为几种,几种计算机网络体系结构的对比分析

    几种计算机网络体系结构的对比分析 几种计算机网络体系结构的对比分析 摘要:在这篇文章中,将要简要的介绍三种不同的计算机体系结构: OSI 体系结构.TCP/IP体系结构以及综合在这两个基础上的五层体 ...

  4. XMind:超越FreeMind的思维导图软件

    XMind:超越FreeMind的思维导图软件 作者: 善用佳软 日期: 2012-10-12 分类: 1.5 思维导图 标签: mindmap [友情广告]XMind Pro 2012 官方团购:授 ...

  5. 思维导图在项目管理中的应用

    为什么80%的码农都做不了架构师?>>>    基本软件 imindmap Mindmanager mindmapper FreeMind开源导图软件  Sharemind 基于Fr ...

  6. XMind——思维导图软件

    XMind是一款顶级商业品质的思维导图(mindmap)和头脑风暴(brainstorm)软件,2008年"最佳Eclipse RCP商业应用"获奖产品.从2008年10月起,XM ...

  7. SOA系列文章(二):服务设计原理:服务模式和反模式

    服务设计系列的法则已经发展到最佳通信实践和取样相关编码的程度.本文提供了设计和实现网络服务的基本原理,并且对面向服务的体系结构(SOA)的相关概念做了一个简要的回顾,以及有关于几种模式和反模式的详细讨 ...

  8. a critical review of preetham skylight model 笔记

    也是为了试用下Xmind. 上图是我用Xmind作的某篇文章的笔记. 感想: 1. 之以一直觉得这种东西没多大用处,回想起来大概是因为那时没有太多应用场景. 2. 如果留心,可以把许多事情做得更漂亮. ...

  9. FreeRTOS源码分析与应用开发01:中断配置与临界段

    目录 1. 异常与中断的基本概念 1.1 异常分类 1.2 中断概述 1.2.1 中断处理宜短暂 1.2.2 临界段影响中断实时性 1.3 中断硬件基础 1.3.1 外设 1.3.2 中断控制器 1. ...

最新文章

  1. Windows进程间通信的各种方法
  2. dell服务器系统开机提示错误解决方法
  3. 获取url后的指定参数
  4. 2、Power Query-动态汇总单元格区域数据
  5. JS----javascript中使用reverse()方法反转数组
  6. 线性调频信号(LFM)的形式及幅度谱、相位谱特性
  7. 有点火的程序秒收录牛X
  8. django 环境配置.
  9. 分母为0一定会抛异常吗?
  10. java 创建Reader_java – 最佳实践:为XMLReader创建SAX解析器
  11. 例题-Quota 实作:
  12. mysql 标记_mysql-徽章/标记内容自用户上次看到以来已...
  13. 初始C语言——完数问题
  14. 嵌入式硬件入门——蜂鸣器
  15. VB .NET-文本文件读写
  16. Android 加载数据或者联网等待的弹框动画
  17. Vue报错:Invalid prop: type check failed for prop .... Expected String with value 1, got Number 1
  18. 各大编辑器的常用快捷键
  19. 微信开通状态检测说明书
  20. Spring Boot 整合 阿里云短信(模板模式)

热门文章

  1. 计算机课评议听课,听课评语大全 评语
  2. 【PX4-AutoPilot教程-0】使用VMware虚拟机导入配置好的Ubuntu系统
  3. 合泰单片机 | HT66F3195 | 个人库开发过程 | 【10】定时器
  4. 【医学+深度论文:F18】2019 Robust optic disc and cup segmentation with deep learning for glaucoma detection
  5. python画树递归_用递归的方式绘制小树_Python数据结构实战(1):递归(算法面试)_Python视频-51CTO学院...
  6. Linux从无到有第一课
  7. 1. 恼人的Multipart form data
  8. Kea DHCP Hooks开发
  9. 公式推导出创意,阿里妈妈“AI智能文案”通过图灵测试!
  10. 信用证及福费廷业务简介