Jacek Furmankiewicz是加拿大Compuware公司一位资深的开发者/设计者。他具有12年的专业IT经验,范围涉及UNIX, PowerBuilder,C#/Microsoft .NET,Java,PHP,还有Microsoft SQL Server和Oracle。

一、IntelliJ IDEA 6.0.4
供应商  JetBrains
网站 [url]www.jetbrains.com/idea[/url]
价格  $499.00(加上$299.00的升级费)
安装
在Windows平台上,IDEA提供了一个常规的EXE安装程序;而在Linux平台上,其安装只包括一个TAR.GZ文件。一旦解压完所有内 容,你必须手工地切换到“bin”子目录下,并且执行“./idea.sh”。如果你没有正确建立$JDK_HOME(最好在你的.bashrc文件下, 如下所示)变量的话,将会出现失败:

JDK_HOME=/home/jacek/Dev/Java/JDK/jdk1.6.0_01

export JDK_HOME

JAVA_HOME=/home/jacek/Dev/Java/JDK/jdk1.6.0_01

export JAVA_HOME

export path=$JAVA_HOME/bin:$path
遗憾的是,JetBrains并没有对于任何主流的Linux发布提供一个标准的.deb或RPM文件,致使安装无法与桌面良好地集成(例如,不支 持桌面快捷方式或创建K菜单入口)。更糟糕的是,从Konqueror文件管理器下双击“bin/idea.sh”文件也无法工作(它将返回一个关于 JAVA_HOME还没有建立的错误,尽管实际上已经正确建立它了)。看起来,唯一可行的办法是打开命令行并手工执行“./idea.sh”。总之, IDEA在Linux平台上的安装体验还需要进一步的简化。在本文被测试的三个IDE中,IDEA在安装方面提供的功能是最弱的。
总体特征
就象NetBeans一样,IDEA中也提供了一种很灵活的布局,对于各种配置都提供了相应的停靠/固定/浮动面板。然而,这看起来尚不如NetBeans窗口系统那么平滑和可配置。
然而,这只是对于杰出的IDEA编辑器的一个小小的抱怨—一直被认为是它的杰作之一。其实,IDEA编辑器速度极快,并提供复杂的上下文敏感的颜色 加亮、提示和建议弹出框—更不必提给人印象极深的大量的重构选项。IDEA编辑器简直就是任何顶级编程者的梦想。使用它的时间越多,我就会从中发现越多的 提高开发效率的编程技巧。我肯定,在这么有限的时间内我根本不可能了解它所有的功能。下图4中的示例展示了一种IDEA编辑器及其高级的颜色/语法高亮功 能。
1706310.gif
图4:应用中的IDEA编辑器
Swing开发
另一方面,IDEA也提供一个较强有力的GUI编辑器。但是,比起NetBeans Matisse,还是略微逊色一些,但是它确属GUI编辑器中的亚军。特别是,它对于JGoodies表单(无可争议地成为比GroupLayout优秀 得多的布局管理器)的支持使它远远跑在了那些仍然依赖于GridBagLayout技术的GUI编辑器的前面(例如Eclipse的Visual Editor)。
有趣的是,IDEA以一个单独的“.form”文件形式保存相应的UI布局(类似NetBeans),但是默认情况下,它并没有生成相应的 Swing代码—它仅在编译期间经由一个专利性GUI编译器(该编译器还可以作为一个单独的Ant任务进行打包)生成。如果你比较喜欢把该IDE生成的代 码直接放到你的.java文件中,那么,你必须经由一个选项来启动这一功能(我认为这是更好些的方法,因为我不太喜欢把我所有的UI代码都隐藏起来而仅在 运行一个IDE特定的代码生成机制后才变得可用)。
JSP/Struts开发
IDEA对于Struts的支持是十分成功的。这方面支持的一个良好的例子是,它甚至支持下载所有你需要的Struts库!它不仅提供自动地建立所 有的配置文件(包括Tiles和Validator),而且还提供了一个称为Struts Assistant的专用Struts面板,用于针对所有的Struts配置文件—包括tiles-config.xml和validation.xml —提供图形化的编辑器和生产向导。
IDEA没有为JSP/HTML页面提供可视化编辑器,但是常规的IDEA JSP/HTML编辑器已经比较优秀了—尽管没有一个可视化组件。对于嵌入式JavaScript(并提供完整的实现代码!)的支持对于操作大量 DHTML或AJAX代码的任何开发者都是一个极大的福音。另一个值得注意的优点是,JavaScript编辑器的发行还支持浏览器特定的元素(IE, Mozilla和Opera)以及流行的AJAX框架(例如Dojo,Bindows和Prototype)。(关于IDEA对Struts提供支持的例 子请参考图5和图6。)
165523129.gif
图5:建立IDEA Struts Web应用程序
165548190.gif
图6:IDEA Struts Assistant
对于顶级的Web 2.0开发,IDEA为GWT(Google Web Toolkit)相关开发提供了全面的支持—把GWT作为它的一个核心特征。我发现这会给人留下极为深刻的印象,特别是当考虑到GWT是如此新的AJAX开发框架时。
JSF开发
就象它的Struts伙伴一样,其实JSF工程选项仅是其灵活性的一个小小的练习:你可以选择你想使用哪一个版本的JSF(1.0,1.1,或 1.2)及相应的实现方式(JSF RI或Apache MyFaces),然后,IDEA甚至可以为你自动下载所要求的库。NetBeans开发小组应当特别注意:这的确是对于所有流行的开源框架或实现(而不 仅仅是Sun赞助的那些)的广泛支持,而在你们的IDE中恰恰缺乏这一点!而且,JSF模块还对JBoss Seam提供了现成的支持,这使大家几乎一致认为它很可能会成为JSF开发的标准框架(类似Struts框架中对于JSP提供的支持)。这进一步证明了 IntelliJ能够及时完好地支持Java web世界的前沿开发。
在重构方面,IntelliJ看上去全面支持JSF技术(例如,把一个托管bean移动到一个不同的包中会自动地更新faces-config.xml)。(有关IDEA对JSF支持的示例,请参考图7和图8。)
165612635.gif
图7:在IDEA中创建新的JSF Web应用程序
165635100.gif
图8:在IDEA中进行JSF相关配置
企业开发
IDEA针对J2EE规范提供了彻底的支持。更为重要的是,它对EJB 3.0和JPA也提供全面的支持,尽管还不如NetBeans支持得那么完善(NetBeans能够自动地为JPA提供者在持久单元中添加相应的入口并针 对所有实体域的命名查询自动生成代码,在我习惯于使用NetBeans 5.5后我发现在IDEA中却缺少这方面的支持)。不过,IDEA发行中的确提供了观察一个JPA持久单元ER图的选项,但遗憾的是,这看起来仅可用于一 个EJB模块中。当在一个常规web模块中使用JPA时,我无法激活这个ER图选项。除去这个小小的瑕疵之外,IDEA对于J2EE/Java EE 5的全面支持也是一流的。它甚至提供了一种从J2EE到Java EE 5基于注解的方法的升级路径!
至于应用程序服务器方面,IDEA针对所有的主流产品(也就是WebLogic,WebSphere,JBoss,Geronimo和Glassfish)都提供了相应的发布插件。