站内搜索: 请输入搜索关键词

当前页面: 开发资料首页业界新闻Java IDE实用对比:Eclipse、NetBeans、IntelliJ(一)

Java IDE实用对比:Eclipse、NetBeans、IntelliJ(一)

摘要: Eclipse作为开发Java的IDE,从出现到现在已经有几年的时间了,其丰富的特性,操作容易和在提高生产力方面收到了广大开发者的青睐
h5>Eclipse作为开发Java的IDE,从出现到现在已经有几年的时间了,其丰富的特性,操作容易和在提高生产力方面收到了广大开发者的青睐。对Swing开发者来说,使用NetBeans可以充分的利用NetBeans的强有力的RCP(Rich Clien

   Eclipse作为开发Java的IDE,从出现到现在已经有几年的时间了,其丰富的特性,操作容易和在提高生产力方面收到了广大开发者的青睐。当然一提到Java IDE,人们不禁会提到其他Java IDE像NetBeans,IntelliJ等,那么这些Java IDE之间到底存在着哪些异同呢?因此在Java开发的空间里,对这些主要的IDEs做一个全面的比较是很有必要的,通过比较我们找出这些主要的IDEs在四个通常的开发领域:Swing, JSP/Struts, JavaServer Faces和 J2EE/EJB 3.0中哪个IDE表现的更出色。本文就从这四个通常的开发领域来比较Eclipse, NetBeans,IntelliJ。

   在三个IDEs中,Eclipse是唯一个存在多个版本,从基本的版本到预先打包好的带额外的开源插件(像EasyEclipse)和开源/商业结合的(像MyEclipse)。

   NetBeans 5.5:

  首先来看NetBeans 5.5,NetBeans 5.5的基本信息如下表:

  Vendor:Sun Microsystems 
  Website:www.netbeans.org
  Price:Free/Open source
  Distribution:Base + EnterprisePack + Visual Web Pack

   安装:

   NetBeans 5.5,包括它所带的包(像带有 UML/BPEL/SOA的Enterprise Pack和开发JSF的 Visual Web Pack )都既可以作为ZIP文件的形式来下载也可以跨平台进行安装。在Windows平台下,安装以后会与操作系统无缝的集成起来,包括桌面的快捷方式和增加安装/卸载控制面板。在Linux平台下,NetBeans 5.5仅仅安装在一个指定的目录下并且在GNOME或者KDE桌面上创建了一个启动的图标,但是,在Linux平台下,NetBeans 5.5不能以RPM或者一个.deb文件形式打包在一起,也不能提供一个标准的知识库,这些知识库可以使Linux用户按照其他的应用来安装NetBeans 5.5。

   一般特性:

   早期的NetBeans版本在开发Swing上速度非常慢,而且界面很不美观,因此并没有收到众多人士的欢迎,自从5的版本以后,NetBeans开发小组已经彻底的改变了这种状况,NetBeans 5.5和JDK 1.6的结合为用户提供了更为出色的用户体验,特别在Windows平台下(Linux仍然有一些UI上的小问题,预计在NetBeans 6.0的版本这些问题会得以改善。在5.5的版本中缺少对本地GTK的外观支持。)

   在Windows系统中,NetBeans 使用起来非常的方便,像收缩/隐藏/切换等功能,面板/编辑器等配置起来也非常的容易,另外,NetBeans的菜单布局也非常有逻辑,使用起来很方便,大多数的一般功能很容易上手,一直以来,NetBeans的稳定性和性能也十分出色。

   基本的Java编辑器也是相当好的,虽然在代码完成方面与其他IDEs相比还逊色一些,但是毕竟还是可以使用的,NetBeans也提供重构的功能(特别是最常用的重命名/移除特性),在一些测试中,它不总是能够进行上下文感知(context-aware),例如在Struts工程中重命名Action类所在的包,相应的在struts-config.xml中就不能及时的做到同步更新,但是在重构JSF backing beans和更新在faces-config.xml 中的实体方面表现的很好,同时在同步更新J2EE 1.4 sessions beans和ejb-jar-xml的实体方面表现的也很好。

   Swing开发:

   NetBeans包括一系列的特性来开发Swing应用程序,像根据实际文本的位置来进行自动排列,它的强有力的尺寸恢复功能和固定功能使得UI设计器是任何平台的任何语言都不能比拟的。NetBeans 5.5还包括一些新的有助于提高生产力的特性,像自动进行国际化(控制每个窗体/对话框/面板到ResourceBundle包括所有的国际化字符串),使用自定义的窗体/面板(只要他们在你的工程中至少编译过一次)。

   对Swing开发者来说,使用NetBeans可以充分的利用NetBeans的强有力的RCP(Rich Client Platform)向导来创建新的,成熟的Swing应用。

   JSP/Struts开发:

   NetBeans带有非常好的JSP编辑器,该编辑器包括我们期望的基本的特性,基本的向导和创建一个新的Struts工程。内嵌的Tomcat同期使得开发和调试JSP应用程序都很容易,下图为NetBeans web应用向导:

   NetBeans web应用向导自动配置web.xml文件和struts-config.xml文件,增加对Tiles和Validator的支持,另外,NetBeans还在struts-config.xml文件中提供了内容菜单选项,用向导的方式来增加ActionForms, Actions和Forwards。提供了非可视化的编辑器来显示在应用程序中的页面导航功能,提供对Tiles 和Validators配置的完全支持。

   NetBeans 5.5对Struts支持的非常好,但并不像发布文档说的那样完美,非可视化的编辑器可以用来编辑JSP或者HTML页面,对JSP编辑器缺乏对嵌入的JavaScript的支持,JSP编辑器也只带有一个基本的CSS编辑器(当然安装上Visual Web Pack是更好的)。这些都有待于提高。下如为NetBeans对Struts的支持:



    JSF开发: 
    NetBeans对JSF的支持就像对Struts支持的一样,提供了一个基本的向导来创建一个工程,包括类库,配置所有要求的文件等,甚至在JSP编辑器中提供了对backing beans属性的代码补全功能。同时包括在faces-config.xml文件中对导航规则的向导。 
    
    NetBeans Visual Web Pack提供了一个交互式的解决方案通过从Sun Java Studio Creator直接移植到NetBeans的特性来构建JSF应用,这包括用来构建web页面的一个Matisse样式的GUI构造器,并带有丰富的JSF控件,这些JSF控件扩展了基本的JSF RI集,同时也支持数据绑定(直接依靠数据库查询甚至通过JPA/Hibernate)。 

    尽管Visual Web Pack有一些优点,但是Visual Web Pack也有一些缺点: 
        1. 缺少对页面模板的支持(虽然可以保存一个页面作为一个模板并且作为一个标准使用,但是模板的变化不是级连的),对Facelets的支持或者来自MyFaces对Tiles的支持在这里将是很有用处的。 
        2. 缺乏对Apache MyFaces的支持(存在着潜在的问题,当使用MyFaces RI而不是Sun的规范像JBoss部署到一个应用服务器) 
        3. 不灵活的backing beans自动产生功能。 

    另一个主要的特性是支持Facelets,在许多JSF社区中,Facelets被认为是JSP的替代品,尤其是JBoss Seam已经开放了它的所有文档。 

    虽然NetBeans一再宣称下一个发布版本的不足,但是对JSF开发来说,Visual Web Pack是最能提高生产力的工具。 

    企业开发: 
    NetBeans 5.5是第一个支持JPA和EJB 3.0的IDE,在自动产生JPA实体类和注释(包括persistence.xml文件的正确设置,甚至基本的连接信息)可以节省大量的手工编写代码的时间,自动产生的JPA代码的质量非常高并且可以立即使用,第一次使用Matisse开发一个Swing应用和通过JPA查询/更新一个数据库所达到的水平是我使用PowerBuilder多年达到的水平。
对纯粹的企业开发来讲,NetBeans提供了对J2EE 1.4和Java EE 5的支持,特别对J2EE 1.4的项目来说,EJB向导产生了所有要求的代码(包括business/home/remote接口),总之, 
    
    NetBeans考虑了与J2EE 1.4相关的冗长的代码,同时提供了对Java EE 5的封装。 

    NetBeans对部署到GlassFish/Sun Application Server和JBoss上的企业应用提供了官方的支持,而且更新站点为WebLogic和 WebSphere提供了额外的插件。 


↑返回目录
前一篇: 菜鸟的跳板牛人的乐园JSF“通吃”秘笈
后一篇: Java IDE实用对比:Eclipse、NetBeans、IntelliJ(二)