a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 153|回复: 1

[基础知识] 四大顶级Java编程工具横向对比

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
好的程序员总是对开发环境有着不同寻常的熟悉,有的人可能对完整的IDE熟悉,它们也是本文的重点,还有人可能会emacs或 vi/vim这样的编辑器熟悉,但据调查发现,开发人员每隔几年就会转移到新的IDE,有可能是项目需要,或跳槽到了新公司,或是自己的偏好发生了转移。 转自:考试网 - [Examw.Com]    许多开发人员在选择新的编程工具时总会犯难,为了解开你心中的疑团,本文就对流行的Java开发工具做一次全面的横向对比,看完本文说不定就不再犯难 了。好吧,首先请各位选手登台亮相吧,它们分别是:Eclipse,JetBrains IntelliJ IDEA,Netbeans和Oracle JDeveloper。这些工具都很优秀,对重构,语法检查和调试的支持都很好,大都能直接从IDE将项目部署到服务器,并能进行远程调试。单独对比它们 的功能已经没有什么意义了,因为它们都支持插件,我们更注重的是易用性,文档和帮助系统的质量,以及插件的数量和质量。提到插件就不得不提Eclipse 基金会,长期以来它都信奉和推崇插件,Eclipse的插件数非常丰富,每次发行新版本都会同步推出大量的新插件。
% Z# W, v* V, _8 y    Netbeans和 IntelliJ IDEA也有很多的插件,但它们更注重用户体验,JDeveloper同样易于使用,不过插件数量就少一些,此外,它和Oracle的软件堆栈联系紧密, 从商业角度出发更有吸引力,但也正因为如此,JDeveloper才没有出现较大的插件生态系统。
; O% p  W% y. C& L* r2 |) P% T
图1 总分对比6 [) ]% G2 y! V, G+ ^" H. j
  这些IDE都支持Java开发中用到的通用语言(JSF,HTML,CSS,XML等),有些还支持JVM脚本语言(如Groovy和JRuby),甚 至是非Java语言(如C/C++,PHP)和建模语言(UML),下表显示了这些IDE默认安装支持的主要语言清单。  `( Y* N- h; T! }8 ~+ m; k3 M1 H

0 [8 y5 O5 C( D% ^图2 支持的开发语言对比. f. F* `" o. ~0 m4 I( N, D
  下表显示了所有IDE对Java SE和企业开发,以及对Java ME嵌入式和Android移动开发和的支持良好程度(这里不涉及任何第三方辅助增强工具,如果要加入第三方的工具,Eclipse对Java ME的支持将有所改善)。0 V, ~) t$ J3 m* \9 j

5 m- e$ A" @0 i) [- A图3 对开发平台支持的对比% Y) R8 M0 N' b- H
  在本次评测中,我们特别注重易用性和编码能力,我们认为它们是决定生产力和用户满意度的主要因素,它们和插件一样重要,在记分卡上会有所反映,我给每个因素设置了不同的权重,如果你不同意我的评估结果,你可以根据你的看法进行修改,并得出你自己的排名。, _; k! Z& C. O0 W5 A1 H0 P+ O
  Eclipse 3.6
  m6 _8 U4 j, y/ y$ G' P  Eclipse是所有Java IDE中最突出的一员,其用户量和插件规模都是无人能敌的,这一切首先要感谢其创始公司IBM,IBM将其开源,成立独立的基金会,并提供持续的资助,其 它厂商和社区也可以为Eclipse做贡献,事实证明,这个决策是非常英明的,Eclipse社区非常活跃,并为其贡献了大量优秀的插件。' J4 t: u0 F- f
  Eclipse厂商独立性的好处很快就有了回报,Google公开宣布Eclipse成为Android开发的首选平台,曾经Netbeans也成为 Google的热门候选,但Oracle最近针对Android中使用的Java虚拟机而起诉Google,让Google彻底断了这个想法。" G) d$ H; k- ~5 Z
  最新版本是今年6月发布的3.6,代号太阳神,它加入了很多新的功能,稍后我会提及它们。Eclipse是自成一格的IDE,其界面布局和其它IDE有 着很大的不同,其中最重要的一个概念就是透视图,根据不同的行为,显示的透视图可能不一样,这种设计是为了满足丰富的插件使用,因此其界面布局有时会发生 很大的变化。; ?$ ?6 k, u' }3 H4 X0 W
  在基本的Java开发环境中,Eclipse放弃了一些约定,它要求用户遵循它的规则,例如,在创建项目前需要先创建一个 工作区,项目是创建在工作区之下的,你也可以在工作区下面创建工作集,对工作区的依赖意味着项目的迁移是件麻烦事,向导提示往往让人犯晕,“放手去做”的 思想在Eclipse中行不通,几乎所有事情都需要填写对话框或选择项,要么无法区分或不直观。& j% J. f0 ]1 z" a" T  k* e1 |
  B6 D0 G$ F9 o: N3 [
图4 Eclipse IDE的Java编码界面$ F3 {. ]1 _$ c5 j% i5 }6 p  Y4 F
  例如,在未安装Groovy插件前,将一个混合了Groovy和Java的项目导入到Eclipse,如果你点击Groovy文件进行编辑,对弹出一个 菜单,包含四个选项:文本编辑器,系统编辑器,本地编辑器和默认编辑器,因为没有提供任何帮助或提示信息,在这里就只能靠猜的方法选择了,事情还没完,如 果你选择系统编辑器,Eclipse开始运行脚本,而不是打开编辑它,总之,开发人员需要有丰富的经验才能很好地驾驭好Eclipse,不要迷恋向导是真 理。, m- y2 R& T4 s: D2 j
  要摸清Eclipse的底细,用户得严重依赖于帮助系统,这么多年来,Eclipse的帮助系统确实进步了不少,但仍然有不足之 处。此外,Eclipse早期版本会虚假报告错误数量,不过现在这一现象已基本得到消除,虽然每次发布新的版本都会修复一些问题,但其核心的编辑功能应该 重写和重新设计。, \. V3 C. B- O- L. R6 n
  我还要补充一点,在Java开发领域,Eclipse的设计问题必须要改进了,现在它面对的竞争对手一个也不差,它的 那些缺点更能说明问题,在其它领域,如C开发,原本就鲜有优秀的IDE,因此抱怨的声音也很少,Eclipse现在也是Linux下C/C++开发的主要 IDE。
3 v' {' }. f6 g  尽管存在问题,使用Eclipse的插件可以获得无限的扩展性,这也是为什么许多插件开发人员力挺Eclipse的原因,许多 优秀的Eclipse插件在其它IDE中是找不到的,因为这些插件的开发者不愿意移植,如著名的任务管理器Mylin,你只能在Eclipse中享用它。, z" ^, N9 t$ `1 p, l4 T
  过去,Eclipse插件管理一直被用户诟病,因为插件之间的依赖性太强了,Eclipse已经意识到问题的严重性,并在逐渐解决这些问题,今年发布了Eclipse Marketplace,一举解决了寻找插件的困难。0 g3 f* [+ E) o1 \8 C5 L5 i& U
  JetBrains IntelliJ IDEA 9.0.3
8 ~7 K) V' e' \0 E& x  }% T/ O  JetBrains的IntelliJ有两种版本:付费和免费的开源社区版本,本文用于比较的是其付费版本,社区版只提供了基本的编辑功能。 IntelliJ IDEA比其它IDE的速度要快,因此吸引了大批忠实用户。对于初学者,IntelliJ的开发人员经常关注Java社区的一举一动,因此他们总能以最快 的速度添加对新的,热门产品的支持,如IntelliJ是第一个为Groovy和Grails提供强大支持的IDE,也是第一个为JavaScript提 供高级支持和调试功能的IDE,即使它不是第一个提供支持的,也会争取是第二个,或是提供更好的支持。IntelliJ可与Ant和Maven无缝集成, 支持Spring,并能够从Java编码跳跃到Adobe Flex和PHP。3 O8 g6 n$ O* Y, U4 {, Z
  IntelliJ IDEA凭借其独树一帜的功能赢得了众多用户,如几年前,它率先推出用于单元测试的结果对比窗口,在进行单元测试时,可以并排对比预期结果和实际输出,这在当时可是非常拉风的功能。
& Y1 ]3 d: c. N4 l' }# y0 {  即便是如今,它的功能也比其它竞争对手更优秀,有些功能完全是独一无二的,例如,它提供的重构工具就比其它IDE强大得多,此外,它内置的语法检查器不 仅可以揪出明显的语法错误,还可以“闻”出问题,那些写得不好,但可以正常运行的代码在它灵敏的嗅觉下暴露无遗,这样的代码实现包括:简单功能复杂化,只 有一个为“真”的条件等。IntelliJ还提供了代码覆盖工具,它能在IDE中显示测试时哪些代码被执行过了,IntelliJ还捆绑了开源的EMMA 产品。
1 y: m3 E% _5 l3 G  n5 R  p  t: o" S. t0 X$ N5 [
图5 IntelliJ IDEA有两个并排的编辑器
: {! A8 q4 D# ?9 k! T4 m0 ~3 N  IntelliJ还有一个很独到的功能,那就是高亮显示重复的代码,在一个很大的代码库中要找出重复的代码可不是件容易的事情,它还提供了一个依赖分析工具,可以准确地显示出方法之间的依赖关系。  x+ G  j1 v1 ?* L% O( ?
  IntelliJ往往会预先考虑到很多需求,例如,这里提到的所有IDE都有一个相同的弹出式功能,当你在编辑器中输入方法的名称时会弹出一个辅助窗 口,这个功能也被称为自动完成,在IntelliJ中,它会借助代码上下文信息猜测你要使用的函数,并将其置于列表顶部,因此使用箭头键向下滚动的几率就 小多了,最不可思议的是,它的准确率很高,这是一个非常人性化的功能。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:28 | 显示全部楼层

四大顶级Java编程工具横向对比

 说了这么多的优点,难道IntelliJ就没有缺点了吗,当然不 是,抱怨最多的就是缺乏良好的文档支持,如果遇到问题可能没有人能帮得上忙,要弄清楚其高级功能也不容易,幸运的是,开发商会回答电子邮件提问,但要想得 到正确的答案,一次只能问一个问题,由于开发商在俄罗斯,因此还需要忍受时差,IntelliJ的第二个问题是启动时间过长,虽然在9.0中有所改善,但 启动速度仍然缓慢。除了这些问题,IntelliJ是一个优秀的IDE,与其它竞争对手比起来,它是一款成功的商业产品。   NetBeans 6.9- [( e* c% E3 F  |; U
  过去5年中,NetBeans的市场占有率上升很快,据位于纽约的BZ市调公司发布的年度Java IDE调查报告显示,2005 NetBeans在受访者中的使用比例是17.9%,今年这一数字翻了一番,达到了35.7%,它是这个期间上升最大的Java IDE,在总的普及程度方面,NetBeans仅仅次于排名第一的Eclipse。
8 T. q& H! t. [  NetBeans取得今天的成绩是和它的前主人 Sun微系统公司悉心关注分不开的,当今年早些时候Oracle收购Sun时,Java社区对NetBeans的命运非常关注,特别是当Oracle宣布 不再继续支持Sun的开源项目时,如OpenSolaris和Kenai托管项目,关注度更是达到了前所未有的高度。  I# n, {# f( S- i8 o) z' a: ]
  Oracle开发 工具产品管理老大Duncan Mills传达了Oracle的旨意,NetBeans将会继续保留,他说:“我们会积极支持JDeveloper和 NetBeans,JDeveloper主要用于内部和企业用户,特别是那些需要Oracle融合中间件解决方案的用户,而NetBeans主要为那些想 开发其它技术的用户提供,我们希望他们最终迁移到Oracle解决方案和JDeveloper”。
( h* R# a) L5 w' d$ d* @* C  NetBeans最突出的优点是它的 易用性,轻盈和简洁,访问它的下载页面就可以感受到这种氛围,例如,下载NetBeans时,你会看到它提供了多种预配置的版本,你只需要选择合适的下载 即可,Eclipse也有类似的体贴之处,而IntelliJ和JDeveloper只提供了粗暴的下载链接。
; L; {- n( r, m% q, v$ I; a1 q2 q! U: x
图6 NetBeans编辑器,下方是从代码抽取的未完成任务列表
: o5 g! m& W$ c: a+ w  NetBeans支持JRuby和JavaFX,这是其它IDE所忽略的,当然,NetBeans也是支持C/C++和PHP的,JRuby最初是由 Sun开发的,这也是为什么NetBeans要支持它的缘故。JRuby重要开发人员Charles Nutter最近告诉我,在语言支持方面,NetBeans有不可逾越的优势,它也支持桌面脚本语言JavaFX,Oracle也表示会坚定不移地推动这 项技术的发展,但引来的质疑声也很大,因为JavaFX在用户中间的反响并不好。NetBeans一度停止了对UML图的支持,但幸好现在又提供了。  r7 q9 f5 M; Q: A
  NetBeans早在几年前就经过了完全重新设计,保留了简单易用的导航,它和IntelliJ不一样,IntelliJ是在输入时执行语法检 查,NetBeans是在后台不断编译,Eclipse有一个配置选项也可以提供类似的功能,这意味着一旦你完成编码,就可以运行代码 了,NetBeans也可以在后台为每个项目创建一个Ant生成文件,对开发人员来说,Ant生成文件是一个非常有用的资源,开发人员可以用它精确地控制 IDE的生成过程。
; q" x+ b% f4 K- Q; J7 K  NetBeans还附带了一个分析器,一个Juint单元测试生成器,以及一个国际化字符向导,对于企业级开发,它 提供了绑定Tomcat或GlassFish Open Server的下载选项,为了监控运行的应用程序,NetBeans集成了对JMX(Java管理扩展)和Jconsole的支持。! T4 _& E; C0 {; Z, u, d
  NetBeans的插件数量远远少于Eclipse,和IntelliJ IDEA的插件数量相当,其中好多插件都是从Eclipse平台移植过来的,正如我前面提到的,许多Eclipse插件开发者现在都不再往其它平台移植 了,但如果NetBeans继续以最近5年的速度增长,也许情况会有所变化,就目前而言,插件是NetBeans最大的弱项,其它方面NetBeans算 得上是最用户友好的IDE了。4 f8 t# u. x: r
  Oracle JDeveloper Studio 11g (11.1.1.3.0)1 `) l; I! W# G
  Oracle的JDeveloper Studio和这里比较的其它产品有很大不同,那句“走自己的路,让别人去说吧”的名言用来形容它最合适不过了,首先它不是免费的,源代码不对外开放,确切地说,它更像是Oracle的内部开发工具。* l6 t8 G  D# I- i8 Q$ C" P
  受Oracle的影响,JDeveloper在某些方面显得非常狭隘,但它也有其独到之处,有趣的是,Oracle公司其它产品的版本号永远不能超过其核心产品 – 数据库的版本号,因此我们经常看到Oracle产品的版本号都很长很长。
( {% w! h0 R4 N$ I% t, M. l/ t/ K  JDeveloper的安装很简单,但最终在系统中注册的产品名称居然是“Oracle融合中间件”,大多数人认为开发工具不属于中间件范畴,但 Oracle坚持这样分类估计是想强调其对中间件开发的支持强度,例如,JDeveloper为ADF(应用程序开发框架)和Java Server Faces(JSF)组件集提供了许多支持,也支持TopLink(Oracle从BEA收购取得的持久化层),JDeveloper也提供了大量的 Java EE工具,包括一个Weblogic Server的嵌入式版本,它可以在IDE内启动和管理。
4 C/ N  m& f* v0 H6 C# j- H/ l  如果从上到下全部使用Oracle软件堆栈中的产品,JDeveloper一定不会让你失望,例如,你可以将ADF中的Oracle JSF组件切换成其它厂家的,你还可以做一些所见即所得的UI开发。* B- m3 |3 P5 @: S4 S
9 S" F% R, p% h" H8 h
图7 JDeveloper编辑器,底部面板用于管理嵌入的Weblogic Server实例
  ~1 p3 |8 |9 L. x4 J, p  JDeveloper和其它IDE比起来,其响应速度较快,帮助信息也很全,按下帮助组合键,屏幕很快弹出相关的帮助信息,在这方面,它提供的帮助信息 和其它IDE比起来,其上下文感应能力更强。JDeveloper也内置了分析器,可以测量性能和内存消耗,它的语法检查器还发现了一向自诩的 IntelliJ IDEA的代码校验工具未能发现的错误,功夫不负有心人,Oracle在这方面下了大力气,效果就是不一样。
; M3 K& Q# ]# Q& |2 s. W+ s  JDeveloper的弱项是缺乏一个强大的插件生态系统,这和Oracle此前忽略该领域的决策息息相关,不过现在Oracle已经醒悟了,虽然 JDeveloper也有不少插件了,但大部分都是公司自己写的,几乎看不到第三方贡献的插件,我找了很久都没有发现代码覆盖分析插件,这是阻碍 JDeveloper发展的一个重大限制。! B1 g' x8 I8 T4 {3 g
  Oracle清楚地表明JDeveloper将继续作为公司的主要开发环境,对于那些致力于Oracle软件堆栈开发的组织而言,JDeveloper是不二之选。
% C; w9 o+ f* j0 t+ i9 q! ?0 ~8 l  下表对几个流行的Java IDE做了一个概述:
% h2 `' j8 h  D, G7 o! G" \  _- CJava IDE平台成本总结Eclipse 3.6Java 5,Mac OS X,Windows,Linux免费Java IDE市场的绝对领导者,每年一次重大发布,第三方插件非常丰富,但Eclipse难学,难用,简单任务被复杂化JetBrains IntelliJ IDEA 9.0.3JDK 5或6,Mac OS X,Windows,Linux$295本次评测唯一的商业软件,其功能完善,易用,但文档仍然不够完善NetBeans 6.9JDK 6,Windows,Mac OS X,Linux免费一款优秀的,易于使用的完整IDE,支持除Java外的许多编程语言,其插件没有Eclipse多,功能没有IntelliJ IDEA完善Oracle JDeveloper Studio 11gJDK 6,Windows,Mac OS X,Linux免费一个稳定的,闭源的Java IDE,良好的企业级开发支持,和Oracle其它产品结合紧密,插件数量很少,几乎都是官方提供的
+ u4 L5 h+ N* j1 P& R% l% C
# f! i; w4 \; x& j2 p* S1 G- w* Z  _  其它IDE
- W- i2 E, Y2 ]( V! a  为什么有这么多厂商和开源爱好者为Java编写IDE仍然是个迷,之前我们曾介绍了9款Python开发工具,Java IDE领域也毫不示弱,但Java已经很成熟了,因此现在已经很少出现新的IDE,下面这些曾经资深的开发环境都面临退役了。  g; D3 E$ E# I; ^0 P
  Embarcadero JBuilder:目前该产品的最近一个更新版本还是JBuilder 2008,根据Embarcadero公司的发言人表示,2008年从Borland公司买下其IDE产品线后,改名为CodeGear了,鉴于公司还在 开发其它IDE,如Delphi,因此可以认为JBuilder已经走到了生命的尽头。
0 x$ p" q" i" G- T. [  Genuitec MyEclipse:MyEclipse是一个基于Eclipse,捆绑了一组插件的订阅产品,前面我们曾提到,Eclipse插件的寻找,安装和管理都 很繁琐,而MyEclipse正是为此而生,Genuitec也开发一些自己独有的插件,MyEclipse的订阅价格每年从$32-$199不等,包括 技术支持费用。
% m, h8 n- t) |+ Z  IBM Rational Application Developer:这个IDE(即著名的RAD)是IBM推出的一系列开发环境中的一部分,RAD和它的兄弟们都是基于Eclipse构建的,简而言之 就是在Eclipse基础上换了一张皮,加入了一些自己的东西,如架构师版本提供了UML建模工具,商业开发版本支持IBM的4GL等,如果你在使用 WebSphere,这些工具的威力就可以显示出来了,但大多数功能和MyEclipse及其他免费的IDE并没有多大区别。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 22:47 , Processed in 0.267773 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表