Java IDE之争 谁是下一个霸主

 2006年的Java IDE市场如果可以用混乱来形容的话,那接下来,在2007这一年里,更进一步的争夺将会愈演愈烈。Eclipse从开发工具向框架级迈进,NetBeans的极力推广,Jbulider改换门庭归来,谁会在这场Java IDE中胜出,现在还很难得出结论。最有可能的现象则是这三种Java IDE将会长期存在,就如数据库市场中Oracle、SQL Server和DB2一样。

  对近期数据调查分析不难看出,NetBeans的市场份额有了明显的增长, Jbulider之前的退出也让NetBeans和Eclipse的对恃提前来临。但随着JBuilder脱离Borland而正式成为CodeGear公司的主力Java开发工具,JBuilder有机会重返Java开发工具王者的地位,三国鼎立的局面可能会再度呈现。

  一、Eclipse 从传统开发工具向框架级迈进

  Eclipse一经出现就以其快速,丰富的特性赢得了认可,其主要的属性有:1.快速的性能 ;2.重构功能 ;3.快速修复错误 ;4.调整/组织导入包;5.弹出窗口进行代码自动装配。由于功能强大,Eclipse一度成为Java IDE领域的霸主。

  最近几年Eclipse的卓跃表现,我们应该不再只是把它作为一个一个Java IDE的开发平台,而是一个平台框架,各种各样的插件都可以安装在它上面,从而形成了各种各样的工具,甚至其中很多技术已经与Java开发没有任何关系。

  IBM新近推出的 Rational Application Developer(RAD)V7.0就是最好的证明。它是一款基于Eclipse开源框架的产品。

  Eclipse新的框架方向已经引起了业内人士的关注:最初的Java IDE概念在逐步淡化。这种感觉或许有它的正确性,但是这种感觉又会被这样一个事实所抵消:Eclipse是目前全球拥有最大的Java插件社区。

  RAD 7在Eclipse基础上增加了多个模块。由于出自IBM的豪门之作,其中许多模块都带有面向企业应用程序开发的成分,其中包括portlet和portal开发工具和对多种数据库的支持。

  在数据库支持方面,自然少不了对IBM DB2的支持,使用RAD 7可以编写用户自定义功能(UDF)、存储过程和SQL J代码,所有这些功能在所有的IDE产品中都是独一无二的。

  但是,在图表和建模功能却相对有限:RAD 7仅支持两种UML图表(而NetBeans是八种,JBuilder是九种)。要想使用来自IBM的全面图表功能支持,IBM的Rational Software Architect工具是不得不购买的。

  使用RAD 7,你可以开发Web服务和Web服务客户端,产生WSDL,甚至针对一个专门的统一描述、发现和集成 (UDDI)服务进行单元测试。还有,它还支持IBM的DADX,这是一种Web服务所使用的DB2 XML扩展。

  在代码编写方面,RAD 7提供了一个静态分析工具,具有IBM制定的关于Java缺点和编码错误的200条规则。虽然本次评选中的其他IDE也提供了更多的规则,但是IBM的解决方案对错误进行标记的功能是其他产品所无法比拟的。

  通过提供针对这些规则进行非常详细的理由阐述和相应的解决办法,使这些规则的作用率被大大提升。

  在文档帮助方面RAD能集合这么丰富的帮助信息,是IBM在文档方面长期所具有传统优势的结果。在RAD中可以把用户链接到全面的开发指南或者链接到IBM的网站来查找更丰富的资源,IBM网站在开发社区上,向来以具有丰富的技术文章而著称。

    存在的缺陷

  人无完人,RAD也不是完美的无懈可击,缺点与优点并存,假如应用程序需要一个脚本语言来把不同的部分连接在一起的话,RAD 7具有对Jython语言(基于Java的Python)的内置支持。不幸的是,这个IDE工具不能自动识别出什么是Jython语言和什么是Java语言,尽管从句法上来说,这两种语言是完全不同的。但是这个小小的缺陷会导致某些误操作的发生。

  这个缺陷虽然非常小,却可以让人们以小见大,安装RAD 7的软件是一一件苦差事。必须要得到来自IBM的帮助后,才能够正确安装这个产品。

  另外,因为IBM没有发布相应的字典,对注释和程序内容进行拼写检查的设置选项不能正常工作,;如果起用了这个功能,它会标记所有的单词为误拼。代码校验工具有时候也会给出错误的纠正。对话框中的动态帮助经常将用户带到错误的帮助页面中,你不得不通过导航再去寻找正确的帮助页面。

  随着时间的发展,这些积累起来的问题影响了人们对这款产品的期待和使用。

  对这个工具还有一点让人遗憾的地方:在支持Java标准方面,IBM已经远远落后于其他厂商。只有这一款不支持Java EE 5或Java SE 6。

  对于那些IBM的忠实用户来说,我推荐使用RAD 7,因为它可以很好的支持来自IBM的其他产品,尤其是DB2和WebSphere。另外,对于那些不同国家的开发者使用相同的IDE用户来说,也会非常喜欢RAD 7,因为它提供了多国语言版本的支持。但是,考虑到相对较高的价格和上面我所说的缺点,用户在开始掏出银子购买这款产品前,一定要慎重的考虑一下。

  二 Sun的开源产品NetBeans

  Sun的NetBeans是唯一一款完全开源的产品,可以免费的从netbeasn.org下载。与其他工具不同的是,NetBeans要求你进行一些简单的“组装”工作;从一个核心NetBeans平台开始,根据你的需要来增加不同的程序。

  目前,Sun提供了一个企业包和一个Visual Web pack包,还有一个实现J2ME编程的移动程序包和一个C/C++程序包,还有一个单独的程序包NetBeans Profiler。这些程序包是常用IDE插件的扩展,通常用它们来提供一些不错的新功能。

  几年前得NetBeans更像一仿制IDE的跟风者,与其他的Java IDE产品不在同一个起跑线上。但是现在的情况却发生了很大的变化,NetBeans的广泛流行已经说明了这点:根据国外一家调查公司在2006年12月的一次调查显示,NetBeans在去年获得了长足的进步,现在它已经仅次于Eclipse,是第二大Java IDE工具。

  对于企业计算来说,NetBeans提供了很多有用的功能,包括对Java EE 5的支持,是通过Sun的Glassfish项目实现的。这个IDE有很多好的工具支持基于服务的企业开发,尤其是在SOA方面。 举个例子来说,NetBeans是本次IDE中唯一的支持BPEL图表和建模功能的产品。

  缺乏对通用产品的支持

  但是,NetBeans的企业服务支持方面的优势由于缺乏对通用产品的支持而被抵消。NetBeans不支持IBM的WebSphere应用服务器,还有,除了JavaDB之外它缺乏对其他数据库的完整支持,对于这一点我们需要澄清一下:NetBeans可以支持任何JDBC的数据库,但是它只支持JavaDB数据库应用程序的部署文件和利用一些DBMS(数据库控制和管理)特定的功能。

  NetBeans的协作功能也非常不错。NetBeans具有一些内置的工具来实现开发者之间的实时协作,包括交谈和代码共享功能。

  NetBeans的设计是基于服务器的。你可以搭建你自己的服务器来实现这种交流,或者免费使用Sun提供的一个服务器,对于后者你只需要简单的登录到Sun的服务器上,你群组中的所有开发者就会被显示出来,还有他们的登录状态,这一点与与我们使用的即时通讯(IM)工具颇有几分相似。

  在图形化设计方面,NetBeans捆绑了Matisse(基于GUI的创建器),这是当前世界上最好的图形化用户界面布局设计工具之一。当你通过拖拽一些小工具到面板和对话框中,他们被自动的正确放置。当你执行拖拽操作的时候,会弹出最佳和可选位置的指导。然后Matisse从设计模式产生相关的代码。

由于Matisse只支持Swing,它使得NetBeans这个IDE工具非常适合于那些从事大量基于Swing界面设计的用户。幸运的是,由于Swing性能和外观感觉上的稳步上升,这已经不能算是一个缺陷了。

  NetBeans依赖Ant文件来存放项目配置数据。这样NetBeans具有一个重要的优势:在使用多Java IDE的团队中,任何其他IDE都能加载和运行NetBeans项目,而不用进行一些转化工作,实现不同IDE平台之间的代码互操作性。

  使用Ant文件方式也有一个缺点:NetBeans只支持单一的runtime配置。大多数其他IDE可以让你选择多Runtime配置;而NetBeans没有,每次你想修改你的应用程序的参数的时候,你必须手动修改一个配置,不过幸运的是,即将到来的NetBeans 6.0将要修正这个问题。

  三 JBuilder 2007 王者归来

  在Java IDE的口碑和功能方面,JBuilder 2007的表现无疑是最好的。这个版本是JBuilder投入Eclipse平台以来的首个版本,它是由Borland分公司CodeGear发布的。 JBuilder 2007展现了一个具有很多创新功能且非常强大的IDE工具。

  在Java编程方面,JBuilder具有三种不同的代码监督和分析设置:开源的PMD、Findbugs和Borland自己的代码检查工具,这些方式相互配合使用,把功能发挥到了极至。同样JBuilder 2007也有自已的不足之处,缺乏RAD 7产品中的问题描述和体贴的推荐操作等功能。

  JBuilder还集成了一个分析评估程序,这个分析评估程序在所有IDE产品中也是最好的,它产生了超过80多种不同的评估机制,并以图表或电子表格的形式展现。令人好奇的是,它的评估程序并不包含可维护性的索引,你可以关闭不感兴趣的机制,并设置你要跟踪的线程。

  JBuilder还可以对评估机制进行快照保存功能,因此你可以把代码的当前状态和此前运行的代码进行比较,以确保程序朝着正确的方向发展。

  同时,CodeGear还整合了JBuilder的Optimizelt(代码测试工具)套装工具,这是一款Borland提供数年的独立产品。Optimizelt提供了高分辨视图来查看软件的性能和内存消耗情况。同时它还包含代码覆盖分析(尽管只是基于类覆盖的分析,而不是逐行代码的分析),还有一些功能是用来了解底层所发生的问题,其中也包括对每线程数据的查看。

  令人印象深刻的协作功能

  JBuilder 2007还在协作功能方给予了很大的支持。它具有一个开发者导向的消息系统,对代码检查和开发者之间的交流非常有帮助。不幸的是,它使用了一个对等设计模式,只支持同一个网段的对端用户。

  对于团队协作方面,JBuilder提供了TeamInsight这个设置容易的portal(交互平台)服务器,它包含了一些关键的开源工具:Subversion、Bugzilla、Continuum和Xplanner等。这个portal服务器可以通过Web界面或JBuilder来访问,同时也包含了很多项目报表和分析工具,这也是其它的IDE团队无法比拟的。

  考虑到Borland第一次在Eclipse平台上发布IDE工具,JBuilder 2007所获得成就非常值得称道。唯一稍显的不足是很多帮助图标并没有发挥作用。同时没有针对JSP或JSF提供可视化编辑器(不过据说很快将增加这部分功能)。

  并且该产品还不能对使用DB2的应用程序产生部署文件,这是一个足以致命的缺失功能。并且目前的版本只支持Windows,Linux和Mac版本要等到五月份才可能发布。

  三国鼎立之势 对用户有利

  继续回到本文最开始所得出的结论,这三种Java IDE产品相比较其实并没有谁有绝对的优势强于其它两者,对于用户而言,这应该是我们最愿意看到的一点。不断的竞争让这些IDE产品变的更强大更易用,从而也有了更多更好的选择。