(计算机科学与技术专业论文)eclipse+rcp框架分析和应用研究.pdf_第1页
(计算机科学与技术专业论文)eclipse+rcp框架分析和应用研究.pdf_第2页
(计算机科学与技术专业论文)eclipse+rcp框架分析和应用研究.pdf_第3页
(计算机科学与技术专业论文)eclipse+rcp框架分析和应用研究.pdf_第4页
(计算机科学与技术专业论文)eclipse+rcp框架分析和应用研究.pdf_第5页
已阅读5页,还剩73页未读 继续免费阅读

(计算机科学与技术专业论文)eclipse+rcp框架分析和应用研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 过去j a v a 桌面应用程序开发主要使用a w t 平g s w i n g ,由于运行速度缓慢,十分 占用内存,以及总是和本机操作系统的风格格格不入,这导致了j a v a 在桌面开发 应用中的成就与j a v a 的声望远远不符。 而随着e e l i p s e 和e c l i p s e 插件体系结构的流行,以及e c l i p s e 3 0 中 e c l i p s er c p 的引入,使得j a v a 在桌面应用开发中,有了e c l i p s er c p 这个强大的 开发框架,基于j a v a 的桌面开发又重新获得重视并越来越流行起来。 相对于传统的s w i n g 应用,e c l i p s er c p 开发的富客户端应用,提供了本地化 的专业化的外观,更好的运行效率,更少的内存消耗,同时提供了组件化的设计 模型和更好的重用性,可伸缩性,可维护性,可扩展性。 本文介绍了e c l i p s er c p 框架和其中使用到的主要技术,如s w t j f a e e , e c l i p s e 插件结构,o s g i 。同时讨论了实际项目中采用e c l i p s er c p 的开发步骤和 遇到的主要问题。 最后,对于进一步工作的方向进行了简要的讨论。 关键字:e c l i p s er c p ,富客户端 a b s t r a c t a b s t r a c t i nt h ep a s ty e a r s ,j a v ag u i a p p l i c a t i o n sa r em a i n l yb a s e do na w t s w i n g b u t b e c a u s es w i n g r e q u i r e sm u c hm e m o r yc o n s u m p t i o na n dr u n ss l o w l y ,a n dt h e a p p l i c a t i o na l w a y sl o o k su g l ya n dd o n tm a t c ht h es t y l eo fo s a l lm a k ej a v ab e h a v e s b a d l yo ng u i w i t ht h ep o p u l a r i t yo f e c l i p s ea n de c l i p s ep l u g - i na r c h i t e c t u r e ,a n dt h e i n t r o d u c t i o no f e c l i p s er c pa n do s g ii ne c l i p s e3 0r e l e a s e ,j a v ah a st h i sp o w e r f u l e c l i p s er c pf r a m e w o r kt od e v e l o pg u ia p p l i c a t i o n ,a n dn o wm o r ea n dm o r e e n t e r p r i s e sb u i l dt h e i ra p p l i c a t i o n so ne c l i p s er c p c o m p a r e dt ot r a d i t i o n a ls w i n g 1 “c hc l i e n ta p p l i c a t i o n sb a s e do ne c l i p s er c p p r o v i d e sp r o f e s s i o n a la n dn a t i v ea p p e a r a n c e ,a n db e t t e re f f i c i e n c y , r e q u i r el e s s m e m o r yc o n s u m p t i o n ,a n dp r o v i d e sar o b u s tc o m p o n e n tm o d e l ,a n db e t t e rr e u s a b i l i t y , s c a l a b i l i t y ,m a i n t a i n a b i l i t y ? a n ds c a l a b i l i t y t h i sp a p e ri n t r o d u c e st h ee c l i p s er c pf r a m e w o r ka n dr e l a t e dt e c h n o l o g i e s ,s u c h a ss w t j f a c e ,e c l i p s ep l u g i na r c h i t e c t u r e ,o s g i ,a n da l s od i s c u s s e sh o w t ou s e e c l i p s er c pf r a m e w o r ki na c t u a lp r o j e c ta n da l s os t a t e st h em a i np r o b l e m s e n c o u n t e r e dd u r i n gd e v e l o p m e n t f i n a l l y ,t h ep r o b l e m sr e q u i r i n gf u r t h e rs t u d i e sa l ed i s c u s s e d k e yw o r d s :e c l i p s er c p ,r i c hc l i e n tp l a t f o r m i l 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下 各项内容:按照学校要求提交学位论文的印刷本和电子版本:学校有权保存学 位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存 论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务; 学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在 不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术 活动。 学位论文作者签名:袁谍 j u 。 卜年1 月艿日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 年月日年月日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 学位论文作者签名:丧谋 ) - o 凝 lb $ 第一章引言 1 1 引言 第一章引言 j a v a 在w e b 开发中占据着主导地位,但是在桌面应用程序所取得的成就显 然与j a v a 的声望不符。过去j a v a 桌面应用程序开发主要使用a w t 和s w i n g ,由 于运行速度缓慢,十分占用内存,以及总是和本机应用程序的风格格格不入,这 导致j a v a 在桌面开发应用中远远落后于n e t 。 正是为了解决j a v a 在桌面开发中面临的问题,e c l i p s e 一开始就抛弃了a l r r 和s w i n g ,而采用自己的s w t 和j f a c e 工具包,它实现了本地化的外观,具有更 好的性能,因而被很多项目采用。 而随着e e l i p s e 和e c l i p s e 插件体系结构的流行,以及e c l i p s e 3 0 中 e c l i p s er c p 框架和o s g i 的引入,使得在桌面应用开发中,j a v a 有了e c l i p s er c p 这个强大的开发框架,基于j a v a 的桌面开发又重新获得重视并越来越流行起来。 1 2e c iip s er o p 概况 e c l p s er c p 的全称是e c i p s er i c hc l i e n tp l a t f o r m ,是e c i p s e 组织向 用户提供的构建富客户端应用程序的框架,能够使用户方便地创建自己的基于 e c l i p s e 的应用,并且这些应用能够得到e c l i p s e 的底层支持。 1 2 1 客户机发展概况 企业客户端应用系统的发展主要经历胖客户端,瘦客户端,富客户端三个阶 段。 胖客户端。大概在2 0 世纪9 0 年代初期开始使用,其经典的开发工具有v i s u a l b a s i c 和d e l p h i 。富客户端是一个可以直接在客户端平台实现应用程序的功能的 软件,它为终端用户提供了基于本地操作系统的丰富的图形用户接口( g u i ) 使 用体验,可以很容易地实现剪切、复制、拖放等操作,也能够高效进行业务逻 辑处理。 当时胖客户端平台开发的主要问题是,软件的分发、部署和升级非常麻烦。 应用程序哪怕做个d , 1 j , 的改动,也需要手工在各个客户机上逐一重新发布,这 导致非常高的部署,维护,升级成本。 与胖客户端之相对的瘦客户端( t h i nc l i e n t ) ,是随着互联网技术不断发展而提 第一章引言 出来的概念。瘦客户端并没有包含某个应用的任何功能,所有的功能都是由服务 器实现和控制的。瘦客户端的典型例子就是w e b 浏览器,w e b 页面中的所有应用 程序功能都是从服务器中加载的。 与传统的富客户端相比,瘦客户端有以下好处: 1 w e b 应用随处都可以访问。 2 w e b 应用统一部署在服务器端,不需要任何客户端的安装,维护,和升 级都只需要在服务器端进行,这极大地减轻了应用程序维护成本。 3 w e b 应用可以通过各种设备访问,如:手机,p d a ,嵌入式系统。 4 w e b 应用的请求响应模型,使得应用简单,容易使用,而无需用户培训, 用户指南。 5 w e b 应用有着成熟的各种开源的,商业的应用服务器,中间件,和各种 相关工具。 虽然瘦客户端有以上诸多好处,但它也有以下明显缺点: , 1 瘦客户端无法提供脱机工作能力,没有网络连接,在客户端什么无法完 成。 2 瘦客户端不能提供丰富的用户体验,使用统一的浏览器界面和链接操作 方式,可操作性较差,而越来越多的操作者却渴望得到更加丰富的使用体验。 3 瘦客户端应用程序响应性差,它更多地依赖于w e b 服务器的性能,无法 充分利用客户端机器的硬件处理能力,无法满足大量数据处理量的并发用户需 求。 技术存在着一定的周期性。正是由于瘦客户端应用程序的上述问题,无法满 足用户要求,在经历了段由瘦客户端统治的时期后,富客户端技术开始了它的 回归。 富客户端在很多方面与胖客户端类似。它们两者都能为用户带来丰富的,本 地化的用户体验,并提供那些通过瘦客户端技术很难、不方便或不可能交付的信 息和功能。然而,富客户端具有更多优秀的特性。 胖客户端通常是一个难以部署和更新的大型单体应用程序,而富客户端在体 积上更为轻巧,并且其部署和更新相对容易。 相对胖客户端,富客户端还具有更好的可伸缩性。传统l ,胖客户端直接与 数据库相连接。这样客户端与服务器之间的连接总数会受到数据库的限制,极大 地影响了应用程序的可伸缩性。富客户端通常利用应用服务器,后者负责建立到 数据库的连接。这种配置非常灵活而且具有高度的可伸缩性和可扩展性。 正是由于富客户端技术结合了胖客户端了瘦客户端二者的优势,目前富客户 端已经成为非常流行的开发模式,越来越多的企业单位将应用程序建立在r c p 2 第一章引言 基础上。 当然,目前w e b 应用程序还是有很大优势的但是,对于某些类别的应用程 序更适合使用富客户端技术。比如具有下列特征的程序: 1 它们要求具有脱机工作能力和任务切换的能力,通常是工作流或协作类 型的应用程序。 2 它们是用户每天频繁使用,要求具有更高的响应能力和导航效率,以及 尽可能多的快捷按键。 3 它们对用户界面有非常严格的外观要求,包括字体、颜色和小部件的外 观。 4 它们大多数是内部应用程序、内部网应用程序,目标是数百个或几千个 用户。 5 它们具有非常大的数据集,而且需要在客户端维护大量会话数据,来提 高程序性能。 6 它们需要与桌面和其他桌面应用程序很好地集成。 正是在这股需求才产生和推动了e c l i p s er c p 的不断发展。 同时在e c l i p s er c p 的基础上,又出现了e c l i p s er a p ( r i c ea j a xp l a t f o r m ) 用 于将桌面上、i p 已成功e c l i p s er c p 术带入w e b 工程的开发 j ,让富a j a , xw e b 工 程建立在e c l i p s e 的插件架构上。现有r c p 应用象r a p 应用的转换可由e c l i p s e 完成。 在本文中,主要研究如何利用e c l i p s er c p 开发富客户端应用。 1 2 2e e ii p s er c p 历史 e c l i p s e 的前身是i b m 的v i s u a la g e 。为了加快e c l i p s e 的推广,和增加业界 对e c l i p s e 的关注,i b m 在2 0 0 1 年1 1 月向开源社区捐献了e c l i p s e 代码,同 时成立e c l i p s e 基金会( e c l i p s ec o n s o r t i u m ) 和e c l i p s e o r g 网站,从此以后e c l i p s e 在开发者社区得到飞速发展。目前e c l i p s e 基会会成员包含近百家业界知名公司, 如:i b m ,b o r l a n d ,b e a ,s a p , o r a c l e ,i n t e l ,s y b a s e 等等、j k 界巨头。 最初的e c l i p s e l 0 版本纯粹是作为一个j a v a 集成开发环境,就如当时的 j b u i l d e r , v i s u a l a g e 一样。 在2 0 0 2 年推出的2 x 版本,e c l i p s e 开始步入成熟阶段,e c l i p s e 转变了自身 的角色,从个单一的j a v a 集成开发环境( i d e ) 转变为一个开放的,可扩展的集 成平台。这个版本中e c l i p s e 采用了微内核与可扩展的插件体系结构,除了k e r n e l 部分外均为插件。 从e c l i p s e 3 0 以后,e c l i p s e 就采用o s g i 来作为其插件体系结构实现的基础。 第一章引言 同时正式声明将e c l i p s e 作为通用的富客户端平台。 从e c l i p s e3 0 到3 1 再到3 2 ,以及最新的3 3 我们可以看到富客户端平台 应用的快速增长。 在e c l i p s e 发展的早期,一些用户试着将e c l i p s e 作为开发通用富客户端的 平台,他们把这些想法建议不断反馈给e c l i p s e 开发小组。就这样在e c l i p s e 从 2 0 到2 1 的发展过程中,不断收到来自社区的建议和反馈,终于到了一个通用 化的阶段:在3 0 版发行时,正式声明将e c l i p s e 作为通用的富客户端和1 d e 。 在国外较早地成功使用e c l i p s er c p 应用之一是在e e l i p s e c o n2 0 0 5 上的一 个演示,演示的是美国国家航空航天管理局( n a s a ) 的一个项目,当时n a s a 在加利福尼亚州有个实验室j e tp r o p u l s i o nl a b o r a t o r y ( j p l ) ,负责火星探测计 划,他们的管理用户界面就是e c l i p s e r c p 应用,通过这个应用,加利福尼亚州 的工作人员就可以控制在火星上运行的火星车。 1 2 3r c p 现状和未来 e c l i p s er c p 以及开发相关的技术如o s g i ,s w t j f a c e ,e c l i p s e 插件体系结构 等等在国内外都是很热门的话题。而现在采用r c p ,l :发的丌源或商业的g u l 产 品越来越多,如a z u r e u s ( ab i t t o r r e n tc l i e n t ) ,e c l i p s et r a d e r ,z d t ( z h o n g w e n d e v e l o p m e n tt 0 0 1 ) 。i b ml o t u sw o r k s p a c e ,n a s am a e s t r o ,而e c l i p s e 本身更是使 用r c p 开发出的杰出代表产品。 而r c p 丌发中用到的一些思想如插件结构,模块化开发,对j a 、,ag u i 程 序开发带来了深远影响。可以预见随着e c l i p s er c p 技术的不断发展和壮大, r c p 有希望扭转j a v a 在桌面应用的颓势。 1 3 本文的意义 随着富客户端技术的不断发展,越来越多的企业单位将应用程序建立在 e c l i p s er c p 的基础上。相对于s w i n g , e c l i p s er c p 无疑具有非常明显的好处,但 同时e c l i p s er c p 也具有较高的学习曲线。 本文对j 。了解目前十分流行,前沿的e c l i p s er c p ,以及r c p 的主要组成技 术,如s w t j f a c e ,o s g i ,e c l i p s e 插件体系结构等都具有一度的参考价值。同 时分析了e c l i p s e r c p 和传统的a w t s w i n g 技术相比的主要优势,介绍了e c l i p s e r c p 应用框架的主要组成部分,丌发的基本步骤,同时结合例子o p e n l l m 集成 即时通讯工具,具体的展现了采用r c p 技术是如何提高软什= 川= 发效率,节省) 1 : 发和维护成本,如何提高应用的响应能力,可伸缩性,可扩展性和可维护性。 4 第一章引言 1 4 本文的工作与安排 本文共分为6 章: 第1 章阐述了本文所做研究的出发点和意义,介绍了e c l i p s er c p 的历史和 现状,给出了所做的几点工作。 第2 章主要介绍了e c l i p s e r c p 中使用的主要技术,包括s w t j f a c e ,e c l i p s e 插件结构,o s g i 和e c l i p s er c p 应用框架。 第3 章介绍了项目背景,以及即时通讯协议j a b b e r 和s m a c k 类库。 第4 章深入结合着项目o p e n i i m 实现的主要功能,更深入地介绍e c l i p s er c p 开发中的各个方面和使用到的主要技术和遇到的主要问题。 第5 章总结了本文的研究成果,并对未来的研究工作进行了展望。 第二章e c l i p s er c p 体系构架分析 第二章e e ii p s er c p 体系构架分析 在以下的章节主要阐述了e c l i p s er c p 中使用的主要技术,包括e c l i p s e 插件 结构,s w t j f a c e ,o s g i 和e c l i p s er c p 应用框架。 2 1e o li p s e 的体系结构 e c l i p s e 流行的原因主要可归于两点:其一是开源,其二就是它的优秀的构 架设计,尤其是所采用的可扩展的插件体系结构。 e c l i p s e 是一个具有先进软件设计和实现技术的开放式体系结构,它的架构 师之一就是鼎鼎大名的e r i c h g a m m a ,设计模式的作者之一。e c l i p s e 采用微内核 与可扩展的插件体系结构,也即k e r n e l ( p l a t f o r mr u n t h n e ) + p l u g i n s 的体系结构。 所有插件在平台运行时的基础上互动工作,完美的集成在一起。 幽2 1e c l i p s e 的体系结构 从上图可以看出e c l i p s es d k 的体系结构和主要组成部分。 其中e c l i p s ep l a t f o r mr u n t i m e 相当于一个微内核,是整个系统的基础,提供 插件的运行时环境。它是平台中最低级别的部分,它在启动时检查已安装了哪些 6 第二章e c l i p s er c p 体系构架分析 插件,并创建关于它们的注册表信息。p l a t f o r mr u n t i m e 两个插件组成: o r g e c l i p s e o s g i 和o r g e c l i p s e c o r e 组成。其他所有的插件都依赖于这两个插件。 微内核的主要功能包括: 1 定义插件的结构以及它们包含的实现详细信息( b u n d l e 和类载入器) 。 。 2 提供动态载入,卸载,更新,查找插件以及维护插件的注册表、扩展和扩 展点等等功能。 3 提供实用程序( 例如,记录、调试跟踪选项、适配器、首选项库和并发性 基础结构) 。 在e c l i p s e 中,除了k e r n e l 之外其余均为插件。 构成e c l i p s er c p 的最小插件集合包括p l a t f o r mr u n t i m e ,s w t ,j f a c e , w o r k b e n c h ,h e l p 等一些必须的部件,还有一些是可选部件,比如u p d a t e ,f o r m s 等。 e c l i p s e 核心插件主要包括j a v ad e v e l o p m e n tt o o l so d t ) ,p l u g - i n d e v e l o p m e n te n v i r o n m e n t ( p d e ) 。 除了核心插件之外,e c l i p s e o r g 自身还提供了诸如g e f , e m f , v e ( v i s u a l e d i t o r ) ,c d t ,c o b o l ,p h p , t p t p 等很多插件,同时用户可以找到很多商用的 如m y e c l i p s e ,r a d ,或者开源的插件。用户也可以自己开发插件,增加e c l i p s e 的功能。 2 2e c li p s e 插件体系结构 普通的系统,在编译发布之后,系统就不允许进行更改或扩充了,如果要进 行某个功能的扩充,则必须要修改代码重新编译发布,而e c l i p s e 插件体系结构 很好地解决这个问题。 e c l i p s e 体系的核心就是插件,e c l i p s e 中除了k e r n e l ( 平台运行时) 之外, 所有东西都是插件。从这个角度来讲,所有功能部件都是以同等的方式创建的。 7 第二章e c l i p s er c p 体系构架分析 圈2 2e c l i p s e 插件体系结构 从上面的e c l i p s e 插件体系结构示意图可以看出,每个插件都可能使用,和 依赖其它插件提供的服务,同时每一个插件又可以提供其它插件所依赖的服务。 在e c l i p s e 中每个插件是独立的离散的功能模块,可以按不同功能组成分离 成不同的插件,按功能和职责划分模块,分离m o d e l 和u i 部分,这样可以带米 更好的,松耦合的系统设计。 e c l i p s e 提供了插件开发环境( p l u g - i nd e v e l o p m e n te n v i r o n m e n t ,p d e ) ,通 过图形化的编辑界面,只要点击鼠标,e c l i p s e 就会自动生成样板代码,大大地 简化了插件的开发。 一般插件导出成i a r 包,或者一个以插件标识符,下划线以及插件版本串联 命名的插件目录,其中包含所有的代码和静态资源如网页,图像,文档等等。 e c l i p s e 插件体系结构中的主要机制包括: 2 2 1 扩展点和扩展机制 扩展( e x t e n s i o n ) 是e c l i p s e 中一个关键的机制,是为平台和其它插件添 加功能的唯一方法。其中扩展点就是e c l i p s e 或插件中定义出来可以让你扩展的 地方,是一个端口的定义,是其它插件提供服务的入口。在j a v a 语言中最接近 的东西是接口。与接口一样,扩展点定义了用户与服务提供者之问的契约。 扩展就是对这些扩展点的实现,扩展实现是真f 的服务,通过特殊的打包方 式以便能够在扩展点调用。如果将扩展点看作接口,那么扩展就是实现该接口的 类。 一个插件即可以实现其他插件定义的扩展点,来增加已有插件的功能,也可 第二章e c l i cr c p 体系构架分析 以定义自己的扩展点供其它插件扩展。e c f i p s e 的插件结构是由父插件管理子插 件,插件之间由扩展点连接,最终形成树形的结构。如下图所示: 图2 3e c l i p s e 扩展点的树型结构 界面呈现由提供扩展点的父插件来决定,比如说父插件在菜单上预留了扩展 点,那么子插件就可以出现在菜单项上。插件之阳j 的交互也是通过扩展点实现, 父插件调用子插件实现的扩展点来触发子插件的动作。 我们不仅可以使用e c l i p s e 提供的众多现成的扩展点,而且还可以定义新的 扩展点。可以认为一个扩展点就是不同的捅件间的契约,而扩展则可以认为是一 个具体的绑定,一个扩展点可以有多个扩展。 在e c l i p s e 中已经存在许多扩展点,可以直接使用,如: o r g e c l i p s e u i m c i l u s 表示菜单,o r g e c l i p s e u i e d i t o r s 表示编辑器窗口, o r g e c l i p s e u i v i e w s 表示视图窗口,o r g e c l i p s e u i p e r s p e c t i v e s 表示透视图, o r g e c l i p s e u i p r e f e r e n c e p a g e s 表示首选项页面。o r g e c l i p s e h e l p t o c 表示联机帮助 文档等等。 正是通过这种机制,可以很容易地重用插件和以受控的方式扩展已有插件的 功能。可以说系统的开放性很大程度上取决于系统究竟存在多少扩展点。 9 第二二章e c l i p s er c p 体系构架分析 2 2 2 懒加载机制 e c l i p s e 设计中最重要的一个考虑,就是性能,这是通过懒加载机制实现的。 所谓的”懒加载机制”就是指只有在真j 下需要的时候才加载插件。这是通过将 e c l i p s e 插件声明与插件实现分离开来实现的,插件的显示和外形是在插件清单 ”p l u g i n x m l ”中定义,而插件功能的实现则是在j a v ac l a s s 文件中。 这种懒加载原则表现在各个方面,比如最基本的插件启动。 系统在启动的时候,它会扫描插件的每个目录,并建立一个内部模型,用于 记录它所找到的每个插件,这是通过扫描每个插件的清单,而不是加载整个插件 的代码和资源。它会建立一个插件注册表,其中每个插件对应一个插件描述符。 而且系统只加载和启动必要的一些插件,而其它插件只有在真正用到的时候才被 加载和启动,象e c l i p - s e 本身就有几百个插件,而很多插件用户根本不会去用到, 这样可以最大限度的节省系统启动时的资源和时问。 使用插件时,e e l i r s e 一般只加载插件清单中声明的扩展的相关信息,而不 是完全的加载插件本身。由于在配置文件中已经具备真实动作的一切信息,所以 在不装载插件时,同样可以在父插件的界面上将扩展的功能显示出来。插件相应 功能真币被用到的时候,才会加载相应的代码,这减少了操作所需的时间和内存, 改善了程序的性能。 实现懒加载需要处理导航器和插件的布局。很多地方需要绑定插件的信息, 但这时插件对象还不存在。使用代理插件可以解决这个问题。 豳2 4 懒加载机制 所有与插件的通信都通过代理对象来中转。代理对象由主框架创建,记录插 件的基本信息。在系统装载期,绑定到系统中的接口都是代理对象,当外界真正 需要与插件交互,例如运行某个方法的时候,由代理来自动装载真实的插件,然 0 第二章e c l i p s er c p 体系构架分析 后将调用委派给插件来响应。这样可以让懒加载过程对于系统装载,插件运行是 透明的。 2 2 _ 3 小结 e c l i p s e 插件体系结构的好处: 1 模块化的开发方式。按功能和职责划分模块可以带来更好的,松耦合的 系统设计。 2 系统的扩展性大大地加强了。如果在系统发布后需要对系统进行扩充, 就不必重新编译,只需要增加或修改插件就可以了。 3 懒加载机制带来的性能改善。 2 3r c p 的图形机制 s w t j f a c e 是e c l i p s e 的图形a p i 包,它和j a 、,a 的a w t s w l n g 的作用是 一样的,要在e c l i p s e 上开发插件或r c p 应用,首先必须了解s w t j f a c e 。 ) 2 3 1a w t s w l n g 图形机制 过去j a v a 桌面应用程序开发主要使用a w t 和s w i n g ,在a w t 工具包中, 所有的部件都是原生窗口部件,在运行时都被映射到操作系统的已有部件中,由 操作系统绘制,管理窗口,并维护应用程序与这些窗口部件之间的通信。 a w t 的主要缺点是功能很弱,受制于所谓的”最大公约数原则”,即a w t 只 能使用所有图形操作系统的图形接口的交集,只能够使用所有系统都支持的最少 特性。由于a w t 低劣的组件集和特征,a w t 无法吸引开发者。s u n 也不推荐使 用它,只是为了确保向下兼容和支持s w i n g 。 由于a w t 在g u i 方向上的失败,s u n 决定采用另一种新的技术路线一仿生 窗口部件( e m u l a t e dw i d g e t s ) 开发新的图形库s w i n g ,运行时应用程序不使用本地 操作系统的任何部件而是自己绘制窗口外观,创建消息队列,管理事件循环等等。 通过这种方式,s w i n g 消除了操作系统的差异和限制,提供了各种功能丰富的窗 口部件。但是由于不使用操作系统自带的窗口部件,这种方式开发的程序体积庞 大,而且运行速度缓慢,十分占用内存。 a w t s w i n g 还有一个共同的缺点就是它们的窗口部件不美观,总是和本机 应用程序的外观格格不入。 篇二章e c l i p s er c p 体系构架分析 2 3 2e oi ip s es w t j f a c e 图形机制 正是由于a w t s w i n g 的以上不足,在i b m 开发e c l i p s e 的过程中,开发人 员决定创建自己的g u i 图形库s t a n d a r dw i d g e tt o o l k i t ( s w t 标准小部件箱) 。下 面是s w t j f a c e 与a w t s w i n g 在整体构架设计上的不同。 图2 5a w t s w i n g 与s w t j f a c e 的整体构架设计比较 s w t 采用a 、t 的对等体系结构,直接通过j n l ( j a v an a t i v ei n t e r f a c e ,j a v a 本地接口) ,来调用本地操作系统的图形库,但细节不同于a w t 。在当前操作系统 中找不到需要的部件时,s w t 就会采用模拟的方式绘制部件 同时s w t 提供了可插拔的”l o o ka n df e e l ”机制,甚至可以采用类似c s s 级联 样式表的方式修改s w t 的外观。s w t 使用布局管理器来布置s w t 小部件,从 e c l i p s e 3 0 丌始,在s w t 可以与a w t s w i n g 互操作,可以将a w t s w i n g 的局 面元素加入到s w t 的c o m p o s i t e 中去,集成更加高级的图形功能。 s w r 的主要目标是在本地操作系统原有的窗体部件之上提供一个薄的封装 层,它更关注与提供窗体部件,布局和实践处理功能等。e c l i p s e o r g 开发的j f a c e 图形库用于提供高层次的应用支持,j f a c e 是基于s w t 开发的,它将底层的s w t 对象进行了封装,使之更易使用,提供了大部分常用的g u i 部件,如应用程序 窗口,视图,操作( a c t i o n ) ,对话框,首选项,向导,m v c 的树,表格和列表等 更高层次上的组件。 s w t j f a c e 对e c l i p s e 的其余部分没有任何依赖,完全可以独立使用。 2 3 2 1主要实现机制上的区别 模拟方式的区别 s w i n g 和s w t 在它们的实现上都使用了模拟。s w t 只模拟平台上缺失的组 件。区别是s w t 的模拟更像是a w t 的c a n v a s 实现的模拟。s w t 的c o m p o s i t e 类有它自己在操作系统中相应的对等体。它从自己的对等体中获得所有它所需要 的资源如图形处理的对象,字体和颜色等。它直接从操作系统获取所有的事件并 进行处理。 s w i n g 组件在操作系统中没有相应的对等体。它只是一块顶层容器中的逻辑 l2 第二审e c l i p s er c p 体系构架分析 区域,实际上它从顶层容器的对等体中借用资源。 s w i n g 的事件并不是底层系 统产生的事件。它们实际是出项层容器处理a w t 事件所产生的伪事件。 资源管理的区别 由于a w t 和s 、t 都持有对本地组件的引用,它们必须以正确的方式释放 这些引用以避免内存泄露和j v m 崩溃。a w t 将绝大多数资源管理任务交给系统, 将开发者从单调乏味的资源管理中解救出来。然而这使得a w t 的实现复杂化了。 一旦它实现了,开发者很少有机会犯错误并使他们的程序崩溃。 s w t 用的是另一种方法。s w t 让开发者自己来管理资源。它的一条著名的 规则是:谁创建,谁释放。因此开发者必须谨慎地显式调用d i s p o s e 方法释放每 一个由他创建的组件和资源。这简化了s 、t 的实现模型,但把开发者摆在了因 错误编码而易于造成程序崩溃这一风险之上。 2 3 2 2 小结 相对于a w t s w i n g ,s w t ,j f a c e 的优点在于: 1 由于本地的j n i 调用机制,s w t 应用程序所需的资源更少,效率更高, 有更快的响应时间。 2 本地化的外观,通过s w t 可以建立在多个平台上快速构建具有本机和 专业外观的应用程序。 3 s w t 提供了简单实用的编程接口。 4 s w t 提供了丰富的组件,从基础组件如按钮和标签到高级的表格和树。 可以容易地仿造本地操作系统的风格来画出本地操作系统中没有的部件。 s w t f a c e 的不足主要体现在: 1 不在j r e 的标准库中。因此你必须将它和你的程序捆绑在一起,并为你 所要支持的每个操作系统创建单独的安装程序。 2 基于s w t 的应用只能在它所支持的平台运行,每一种操作系统都必须 提供相匹配的j n i 程序和本地函数库供s w t 调用。 3 s w t 使用本地操作系统中诸如罔片,颜色,字体等资源。当这些资源不 再需要时,必须显示释放,否则会造成内存泄漏。 2 4e e iip s e 插件运行模型 e c l i p s e 最先使用的是自己开发的运行时模型来管理插件问的交互,该模型 是特地为e c l i p s e 而设计实现的,它经过了高度地定制和优化,但随着e c l i p s e i d e 的迅速增长,这种方式越来越不能满足需要,它的主要缺点体现在:它缺少动态 添加,更新,卸载插件插件的能力,它具有独特的运行时机制,不能在其它领域 1 3 筇,二章e c l i p s er c p 体系构架分析 重用所完成的工作,而上= l 它太复杂,不太稳定。 因此从e c l i p s e3 0j i :始,e c l i p s e 选择丌放服务网笑协议( o p e ns e r v i c e s g a t e w a yi n i t i a t i v e ,o s g i ) 来替换先前版本巾不稳定的e c l i p s e 运行时模型,从 而实现了一次巨大飞跃。这次转变对于用户来说几乎是透明的,因为现在所使用 的插件的安装和操作看上去和以前的插件没有什么不同。 。 2 4 1o s g l 的历史 o s g i 联盟成立于1 9 9 9 年,是一个非赢利机构,旨在建立一个开放的服务 规范。o s g i 规范为网络服务定义了一个标准的、面向组件的计算环境,它最初 的目的就是为各种嵌入式设备提供通用的软件运行平台,屏蔽设备操作系统与硬 件区别的中间件平台,通过这个平台,可以对不同软件商提供的应用( o s g i 中 称为b u n d l e ) 进行组件的生命周期管理的能力,如应用组件可以从运行中被安 装、升级或者移除而不需要中断设备的操作,应用组件可以动态的发现和使用其 他库或者应用程序。由 :o s g i 技术具有服务组件模块化、动态加载成用等优 点,谁被越来越多的领域关注,如嵌入设备制造业、汽车制造业、企业应用等。 翻前,o s g i 联盟发都的最新的o s g i 服务规范为4 0 。 2 4 2o s g i 软件构架 o s g 的体系架构是基于插件式的软件结构,包括一个o s g i 框架和一系 列插件,o s g i 体系结构图如图所示: 图2 6 0 s g i 的体系结构 其中: 1 e x e c u t i o ne n v i r o n m e n t 层,提供b u n d l e 应用所倚赖运行的j a v a 执行环 境,如j 2 s e - 1 4 、c d c 1 ,0 等都足可用的执行环境。 2 m o d u l e s 层:定义了b u n d l e 应用的类加载s j l $ l j 。o s g i 框架是一个健壮 4 第一二章e c l i p s er c p 体系构架分析 并且严格定义的类加载模型。它为每个b u n d l e 应用,生成一个单独的 c l a s s l o a d e r ,使得b u n d l e 应用的组织更加模块化 3 l i f ec y c l e 层:提供对b u n d l e 的动态安装、启动、停止、升级和卸载等 操作。一个b u n d l e 在整个生命周期可能处于以下六个状态: 。 西s 0 拆 + x f 矗口l “ u 0 罐 一一- l c n 硇k e ”0 f l 舢h o 、 幽2 7b u n d l ef n 生命j j 1 其中: i n s t a l l e d :表示安装完成,本地资源成功加载。 r e s o l v e d :表示依赖关系满足,该b u n d l e 要么已经准备好运行,要么 是被停止了。 s t a r t i n g :表示b u n d l e 正在被肩动,b u n d l e a c t i v a t o r 的s t a r t ( ) 方法已经 被调用但是还没有返回。 s t o p p i n g :表示b u n d l e 一在被停l l :,b u n d l e a c t i v a t o r 的s t o p ( ) 方法已经 被调崩但是还没有返回。 a c t i v e :表示b u n d l e 被成功肩动并月存运行。 u n i n s t a l l e d :表示b u n d l e 被卸裁并且无法进入其他状态。 4 s e r v i c er e g i s t r y 层:定义了化命周j 们层中的动态协作模,1 4 ,是一个发佰、 动态寻找、绑定的服务模型。一个服务通常足一个j a v a 埘象实现了特定 的服务接e l ,并月通过服务注册,被绑定到o s g i 的运行j ! :f = 境中。b u n d l e j 衄用可以注册发布服务,动态绑定服务,井j f 存服务注册状态改变时, ,u 以接受到事件消息等。 o s g i 框架规范足o s g i 规范的核心部分,它提供了。个通用的、安全可 能理的j a v a 框架,通过这个框架,一u 。以支持b u n d l e 服务应川的部署删扩j 陡。 b u n d l e 之| 1 i jl 叮以通过e x p o r tp a c k a g e ,i m p o r tp a c k a g e 利r e q u i r e b u n d l e 来共 宰j a v a 类,在o s g i 服务平台。i ,用,一通过开发b u n d l e 来提供需婴的功能, 1e 第二章e c l i p s er c p 体系构架分析 这些b u n d l e 可以动态添加和卸载,以及根据需要远程下载和升级。 目前j c p 有关o s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论