据Sun官方称“最近几年Java IDE已经得到了前所未有的发展。其中IBM的Eclipse、Borland的JBuilder和Sun的NetBeans将成为Java IDE的三足鼎立之势”。
Java IDE是各大软件公司最常用的开发工具之一,也是市场上最活跃的开发工具之一。Sun认为,现在是该问问自己:我使用的Java IDE是否最适合我吗?或者我应该重新考虑一下是否还要继续使用这个Java IDE.
InfoWorld曾经在2005年三月做过一个Java IDE产品的调查,自从那时,这些IDE已经开始发生变化了。就在那时, InfoWorld杂志对历年最佳开发工具做了一个调查。在2003年是Borland的JBuilder、而2006和2007年这一殊分别被IBM的Rational和Sun的NetBeans夺得。
Java IDE给我们印象最深的是在过去的两年里Java IDE已经得到了非常大的发展,但令人不解的是它们在某些方面,如代码分析、单元测试或发布管理等,并没有走得太远。而变化最大的就是对流行框架(如Struts、Hibernate等)的支持。下面就让我们看一看目前最流行的三种Java IDE的表现,这在个过程中我们将会看到它们的优点和不足。
一、IBM RAD借Eclipse之身、欲成为Java开发工具的新霸主
IBM的发言人宣称RAD7.0是基于Eclipse技术的最杰出的Java开发工具。而象Eclipse这样的开源框架也给向Borland/CodeGear的JBuilder带来了强大的生命力。Eclipse最初只是一个Java IDE,但是在最近几年,它已经被包装成一个可以使用插件的框架,并成为很多开发工具的母舰(这些开发工具有的甚至不是用于Java开发的)。
Eclipse的这种构架模式已经颠覆了很多传统的Java IDE的理念。虽然这么说有点偏激,但Eclipse的插件模型和巨大的开发者社区在一定程序上已经证明了这一点。
由于看到了Eclipse的机会,IBM在它的RAD7中基于Eclipse又加入了一些更强大的插件。为了满足IBM的企业市场定位,这些新加入的插件都在一定程度上满足了企业应用的需要。这些插件主要包括门户和门户开发、扩展数据库的支持。最值得称道是数据库的支持,IBM在这些插件中加入了对DB2的强大支持,在这些插件中可以直接写用户自定义函数(UDF),存储过程和SQLJ代码。DB2的所有功能都可以在这里使用。
但RAD7也有其不足之处,如在图表和模型方面有所限制,在RAD7中只支持两个UML图,这比NetBeans和JBuilder要少的多,NetBeans支持8个UML图,而JBuilder支持多达9个UML图。如果要在RAD7中使用其他的UML图,必须向IBM购买更多的昂贵的企业级组件。
当然,RAD7也有它的优势,如我们可以使用RAD7开发Web Services和Web Services客户端,生成WSDL文件,甚至测试UDDI服务。除此之外,RAD7还支持IBM的DADX,这是一个关于DB2的Web Services扩展。
在代码层,RAD7提供了一个静态的分析工具,通过这工具可以对Java进行缺陷检查,这个工具可以检查出200多个程序设计缺陷和规则。同时IBM的其他产品还提供了更多的代码错误检查,通过和这些工具的结合,可以使自己的代码变得更加强壮。 IBM不仅在RAD7上下足了功夫,而此在帮助文档上也使足了劲。RAD不仅提供了本地的帮助信息,而且还可以连接到IBM的训练网站,也就是众所周知的IBM开发者社区,在这里有着十分丰富的文章可供学习,还有大量的资源可下载。 现在动态语言越来越热,为了搭上动态语言的快车,RAD7也内建了Jython(基于Java的Python版本)功能,但不幸的是,IDE还无法区分什么是Jython,什么是Java.这可能会在一定程序上影响动态语言的使用。
RAD7虽然从总体上说功能很强大,但它也有一些不足或缺点。如很多功能做的不是很好。在安装插件时比较困难。有些用户由于对RAD7了解不够,在安装时必须要IBM支持才可以。 当然,还有更多的bug,如RAD7中的拼写检查功能不好使,这是因为IBM并未在RAD7中提供字典的缘故。如果将这项功能打开,RAD7将显示所有的字为错误。还有那个代码核对工具,有时自动修改的错误并不正确。RAD7的动态帮助系统也不太好使。有时无法显示正确的帮助信息。另外,RAD7只支持到JDK1.4,而Sun最新的J2SE5和J2SE6并不支持。这不得不说是一个遗憾。
虽然RAD7有一些不足,但还是值得使用的。因为那些使用DB2和WebShpere的用户会得到特殊的照顾。而且RAD7还提供了多种语言的支持。这一点做的是非常出色的。
二、Borland JBuilder2007重装出击,欲夺回曾经属于自己的市场
JBuilder曾经给我们留下了辉煌的记忆。而JBuilder2007是Borland整合了Eclipse后发行的第一个版本,也是Borland将自己的开发部分拆分成CodeGear后的好行的第一个JBuilder版本。
由于Borland并不善于销售和宣传,再加上JBuilder2007是Borland的第一个新平台。因此,我并不期望这个产品分给用户带来多少惊喜。但当我用了这个产品后,改变了我的想法。这个IDE提供了很多特性。看来CodeGear是真的发力了,从JBuilder2007的IDE中可以看出,几乎在每一个功能是都是创新。
对于Java代码编辑来说,JBuilder有三种不同的代码分析器:开源的PMD、Findbugs和Borland自己的代码分析器。这些工具可以非常好地在一起运行,但JBuilder在问题解决方案方面还不如IBM的RAD7.
JBuilder虽然在有些功能上不如RAD7,但它也继承了Borland的一贯作风,在其中集成了大量的组件。具初步统计,JBuilder2007带了超过80种不同的组件,如动态显示数据的,或类似Excel一样的电子表格组件。当然,如果你不喜欢某些组件,可以将它们关闭,这样它们就不会烦你了。除此之外,JBuilder还可以保存状态快照,你开发人员可以跟踪程序的状态,以便保证朝着正确的方向发展。
CodeGear同时还在JBuilder中集成了性能优化套件。而这些套件在此之前Borland一直是以单独的产品提供的。Borland的这套优化系统可以为用户提供非常多的性能和内存方面的建议和指导。包括代码覆盖分析(这个代码分析只能针对类,而不能对一行行的代码)以及对并发数据的探测等。
JBuilder还为我们提供了另人振奋的协作特性。这个特性是一套面向开发人员的消息系统。这套系统可以帮助参与项目开发人员进行沟通。它使用了P2P的设计模式。但不幸的是只能用于同一个网络中的结点。
JBuilder最吸引的要算它的团队开发系统:TeamInsight,这套系统非常容易配置,而且带了一个入口服务器,它个服务器包含了很多重要的开源工具:Subversion、Bugzilla、Continuum和XPlanner.这个服务器可以很容易地通过一个Web接口或通过JBuilder进行访问。
但JBuilder也有一些缺陷,如现在比较常用的向JSP、JSF技术等没有提供可视化的开发环境。而且对于使用DB2的程序不能产生发布文件。当然,还有很多其他的遗憾。而且JBuilder2007目前只有Windows版,而Linux和Mac版要在今年五、六月份才能正式发布。
三、NetBeans:Sun的致命杀手
Sun的NetBeans和Eclipse一样,是完全免费开源的。使用者不用向Sun支付任何费用。并不象其他的IDE,NetBeans在默认时并没有那么多的组件。由于NetBeans是基于插件模式的,因此,用户可以根据自己的需求定制NetBeans.从最近Sun发布了NetBeans6的第9个历程碑版可以看到。Sun将NetBeans分为三个版本,基础版、标准版和完全版。对于基础版来说,大小不到30M,这个版本只含有基本的JAVA IDE,因此,它很适合个人用户学习Java时使用。其他的两个版本在功能上有了大幅度的增加。如在Web、Web Service、SOA上。
NetBeans和JBuilder一样,在发布时也继承了大量的组件。如NetBeans提供了一个企业开发包、一个可视化的Web开发包,除了这些,还有用于移动开发、C/C++开发的组件。以及一个性能监视的包。这些组件都是以插件形式发布的,一但下载了某个开发包,用户可以很容易地安装它们。
对于企业计算,NetBeans为我们提供了一些非常有用的特性,包括J2SE5和J2SE6的支持。这个IDE有一个非常实用的基于服务的企业开发工具,这就是SOA或Web services.利用这些功能,在NetBeans中可以动态地利用模型和可视化的能力开发BPEL.
但是NetBeans的企业服务也有不足。如由于缺乏相关产品的支持,NetBeans并不支持IBM的WebSphere应用服务器。以及除了JavaDB外无法和其他数据库集成。这最后一点得说明一下。无法集成并不等于无法访问,虽然NetBeans可以通过JDBC访问数据库,但它只能产生JavaDB的发布文件。
NetBeans也具有强大的协同工作特性。它已经内建了面向开发人员的实时的协作平台。包括聊天室和代码共享。
这些特性和JBuilder中的不同,NetBeans的设计是基于服务器的。你可以安装自己的服务器或利用Sun为我们提供的一个服务器进行通讯。使用这套系统可以很容易地登录Sun的服务,任何登录到这套系统的用户的各种状态都将被显示。从总体来看,这套系统有点向IM产品。
在GUI方面,NetBeans使用了Matisse,这是Java IDE中最好的GUI布局工具。当用户将组件拖放到面板和对话框上时,这些组件将会自动按着正确的布局组织排列。而且Matisse还能以互动的方式产生相应的代码,在修改代码后,组件也会产生相应的变化。Matisse还为NetBeans做了许多基于Swing的接口,这是因为,Matisse只能在Swing上工作。幸运的是,现在Swing的性能早已今非惜比了,因此,性能已经不再是Swing的软肋了。
在其他的Java IDE中都采用了自己的格式来存储工程文件,而NetBeans在这一点上要开放的多,NetBeans采用了现在很流行的Ant文件格式来保存工程和配置文件(事实上,ant也相当于make,这是一套基于驱动建立的系统)。NetBeans这么做是非常有利的。如在一个团队开发中可以要使用很多类型的Java IDE,如果在其他的IDE中要装载和运行NetBeans工程,就不需要将其手工转换为当前Java IDE的工程文件格式或都一点点导入,只要当前IDE可以操作Ant工程文件格式即可。
从上述特性可以看出,NetBeans有一些非同寻常的特性 —— 就象埃及金字塔一样是一个宏伟的建筑。如果这些特性是你需要的,那么NetBeans将是你最好的选择。这并不只是因为它是免费的,而是因为它要比基于Eclipse的产品更容易使用和驾驭。Eclipse的视图模式对于长期使用Windows的开发人员并不适合,而NetBeans并未使用这些难以理解的视图做为自己的风格,而是直接使用了Windows开发人员所熟悉的窗口来完成各种任务。
为了更好地满足开发人员的需求,Sun在NetBeans上下足的功夫,预计今年年底NetBeans就可以发布6.0的最终版,在这个版本中,NetBeans将修正很多另人讨厌的bug,如字体显示和运行时配置问题。如果你正在考虑使用NetBeans,那么可以到www.netbeans.org上下载NetBeans6的测试版,看看这个Java IDE是否能满足自己的需要。
四、我们该选择哪一个Java IDE产品呢?
上面主要介绍了三种目前流行的Java IDE产品,那么我们应该选择哪一个呢?我的建议是如果你正在使用IBM的软件产品,如DB2、WebSphere等,你可以选择使用RAD7,当然,这要有一个前提,那就是不使用J2SE5和J2SE6.
如果你想要一个便宜的解决方案,或者主要的工作平台是Mac和Solaris,你可以使用Sun的NetBeans作为自己的开发平台。当然,你也可以选择使用Eclipse.对于Borland的JBuilder2007来说,可以在任何情况下都可以使用它,因为这个IDE是一个标准的Java IDE.也是功能最全的Java IDE.