即使在微软开发平台大行其道的今天,Java IDE仍是企业开发人员用得最多的应用开发工具之一。可是,在实际使用中应该选择哪一种IDE呢?本文为开发者提供了一些选型的依据。
Borland JBuilder、IBM Rational以及Sun NetBeans这三款著名的Java开发工具曾经分别获得美国《InfoWorld》2005、2006、2007年度的Java IDE产品类别“年度技术”奖,是目前市面上应用最多、性能最强大的开发工具之一。在过去的几年里,这些工具都成熟了很多,特别是在静态代码分析、单元测试和版本管理等方面取得了巨大进步。本文对这三款开发工具进行了详细评测,以期为开发人员提供一些选型的依据。
IBM RAD 7: 不支持Java EE 5、Java SE 6
IBM Rational Application Developer for WebSphere Software 7.0(简称RAD 7)基于Eclipse——Borland/CodeGear的JBuilder产品系列也基于这个开源软件框架。Eclipse原先就是一种Java IDE,不过近几年它重新定位,作为可以往上面添加多种插件的框架,因而可以构建各种各样的工具(许多工具与Java开发没有关系)。Eclipse新的框架定位引起了一些人的担忧,生怕原先的Java IDE概念已被淡化。这种担心也许不无道理,不过好就好在Eclipse目前拥有最大的Java插件社区。
RAD 7为改动后的Eclipse库添加了几个组件,其中不少组件面向企业应用开发,它们包括门户组件和门户开发工具,还有广泛的数据库支持。数据库支持(尤其支持IBM的DB2)包括了编写用户自定义函数(UDF)、存储过程和SQLJ代码的功能,而这些都是本次测评的三款产品中特有的功能。
不过,RAD 7的图解和建模功能比较有限,它只支持两种UML图(NetBeans和JBuilder分别支持八种和九种)。要从IBM获得更全面的图表支持功能,就得购买价格更昂贵的IBM Rational Software Architect。
有了RAD 7,就可以开发Web服务和Web服务客户程序,生成Web服务描述语言(WSDL),甚至对专有的通用描述发现集成(UDDI)服务进行单元测试。另外,它还支持IBM的DADX,这是Web服务使用的DB2 XML扩展。遗憾的是,该产品以IBM为中心的特性还影响到了UDDI测试:它只支持使用基于IBM技术的专有注册库。
在编码方面,RAD 7提供了静态分析工具,集成了IBM开发的200多项规则,适用于处理可能存在的Java缺陷和编码错误。尽管本次测评的其他IDE提供了更多规则,但IBM的解决方案可以把这些产品无法发现的错误标记出来,并详细说明使用规则的原因以及解决问题的示例代码。这种全面的帮助体现了IBM一贯以来的传统:说明文档翔实、完备。RAD可链接到广泛的教程。以丰富的文章数量而在开发社区中享有盛名的IBM网站也提供了另外一些资源。
如果应用程序需要脚本语言来把各部分“粘合”起来,RAD 7还提供了内部支持基于Java的Python(Jython)的功能。遗憾的是,该IDE无法自动区别什么是Jython、什么是Java,尽管这两门语言的语法全然不同。这会导致有些操作使得IDE无法正常工作。
尽管这个缺点很小,但表明了我在使用RAD 7时经常遇到的问题:许多特性没有实施好。譬如说,软件安装起来非常困难。得到IBM有关人员的支持后,笔者才正确安装上了该产品,不过原先的一些问题的原因根本就没有找出来。
问题还不止这些。检查注释和文字拼写的选项(一项有用功能)没法使用,因为IBM没有发布词典。要是这项特性被启用,它会把所有单词标记为拼写有误。代码检查工具指定的纠正操作偶尔会无效。对话框里面的动态帮助经常把用户带到错误的地方,所以只好重新回到特定的上下文。
一段时间后,这些问题堆积起来使得这个原本不错的产品用起来让人沮丧。另外,还有一个地方要抱怨:IBM在支持现有的Java标准方面落后于其他厂商。它是这次测评中惟一不支持Java EE 5和Java SE 6的一种IDE。
因此,本文推荐已经在大量使用IBM产品的站点使用RAD 7,因为该产品特别支持这些产品,尤其是DB2和WebSphere。另外,要是站点希望许多国家的开发人员使用同一种IDE,应当会喜欢RAD 7,因为它的外文版本比其他任何一种IDE都要多得多。不过,价格比较高,加上其他方面的一些不足可能会促使站点在斥资购买之前会考察所有方案。
JBuilder 2007:相当出色的IDE
Borland/CodeGear JBuilder 2007 Enterprise Edition在这次测评中荣登榜首。这个版本是自该产品移植到Eclipse平台以来的第一个版本。它由专门开发IDE工具的Borland旗下的CodeGear发布。由于Borland的产品用起来历来有难度,加上这是新平台上的第一个版本,所以我以为这个优秀产品会有些不尽如人意的地方。结果出乎所料,这个非常顺畅而稳定的IDE有许多创新的特性。可以这么说,CodeGear肯定为这个版本耗尽了心血,事实上确实也取得了辉煌成功。
至于Java编码,JBuilder有三个不同系列的代码审查器和分析器:开源PMD、Findbugs和Borland自己的代码检查工具。这些工具可以很好地协同工作(实际上,它们带来的众多标记项可能让开发人员招架不住),不过它们对出现的问题没有解释应采取什么措施,也没有IBM的RAD 7产品那样全面的问题解决建议办法。
JBuilder捆绑了一个度量包(metrics package),它比任何IDE的度量包都来得全面。它可以生成80多种不同的度量,并且以图解或者电子表格的方式显示。用户可以关闭没有兴趣的度量,为确实想要跟踪的那些度量设定阈值。JBuilder还能保存度量快照,那样就可以将代码库的当前状态和前几次执行的状态进行比较,确保数字往正确的方向发展。
CodeGear集成了JBuilder的OptimizeIt工具套件,多年来Borland把它作为独立产品来提供。OptimizeIt提供了众多的高清晰视图,可以了解软件的性能和内存使用情况。它包括代码覆盖分析(但只能分析类覆盖百分比,而不是逐行分析)及其他可见性,从而可以了解底层发生的情况,包括每个线程的数据。
JBuilder还提供出众的协作特性。它拥有面向开发人员的消息传送系统,这有助于代码检查以及开发人员的通信。它使用对等设计模式,遗憾的是,只能与同一个网段上的伙伴协同工作。JBuilder为团队协作方面提供了TeamInsight,这个易于配置的门户服务器包括以下几个重要的开源工具:Subversion、Bugzilla、Continuum和XPlanner。该门户可以通过Web接口或者通过JBuilder访问,包含众多的项目报告和度量。其他两种IDE都没法与这种团队合作的紧密性相提并论。
JBuilder整体上让人觉得可靠、稳定:考虑到它只是Eclipse平台上的第一个版本,取得这样的成绩实属不易。遇到的惟一错误就是经常出现不管用的帮助图标。需要抱怨的地方集中在没有实施的特性上,譬如缺少面向JSP或者JSF的可视化设计器(不过这些设计器很快就会出现)。该产品还无法为使用DB2的应用程序生成部署文件。最后,它目前只有Windows版本。Linux和Mac版本定于5月推出。
截至测评时的版本价格为1999美元,所以JBuilder并不便宜,但完全物有所值。对不需要所有高端特性的开发人员来说,还可以使用专业版和开发人员版的JBuilder,价格分别为799美元和399美元。
NetBeans 5.5:可免费下载
Sun的NetBeans产品是这次测评产品中惟一完全开放源码的产品,可从netbeans.org免费获得。不像其他软件包,NetBeans需要一些组合。可以从核心NetBeans平台着手,添加几个“包”(pack),具体取决于开发者的需求。
目前,Sun提供企业包和Visual Web包(两个都用于这次测评)、用于J2ME编程的移动包以及C/C++包。性能分析包(也用于这次测评)是一个独立的包。这些包包含常用的IDE插件,通常提供了大量新功能。一旦下载了这些包,安装起来就轻而易举。
几年前,NetBeans更像是有一些优秀特性,但在后面跟随的IDE,难以与其他Java IDE产品真正平分秋色。但现在不再是这样,NetBeans为企业计算环境提供了几项实用特性,包括通过Sun的GlassFish项目这一形式支持Java EE 5。该IDE拥有面向基于服务的企业开发的优秀工具,无论是面向服务的架构(SOA),还是普通的Web服务。譬如说,NetBeans是本次测评中惟一拥有业务流程执行语言(BPEL)所需的全部图解和建模功能的产品。
不过,该企业服务产品的不足是缺少支持常用产品的功能。NetBeans不支持IBM的WebSphere应用服务器,并且缺少支持JavaDB之外的其他任何数据库的集成功能。不过,后一点需要澄清一下:NetBeans能够识别可通过Java数据库连接性(JDBC)访问的任何数据库,但它只能为JavaDB生成配置文件、充分利用数据库管理系统(DBMS)特定的特性。
NetBeans的协作特性非常好,拥有内置工具,可用于开发人员之间的实时协作,包括聊天和代码共享功能。不像JBuilder中的这些特性,NetBeans的设计基于服务器。可以构建自己的服务器用于这种通信,也可以免费使用Sun提供的服务器。只要登录到Sun的服务器,所在小组的任何开发人员都会连同他们的登录状态信息显示出来,这种设计类似IM产品中的在线感知(presence awareness)。;
至于GUI设计,NetBeans捆绑了Matisse,这是同类中最出色的GUI布局工具。把窗口组件拖放到窗格和对话框上时,它们会正确地自动排列。最佳和可选位置排列方面的准则会在拖放操作过程中弹出来。Matisse然后利用这种设计来生成代码。
如果站点大量开发基于Swing的接口,单单这个工具就让NetBeans成为它们的首选IDE,因为Matisse只与Swing协同工作。幸好,由于Swing的性能和外观感觉得到了稳定发展,这个局限不像以前那样来得严重。
虽然本次测评的其他Java IDE都使用自己的专有格式来存放项目元数据,但NetBeans巧妙地依赖Ant文件来存放项目的配置数据(其实,它使用相当于make的开源Java工具Ant帮助构建代码)。这具有一大优势:在使用多种Java IDE的开发小组中,其他任何IDE都可以装入及运行NetBeans项目,不必手工转换或者分批导入。
但使用Ant文件也有一个缺点:NetBeans只支持单一运行时配置。其他IDE大多数可以想编写多少运行时配置,就能编写多少,NetBeans却不是这样。要是每次想改变传递给应用程序的参数,就得手动改变一个配置(即将推出的6.0版本IDE解决了这个问题)。
显然,NetBeans拥有不同寻常的特性组合——有些特性实施得很好,但另一些完全没有。它不但免费,而且比基于Eclipse的产品响应更迅即、操作更容易,因为它丢弃了Eclipse采用的“视图”设计,而是单单使用窗口。另外,NetBeans经常得到改进,拥有非常活跃的开发社区,得益于仅次于Eclipse的庞大插件库。
事实上,NetBeans的新版本可以解决上述许多抱怨。如果你在考虑NetBeans,不妨在做出决定之前,看一下目前可以获得的版本6测试版。
链接:其他的Java IDE工具
挑选IDE的关键是选择既确保工作效率、又便于使用的一种IDE。下面简要介绍一下本文所讨论的产品之外的三个选择。
Eclipse:如果不需要RAD 7或者JBuilder的高级特性,不妨考虑普通版本的Eclipse,可以从eclipse.org免费下载。如果需要几项高级特性,不妨考虑Genuitec的MyEclipse,它把许多开源工具(包括NetBeans的Matisse)集成到Eclipse里面,费用是每个用户每年54美元。
JetBrains IntelliJ: 许多开发人员认为这款Java IDE是最有效率、最让人喜欢的纯编码环境。IntelliJ的界面比IBM、Borland或者Sun IDE来得直观,因而博得了美誉。它还有一些独特的特性,譬如说,代码规则在后台运行,所以在编码过程中出现的错误或者错误样式会实时显示;问题被纠正后,就会从屏幕上立马消失。这些规则比本次测评的三款产品都要来得多,对编写大量Java代码、又不需要建模工具的站点而言,IntelliJ是非常可靠、非常低廉的选择。
Oracle JDeveloper: JDeveloper是一种特性丰富、免费(但不是开源)的Java IDE,可从Oracle网站获得。与NetBeans一样,它也不是基于Eclipse。它支持一些企业特性,包括SOA和Web服务,当然也支持与Oracle数据库技术和OC4J Java应用服务器之间的特殊集成。