当前位置: 首页 > news >正文

Eclipse,NetBeans及IntelliJ—Java IDE大战之IntelliJ IDEA篇

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)都提供了相应的发布插件。

相关文章:

  • Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
  • Tomcat 配置集锦
  • vue table内修改内容
  • Uva 11078 简单dp
  • 如何从在线视频网站下载视频
  • mysql考试总结
  • linux 编译内核
  • java nio(一)buffer
  • Sharepoint列表事件处理程序有小问题。
  • git server搭建
  • python、GO中数组的定义。
  • 管理者应有意识地提高以下八项能力
  • *2 echo、printf、mkdir命令的应用
  • 图书 网管天下系列图书 之 网络管理工具实用详解 目录
  • 原生JS与jQuery对AJAX的实现
  • [Vue CLI 3] 配置解析之 css.extract
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Android单元测试 - 几个重要问题
  • laravel 用artisan创建自己的模板
  • Redis 中的布隆过滤器
  • 聊聊sentinel的DegradeSlot
  • 那些年我们用过的显示性能指标
  • 思否第一天
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 自动记录MySQL慢查询快照脚本
  • 积累各种好的链接
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​第20课 在Android Native开发中加入新的C++类
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (分布式缓存)Redis哨兵
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net Web窗口页属性
  • .net6 webapi log4net完整配置使用流程
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .Net下的签名与混淆
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • [04] Android逐帧动画(一)
  • [1] 平面(Plane)图形的生成算法
  • [14]内置对象
  • [Assignment] C++1
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [docker]docker网络-直接路由模式
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [Hibernate] - Fetching strategies