技术开发 频道

JAVA IDE之争,谁会成为最后的幸存者(上)

    【IT168 专稿】自从几年前Eclipse诞生以来,对于开发者来说事情变得愈发有趣了,虽然它具有的SWT和Swing这两个工具包都有他们的强项和缺点,但是没有哪一个在性能或用户感觉上有超过对方的特别惹眼的地方。Eclipse集中于使属于Java IDE的如下特征得到满足:特色、易用性和高效率。本文将探究在过去的几年里的几种主要的Java IDE之间产生的激烈竞争。

   本文主要讨论了三种主流的Java IDE,Netbeans、IntelliJ和Eclipse—从基本的、通用的特征(包括安装、性能和编辑器等)讲起,再集中精力讲述它们的四个共同领域,即Swing、JSP/Struts、JavaServer Faces (JSF)和J2EE/EJB 3.0。同时本文还尽可能地评价了对JPA(Java持久化API)的支持,它代替了硬编码的JDBC查询或特定的库(例如Hibernate或Oracle的TopLink)。

    在这三个Java IDE中,Eclipse是其中存在多版本和分发的IDE,起源于带有开源插件(例如EasyEclipse)或开源/商业混合的插件(例如Genuitec的MyEclipse)的预包装版的基本分发,为了对Eclipse所能够做的进行公平和切实的评论,我集中于基本的发布(包括Eclipse默认的子工程,例如Visual Editor和Web Tools Project),无论在哪处我感到不足的地方,我也会考虑在这些地方MyEclipse作为一个商业的替代物,它提供了什么。坦率地说,对于注册49美元每年的价格的的产品,我被迫去寻找一个与MyEclipse功能上相当的商业IDE。

    首先,让我们先谈谈NetBeans5.5。
   

一、NetBeans5.5

制造者
Sun Microsystems
网站
价钱
免费开源
分发
基本版+企业版+可视化的Web

 
1.   安装
NetBeans5.5,像它的附加版本一样(例如,带有UML/BPEL/SOA的企业版和带有JSF开发的可视化Java版),用户可下载ZIP压缩版或跨平台安装者版。在Windows下,安装者将其集成进操作系统,包括记录正确的桌面快捷方式和在添加/删除面板上增加卸载器,在Linux下,它简单的安装到指定的目录,并在GNOMEKDE桌面上创建一个启动图标。但不幸的是,它没有打包成一个RPM或一个以deb为后缀的文件,也未提供一个标准的储藏地方(在这个地方允许Linux用户像安装其它应用软件一样来安装它)。
 
2.       主要特色
NetBeans一度是个“对Swing的支持的任何事情都是错误的”的同义词:缓慢、臃肿,并且丑陋,在这个平台上工作让人觉得不舒服。但是,NetBeans工作组在5.0版本后对整个IDE进行了巨大的整改,NetBeans5.5JDK1.6的结合使得NetBeans在用户体验上提升了一个很高的等级,特别是在Windows下(在Linux下仍然有一些界面故障,这些故障在6.0版本时等到修正,特别地,5.5版本缺乏本土的GTK界面支持)。
   Windows系统如我们可以想像的那样是先进的和有弹性的,有了隐藏/切换等的能力,几乎任何一个面板/编辑器在所有可能的配置中都是很容易的。我也发现菜单的布局很有逻辑性,也很易用,它将所有最常见的函数放在最容易获得的地方(例如,保持用户库)。总的来说,总体的稳定性和性能都是很出色的。
   基本的Java编辑器是合适的,虽然它们当然不是在这个领域最好的(特别地,代码的生成在某种程度上比它的竞争者要慢),但是它还是可用的。也提供了对重构操作的一个基本的集合(特别是最常用到的重命名/移动等)。虽然在我测试的过程中发现它在使用时常常存在某些危险,因为它并不常常是上下文相关的。例如,在Struts工程中重命名一个Action类的包时,它不更新struts-config.xml中的相应配置(虽然它在重构JSFbean和相应的更新在faces-config.xml时,或在修改J2EE1.4session bean时,相应的修改它在ejb-jar.xml中的配置时工作得很好)。
 
3.       Swing开发
NetBeans的可圈可点之处是它著名的Matisse用户界面设计器,它基于新的GroupLayout布局管理器,它本来由NetBeans工作组自己开发来作为一个扩展,对基线支持的结合(例如,自动对齐控制能力基于在一个控制器中实际文本的位置)使得创建专业的UI界面变得十分容易。实际上,强大的改变大小的功能制作了这个最好的UI设计器,我看到,它适应于任何语言和任何平台。
   在安装了5.5版本之后,我也抓到了更新的最新集合,它包括一些有效的特征,例如自动国际化(通过控制每一个表单/对话框/面板作为ResourceBundle包括的所有的国际化字串),也包括运用自定义的表单/面板的能力(它们在你的项目中不止编译一次)。MatisseNetBeans工作组做得最好的一个例子。(图1Matisse操作的一个例子)。

1. 带有自定义JPanel组件的Matisse
Swing开发者来说,使用NetBeans的一个附加的好处是它使用强大的RCP向导的能力,它能够创建一个新的、复杂的Swing应用程序。鉴于基于RCPEclipseSWT的普及性,NetBeans工作组也为提供一个可用的基于Swing的替代物做了不少努力,我敢说,这带来了给人深刻印象的结果(虽然最初的学习曲线可能对小型的项目有点坡度)。

4. JSP/Struts开发

    NetBeans带有一个很好的JSP编辑器,这个编辑器带有我们所期望的所有基本的特征,并且具有创建一个新的Struts工程的所有的基本向导。它包含一个嵌入的Tomcat容器,这使得开发和测试JSP变得更加容易和快速(图2展示了NetBeansWeb应用程序的向导)。


2. NetBeans应用程序向导

NetBeansWeb应用程序向导自动的配置web.xmlstruts-config.xm,并且能够增加Tiles和验证器支持。但是,它提供的支持是一些在struts-config.xml和添加ActionFormsActionsForwards的向导的上下文菜单选项。它提供了可视化编辑器,这个可视化编辑器显示了在一个应用程序中的页面导航,并提供了配置Tiles和验证器的无条件支持(包括创建原始的配置文件和所需要的包)。

   
以个人来说,我发现在5.5中对Struts的支持相当好,虽然它当然没有Matisse那样完美。同样,它也没有JSPHTML的可视化编辑器(这对很厉害的程序员来说算不上什么,但是对刚开始学习编程的程序员来说还是非常好的)。它对嵌入式JavaScript的支持比较缺乏,它只带有一个基本的CSS编辑器(虽然当你安装了可视化Web包时,在这些方面会有比较大的改进),在这些方面它还需要大大改进。(图3NetBeansStruts支持的一个示例)。



3 NetBeansStruts的支持

5.  JSF开发

NetBeansJSF的支持与它对Struts的支持相同。它在工程创建的时候提供了一个向导,包括包、所有需要的文件的配置,甚至提供了在JSP编辑器中支beans的属性的代码生成,并提供了一些faces-config.xml中的向导导航。它不支持ApacheMyFaces(仅仅支持JSF RI)。

没有哪个可视化编辑器提供方法来维护faces-config.xml文件。但是这在XML编辑器或两种或三种基本的上下文菜单中做得很好。然而,这对那些厉害的程序员们是可使用的,也当然是足够的,但是它很难满足其他IDEJSF开发者带来的用户易用性。 
 

但是,NetBeans的可视化Web包提供了一个建立JSF应用程序的可选的解决方案,该方案直接将Java Studio的创建者直接的引入到NetBeans中来。它包含一个Matisse的图形用户界面构造器来编辑网页,具有很多对JSF的控制器(最近作为Project Woodstock开源),从而扩展了基本的JSF RI集合,它也支持数据绑定(既包括数据库查询,也包括JPAHibernate)。 
 

尽管具有这些主要特征,可视化Web包也有一些缺点,这些缺点可能停止某些Java工作场所,即: 
 

1)           它缺少对页面模板的支持(虽然你能够将某一个页面保存为模板并将其作为产生新页面的一个基础,但是很显然地,你不能对它进行改变)。支持来自MyFacesFaceletsTiles将会产生很大用处; 

 

2)           它缺乏对ApacheMyFaces的支持(假设在部署使用了MyFaces RI,而不是Sun的实现时的应用服务器,例如JBoss时遇到了问题)。

3)           在自动产生后台beans时太过死板。

一个很好的特征将是对Facelets的支持,这点在JSF社区中正被推作为JSP的总的替代物(特别地,JBoss Seam工作组已经为它的所有文档公开出征)。

虽然如果NetBeans工作组将这些缺点在它的下一个版本中得到改正,我也不能想像哪一个工具能够带来像可视化Web包为JSF开发带来的高效率。
 

6.  企业开发 
 

NetBeans5.5是对JPAEJB3.0提供支持的IDE,它在这领域做得很好。特别地,通过注释对JPA实体类的自动生成(包括正确地建立persistence.xml文件,甚至包括基本的连接信息)为我节省了几个小时的无聊时间。自动生成的JPA代码是如此的高质量并能立即可用。坦率地说,用Matisse开发Swing应用程序,以及通过JPA来查询和更新数据库让我看到了我很多年以前用PowerBuilder开发时(我始终将PowerBuilder作为开发高效率的客户端/服务端的UI开发工具,即使它还存在很多缺点)的高效率。

对于纯粹的企业开发,NetBeans提供了提供了对J2EE1.4Java EE 5的支持。特别地,对于J2EE 1.4工程,EJB向导关心产生所有需要的代码(包括业务/本地/远程接口,也包括他们的简易实现不包括对ejb-jar.xml配置文件的包装)。简短来说,NetBeans关心大部分与J2EE 1.4相关的东西,也提供了对Java EE 5的相应支持(它是第一个做到这样的IDE,虽然在它之后,很快的IDEA也具有了该功能)。 
 

从另一个方面来说,NetBeans提供了仅仅对部署企业应用程序的GlassFish/Sun应用服务器以及JBoss的支持,但是,更新站点提供了WebLogicWebSphere的相应插件,虽然我不能确定NetBeans工作组是否会官方的支持它们。 
 

免费的企业包也增加了强大的图形特征(包括编辑和同步Java代码两种方式),BPELSOA编辑器也一样。但是,这些东西超出了我们评论的范围。
 

7.  对NetBeans的建议 
 

我真的喜欢NetBeans。在任何人都以为它会被Eclipse活生生的吃掉时,它站起来了,并在新版本中具有了很多引人注意的特征(在NetBeans6.0中更甚)。但是,它的社区大小与Eclipse社区相去甚远。

IBMEclipse上所做的一件精明的事情是放弃控制和创建一个Eclipse根基,由于这一点,吸引了很多第三方的开发者。也许已经是Sun放弃对NetBeans的同等控制的时候了(坦率地说,我认为NetBeansEclipse更像一个本地的Windows应用程序,尽管这纯粹是SwingSWT的讨论)。NetBeans简单来说,NetBeans后需要更多的资源,来使得它在Java IDE变成第一名,我不认为Sun本身能够使得这种情况发生。 

    在下篇中,我们将对IntelliJ IDEA 6.0.4Eclipse分别进行介绍,并对本文进行总结。 

0
相关文章