UML软件工程组织

 

 

使用Eclipse Ganymede提高开发效率

2008-07-23 作者:yawolf cheung 来源:CSDN

 

Eclipse Ganymede已经发布20多天了,新版本比较Europa版本,在PDE、JDT、Equinox、Platform等方面都做了许多改进和完善。Eclipse的优势是提供了一个可扩展的插件开发平台,并且有众多的厂商(特别是开源厂商)提供丰富的、优秀的插件。

RCP应用程序开发,基本上都要涉及到安全、基本控件、数据持久化和应用程序自动升级这几个问题,Ganymede可以提升RCP应用程序开发效率。

1. 安全

Ganymede在安全方面,提升了JAAS、安全存储和对jar文件签名等技术,让安全编程并得简单。例如,要使用JAAS,我们现在可以在插件文件中扩展"org.eclipse.equinox.security.loginModule":

 

   <extension

         id="netStarLoginModule"

         name="NetStarLoginModule"

         point="org.eclipse.equinox.security.loginModule">

      <loginModule

            class="com.cepiao.circle.auth.module.NetStarLoginModule"

       description="com.cepiao.circle.auth.module.NetStarLoginModule">

      </loginModule>

   </extension>

 

在JAAS的注册配置文件中,声明注册模块ID:

NetStar {

    org.eclipse.equinox.security.auth.module.ExtensionLoginModule required

       debug="true"

       extensionId="cepiao.circle.netStarLoginModule";

};

other {

    com.cepiao.circle.auth.module.NetStarLoginModule sufficient;

};

 

这里的“cepiao.circle” 是插件的Bundle-SymbolicName值。

此时,插件的Activator类不是扩展AbstractUIPlugin类,而是实现org.osgi.framework.BundleActivator接口,并在其中读取JAAS的注册配置文件内容。更多详细内容,可以参考Eclipse网站上的相关例子。

另外,Eclipse的Higgins项目http://www.eclipse.org/higgins/,可以使用户能够更方便、更安全地使用数字证书,并可能最终取代用户名和密码,成为在互联网上验证用户身份的方法。

2. 控件

富客户端应用程序开发,需要丰富的控件,诸如:下拉列表、日期选择等等。Delphi、PowerBuilder如此,Eclipse也需要如此。Eclipse本身提供了丰富的控件,还有其他第三方厂商提供大量控件,能够满足富客户端应用开发对控件的需求。

例如:利用内容辅助控件(org.eclipse.ui.fieldassist.ContentAssistCommandAdapter),可以实现下拉列表过滤功能。在输入行政区划代码时,输入区划码或拼音首字母,就可以过滤符合条件的区划记录。

       // Create the find content assist field

       final TextContentAdapter contentAdapter = new TextContentAdapter(); //文本内容适配器

       final IContentProposalProvider findProposer = new XzqhContentProposalProvider(); //行政区划代码内容建议供应者

       final ContentAssistCommandAdapter fContentAssistFindField = new ContentAssistCommandAdapter(

               cbcRegional, contentAdapter, findProposer,

              ContentAssistCommandAdapter.CONTENT_PROPOSAL_COMMAND,

              IContentAssist.AUTO_ACTIVATION_CHARACTERS, false);

       fContentAssistFindField             .setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);   

3. 数据持久化

EclipseLink 为 Java 、关系数据库、XML以及非关系数据源提供了高性能的持久化服务。同类产品有Apache OpenJPA、Redhat Hibernate,不过我比较喜欢EclipseLink,主要是因为它的功能很全面、性能优异,而且还是JPA2.0标准的参考实现。

EclipseLink的MOXy(JAXB)模块,实现Java对象与XML数据之间的相互转换;JPA模块实现Java对象到关系数据库的持久化。如下图所示:

不过,目前还没有实现XML与关系数据库之间的持久化。从EclilpseLink的线路图上看,关于SDO数据对象的数据访问服务(Data Access Services ,DAS)将在2009年春季才发布,还段等待许多时日。

实现XML与关系数据库之间持久化,有许多开源项目,目前都是通过JDO或者Hibernate方式实现持久化服务。主要有以下几个项目:

项目

功能

备注

Hyperjaxb2

利用JAXBHibernate实现XML数据在关系数据库中持久化。

当前版本是0.6.2,还不是很成熟。

Castor

Castor是一个开源的Java项目。其主要目标是在XML数据、Java对象和数据库关系数据之间提供一种直接的映射,使得这三种对象数据可以相互之间自由转换。

XMLDB中持久化是通过JDO方式实现;JPA方式还在开发中。

Eclipse Teneo

Teneo以前是elver (http://www.elver.org/hibernate/index.html)持久化组件,后来并入了Eclipse EMF Tools项目。它的本质就是在 EMF对象和Hibernate/SDO间加了一个桥梁

XMLDB中持久化可以选择HibernateJDO两种方式。

XMLPipeDB

一个可复用的、开源的XML到关系数据库持久化工具。

XMLDB中持久化方式:借助了Hyperjaxb2项目完成XML转化为Java对象,然后利用Hibernate实现Java对象在关系数据库中持久化.

Hydrate

Hydrate是一个基于Java开发的工具,能够在XML, OO对象, 关系数据三者之间进行高效率无差错的转换。

目前是2.0.02版,从20077月更新后就再也没有更新。

我喜欢EclipseLink项目领导Doug Clarke写了一个Dynamic实体持久化的例子。对这个例子稍加改造,就可以实现XML到关系数据库的持久化。从xml模式(Schema)文件读取数据库的表结构,然后利用org.eclipse.persistence.extension.dynamic.EntityTypeFactory定义实体类型;从XML数据文件中读取数据记录,利用org.eclipse.persistence.extension.dynamic.DynamicEntity实现持久化服务。

4. 应用程序自动升级

Eclipse更新管理器,可以实现应用程序的升级,在Ganymede版本中,推出了Provisioning Platform(P2)。

首先,P2是一个全新的设计,既可以更新包(bundles),也可以更新其他东西(non-bundles),这扩展了更新管理器的升级范围。其次,P2澄清了可安装单元和将要被安装的制品,早就应该将这两点分开,既有利于增强应用程序的健状性,又有利于提高更新效率。最后,P2也解决了很多旧的Eclipse更新管理器所无法克服的问题。

5. 我喜欢的功能

(1)Quick Fix

Eclipse的快速修复(Quick Fix)功能,非常好用。鼠标在错误信息处稍做停留,或者是按Ctrl+1,或右键选择Quick Fix,Eclipse就会提供一个修复建议列表。

Quick Fix除了排错外,还要用于重构代码,如:用StringBuilder替代字符串连接,改名或者将本地变量转换为类的属性(字段)。

(2)比较替换

文件查找替换功能,在Ganymede版本也有所增强,在替换时,提供预览功能,方便替换前后代码对照;利用正则表达式替换,可以使用“\C”替换样式,保留文本的大小写。另外,还可以对撤消上次已做的替换。

6. 我不喜欢的功能

Ganymede版本包含了用法数据收集器(Usage Data Collector,UDC),将收集用户如何使用Eclipse的信息,并上传到 Eclipse Foundation的服务器中,目的在于使用这些数据帮助提交者和组织更好地了解开发人员如何使用Eclipse。虽然申明不收集有关用户的任何私人信息,但是无论出于什么目的,记录用户的行为信息都是不受欢迎的,就像你住了宾馆,才发现房间安装了摄像头。我不喜欢这样的行为,也不希望看到我喜欢的Eclipse陷入“隐私门”。

禁止用法数据收集器,可以通过“Preferences-->General-->Startup and Shutdown”,将以下两项前的“√”去掉(不要选中):

Usage Data Gathering Plugin

Usage Data GRecording Plugin

最彻底的办法就是删除plugin目录中与Usage Data Gathering相关的三个插件:

org.eclipse.epp.usagedata.gathering_1.0.0.R200806162215.jar

org.eclipse.epp.usagedata.recording_1.0.0.R200806162215.jar

org.eclipse.epp.usagedata.ui_1.0.0.R200806162215.jar

7. 小结

综上,Eclipse可以很好地帮助我们提高应用程序开发效率,如果在RAP、BIRT、TPTP方面改善,将会更加优秀。“工欲善其事,必先利其器”,Ganymede就是优秀的利器。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号