采用Eclipse用作框架,创建高效率应用程序

来源:百度文库 编辑:神马文学网 时间:2024/04/25 21:50:35
上网时间: 2006年08月03日
作者:Todd E. Williams
技术副总裁
Genuitec LLC
概述
软件开发经常是一个不断折衷考虑的过程。目前最热的争论焦点是富有效率的应用程序与基于浏览器的UI之间的权衡。不管当前的媒体报道会导致人们什么样的想法,业界还没有决定为了支持用HTML/XML/XSLT/Javascript表达的基于浏览器的UI而抛弃所有的桌面程序。其理由可以总结成四个字:“用户体验”。“形式遵循功能……”是判断可用性的关键标准。实际中,较高的用户交互性或复杂的数据关系使选择的可能性更小,也更多的要求将用户接口以桌面程序的形式提供。
在当今的计算环境中,提供在多种平台上运行的用户接口是非常重要的。平台范围要宽,包括小型手持设备和服务器控制台。当用户与他们非常熟悉的视窗管理环境中的程序进行交互时,操作必须让人感觉自然,并且具有可预测性。
为了创建高效率的应用程序,首先要求有良好的设计和支撑性架构。由于没有能被广泛接受的应用程序框架,大多数开发人员会开发自己的架构,然后自己组成框架。然而,这种方法的成本相当高,解决问题所花的时间、调试努力、支持和麻烦还只是建立目标程序功能的一些外围性开销。
已经有比“开发自己的”程序框架更好的方法,这种方法在满足设计要求的同时可以简化和加速项目开发。这种框架的“希望列表”可包含以下多个方面:
.实现清晰、一致和内敛性的架构;
.支持包括Windows、Mac OS X、Linux、QNX Photon、Pocket PC、HP-UX、AIX、Solaris在内的所有主要桌面平台上的开发和执行;
.“快速”保持平台本地外观和感觉的UI响应;
.提供包括标准组件(如按钮、检查框)和扩展组件(如工具条、树状浏览、进程测量)在内的各种窗口组件;
.提供包括编辑器、位置/修改管理、基于规则的风格、内容完成、格式化、搜索和强大帮助在内的各种扩展文本处理方式;
.必要时支持特殊平台性能(如ActiveX)和传统软件的使用;
.为程序设计产品品牌;
.包含一体化帮助系统;
.管理用户配置和参数;
.支持程序更新的远程发现和安装;
.让在创建面向对象的框架方面有丰富经验的著名软件公司进行创建和维护;
.支持国际和国内语言的互译;
.针对灵活性进行设计,可随意增加新的功能;
.只为需要的东西“支付”-基础架构可随意精简或扩展,以便针对精确要求进行功能裁剪。
只要完成我们的“希望列表”,就可能增加得到多个工业慈善机构使用和支持的、开放源代码团队创建和维护并且免版税和许可的技术,并可向全球重新发布。虽然这些要求听起来象是白日梦,但Java程序开发人员可能已经安装了这种令人难以置信的程序框架。这就是Eclipse。

图1:基于“空的”Eclipse的应用程序
但Eclipse难道不是Java IDE吗?简短的回答是“是”和“否”。Eclipse项目的常见问题(FAQ)包含以下内容:“Eclipse是一个开放源代码软件开发项目,专门为高集成度工具的开发提供全功能、商业级质量并极具鲁棒性的工业平台。”因此根据上述定义,Eclipse是一种用于工具集成的开放平台,不是IDE。之所以让人疑惑是因为在Eclipse平台中有一个完整的工业性Java IDE,它作为一种插件扩展了Eclipse的基础框架结构。
Eclipse框架可以将多个独立的工具集成进单个一体化程序中,并提供无缝用户接口。新工具通过插件的形式集成进Eclipse平台和用户接口,从而扩展了Eclipse的内容,并向用户提供新的功能。另外,Eclipse插件还可以扩展其它插件。基于Eclipse的程序初始化时可以发现和激活环境中已经配置的所有插件。由于Eclipse程序能够执行通过目前包含的插件增加进的任何功能,因此Eclipse程序非常象是各组件的叠加。
由于能够写和测试这样的插件对Eclipse成功与否起着举足轻重的作用,因此Eclipse平台捆绑了插件开发环境(PDE)和整套Java开发工具(JDT)。Eclipse开发人员对他们开发的框架能力充满信心。整个开发环境就是使用标准插件技术集成进平台中的另外一套工具。Eclipse平台本身就是开发人员利用基于Eclipse的Java IDE(最初是beta版)自己开发出来的。由于采用了开放源代码的形式,因此任何人都可以检查代码,并非常详细地了解框架将被如何使用。
正是将开发工具与平台捆绑在了一起,使得有些人对Eclipse的特性抱有困惑。JDT组件的高效性吸引了所有Java开发人员,而不仅那些编写插件的人。表面上,Eclipse似乎只是一种优秀的Java IDE。但不该认为Eclipse只是Java IDE,而是应该把它看作是一种刚好包含了Java IDE的实用性程序,是将Eclipse基础平台用作程序框架搭建起来的一种程序。
Eclipse框架特性概述
Eclipse采用了可扩展的设计,作为一种架构平台实现了最大的灵活性。在它的内核,Eclipse平台包含了OSGi R4内核框架规范的高效实现。这种框架规范名为Equinox,可用来引导程序。在该框架上面,Eclipse架构定义了一套层次化子系统,可用作根本就不是IDE的便携式程序(或套件)的框架。由于这种分层架构只在个别的架构接口处进行耦合,程序创建时可以只整合需要的框架,同时删除那些不需要的框架。
下面介绍Eclipse的一些主要特点。正是这些特点使得作为一种通用程序框架的Eclipse广受人们欢迎。
可扩展模型:因为要求一直在变化,开发人员通常要花很大的力气设计出灵活、可扩展的程序。由于Eclipse采用了高度灵活和可扩展的插件模型,因此可以在平台中增加任何类型的功能。如果程序可以被认为是一个工具或一套工具,那么它的功能很快就能以组件的形式增加进基于Eclipse的框架中,就象Eclipse本身具有的Java IDE功能那样。
内容模型:Eclipse提供的内容模型以用于安装工具(功能)的工作台概念为基础。 工具所需的资源在工作区内被组织成项目。项目包含树状结构的资源,这些资源就是包含任何类型内容的文件夹和文件。内核平台提供大量扩充点,允许定制全方位的资源寿命期管理。
内容模型的层次化分类特性使得它适用于多种类型的实用性程序。例如,可以在包含了与用户email帐号相关的单一项目的工作区上创建简单的email客户端。用户项目可包含用于收件箱、发件箱和已发送邮件等公共功能型email单元的文件夹。每个文件夹可包含作为项目资源的相应email消息。
本地窗口组件:Eclipse平台包含一个标准窗口工具套件(SWT)。SWT是在所有支持的Eclipse平台上本地化实现的。SWT包含大量的事件、版图管理器和窗口组件。当某个支持的平台不包含Eclipse支持的本地窗口时,比如Motif上的工具条,可提供针对该平台的模拟窗口。SWT还与本地的一些桌面功能(如拖放)发生交互。另外,如果某些功能比全平台便携性更理想,SWT也可以使用这些特殊OS组件,如Windows Active/X控制。到目前为止,SWT已经在Windows Win32和PocketPC、Photo、Motif和GNU窗口管理器上得到了验证,覆盖了从高端工作站到嵌入式设备的各种应用平台。
虽然Java语言已经包含了两个窗口工具套件AWT和Swing,Eclipse小组仍选择实现他们自己的套件。详细理由可见Eclipse概论白皮书。然而,为了证明这是正确的决定,全部要做的只是比较你选择的Swing或AWT程序的外观与感受与Eclipse的外观与感受。Eclipse的外观、感受和响应就象它在无论什么平台上运行的本地程序一样。
用户接口框架:为了建立图形界面,SWT可以直接或通过JFace使用Eclipse平台的用户接口框架。JFace包括对话框、参数选项、进度报告、框架向导以及图像与字体注册等内容,因此用户接口的创建非常直截了当。
Eclipse平台支持多窗口、类似MDI的用户接口描述。在JFace和SWT的顶部,Eclipse工作台提供的框架可用于建立透视图、编辑器和浏览窗口,从而实现与用户的交互。编辑器处理资源寿命期的交互,如创建、编辑、保存和删除。浏览窗口用于提供与用户正在交互的对象有关的补充信息。例如外形、挂起的任务和私有窗口等。透视图是浏览窗和编辑器的堆叠、平铺或分离排列。在某一时间窗口中只有一个透视图是可见的,但通过打开多个窗口即可同时浏览多个透视图。
Eclipse用户接口框架具有可扩展、灵活和强大的功能。即使它没有做你需要的所有事情,它也可以非常方便地得到扩展,所花的时间和资源要比设计和创建你自己的框架少得多。
更新管理器:过去,与程序相关的最大问题是当新版本发布时包装、分发、维护和更新程序所发生的支持成本。当一个大而分散的用户团体使用程序时会增加这种成本。随着产品的成功和普及,售后支持将变得既耗时又昂贵。
组件维护和更新功能是从头开始的Eclipse设计的一部分。为了控制上升的成本,排除可能妨碍项目开发和部署的维护问题,Eclipse平台包含灵活的更新管理器。更新管理器经过配置既可执行新组件的初始安装,也可以从远端服务器更新已有的组件。当你发布新版的程序或附加组件时,发布非常容易,只需用Eclipse工具对它们进行包装,然后把它们放在更新服务器上即可。
帮助系统:Eclipse的框架式帮助系统提供可搜索和对内容敏感的帮助,通过文档插件能非常方便地加以扩展。因此对于任何建立在Eclipse上的程序而言,无需购买第三方工具即可构建、包装和交付完整的、定制的并且对内容敏感的帮助系统。
将Eclipse用作程序框架
那么开始时将Java IDE的基础当作程序框架至少听起来是可行的,但为什么会有人这样做呢?Eclipse完全满足上文中提到的功能与工具希望列表要求,同时提供程序开发环境,将项目建成一系列Eclipse插件。最开始程序框架提供空的普通程序,但其架构是可扩展的,非常方便未来的功能增强,而且可从远端进行自我更新。
随即主要的问题变成要求Eclipse提供多少功能?简单地说,程序在Eclipse框架上建立时可删除那些不重要的功能,然后再增加重要的一些功能。更具挑战性的问题是从哪里开始?最简单的案例可以非常极端。例如,当建立商用化IDE时,就象我们建立MyEclipse Enterprise工作台那样,先开始完整的Eclipse平台下载和一些其它Eclipse项目,然后在它们的基础上进行创建。而另外一个极端,在为嵌入式设备或大小约束很重要的其它环境建立程序时,Equinox或eRCP将成为更合理的起点。如果配置目标有更多的资源,但仍不要求大多数平台性能,那么将RCP(可从平台下载页面获得)用作主要框架也许才是正确的出发点。只需对基本RCP进行少许的配置即可快速设置好“空”程序,如图1所示,然后集中精力只增加那些能起到增殖作用的功能,而不再增加基础架构。
一旦确立了起始平台,剩下的程序开发工作就只是编写插件并在Eclipse基本框架中增加功能,然后针对目标用户设定合适的商标。例如,一个大型程序一般要使用许多插件写成多个定制透视图和支持窗口。而在集成一套小型程序时,也许每个程序可以是自身插件中的单个透视图。在这些产品线中,Eclipse也可用作公司自己开发的程序的集成入口。可能性是无止境的。为了证明这一点,下面介绍一些来自世界各地的各种Eclipse程序。
GumTree是一种开放源码的图形化用户接口框架,可用来创建科学仪器控制台,如图2所示。

图2:GumTree
EclipseTrader是针对Eclipse RCP开发的开放源码插件,专用于建立在线股票交易系统,具有丰富的功能,如股票价格浏览、带技术分析指南的当日和历史图表、等级II/市场深度分析、新闻浏览和系统交易。主窗口如图3所示。

图3:Eclipse Trader
Azureus通过Eclipse RCP插件实现BitTorrent客户端协议,捆绑了许多对BitRorrent的初级用户和高级用户来说都很有价值的功能。Azureus是SourceForge站点上被下载最多的程序之一,接口在任何平台上看起来都很平易近人,这要归功于SWT,详见图4。

图4:Azureus
Qanyon World Factbook。Qanyon World Factbook程序用于开发Eclipse RCP在分布式环境中的使用。与CIA World Factbook网站相似的是,即使在庞杂的客户环境中Qanyon World Factbook也应显示国家信息,如图5所示。

图5:Qanyon World Factbook
Eclipse的未来
Eclipse还在不断向前发展,从纵向看将进一步深入软件工具领域,从横向看将进入全新的市场领域。有趣的是,向新产业领域的纵向发展具有与Eclipse最初创建时同样的理由。虽然Eclipse最初创建时是向工具提供商搭建集成化平台,但各个可用的RCP使一切都改变了。现在Eclipse不只是工具提供商使用的平台,而且已经成为一种通用平台,在软件工具领域有了广泛的应用。伴随着这种变化,Eclipse开始吸引其它领域的参与者进来,这些参与者希望采用与目前的工具提供商一样的合作方式 。在不久的将来,我希望看到有志于为实用性程序、报告工具、安全性、工艺工作流程和商业智能化等创建基础架构的组织。现在Eclipse已经完全开放,并立身于整个软件产业,它的成员在今后几年中将呈爆炸性增长。
Eclipse未来成长的另外一个源动力可能完全来自于软件产业外部。卫生保健、汽车和金融等不同产业组织一般要设置软件平台和互操作性标准。然而,如果没有便携的、跨平台标准实现,每个组织成员必须独自根据产业标准独立地构建它们自己的标准。这是一个艰巨的重复性劳动,不仅代价高,也容易出错。联合起来建立一套公共的规范兼容性架构将有效地降低成本,同时确保完善的互操作性。但在他们合作之前竞争对手们需要的是能使他们平等受益的等级运动场。当他们开始研究他们的选项时,他们会发现Eclipse的成熟、可扩展和免版税再分配模型作为他们合作开发工作的基础具有非常大的吸引力。
此文章源自《电子工程专辑》网站:
http://www.google.cn/search?q=eclipse+%E8%AE%BE%E8%AE%A1&complete=1&hl=zh-CN&lr=&newwindow=1&start=20&sa=N http://www.google.cn/search?q=eclipse+%E8%AE%BE%E8%AE%A1&complete=1&hl=zh-CN&lr=&newwindow=1&start=20&sa=N
返回文章页 |返回主页