咖啡猫

导航

最好的Java IDE之争:Eclipse PK IntelliJ IDEA

话说,好马配好鞍,一个好的工匠,必定要有一套好的工具才能打造出最好的工艺给大家。之前,Plumbr团队里的所有成员都使用Eclipse编辑器,而如今,大家都成为IntelliJ IDEA用户。那么,到底是什么让大家抛弃老练且免费的战马,转而去抢高达600美元的座位呢?当然,IntelliJ IDEA也提供了开源免费的社区版本。下面不妨听原文作者细细道来,并列出了几大原因。

1.索引

尽管JetBrains的伙计正在做“引擎盖下”的事情,但是他们索引的确是极其快速,并且还支持各种不同的内容。快速的索引在几个可用性特征上已见成效:

 

  • 自动检索代码,并且会给出相应的警告:在Eclipse中,你必须手动启动分析,而IntelliJ
  • IDEA则会快速做出响应和回馈,它能懂得上下文。
  • 在相同的索引条件下,IntelliJ IDEA在代码完成和代码生成方面要好很多。大家还记得那个Lists里臭名昭著的java.awt.List自动导入,开发者花费数年才把“顶级推荐”予以删除掉,而使用IntelliJ IDEA完全没有这样的烦劳。
  • 按ALT+ENTER键会自动提供完成程序,该功能可以使用在多个场合,我甚至怀疑有Amazon Mechanical Turk在偷窥我,因为它的建议实在是太好了。

 

 

2.跨语言操作上更胜一筹

即使在IntelliJ IDEA里想要表现不同的内容,编辑起来也是非常自然的。无论是编辑Java、JavaScript、HTML或者是一个JPA查询——其跨语言操作都是非常的好。即使不是编辑Java代码,也无需重新设置快捷键。并且具有很好的代码补全功能,尤其是编写JavaScript代码,而Eclipse却无法提供支持。

3.给出基于上下文的建议

当开发者在着手处理不同的问题时,Eclipse试图给大家提供“最好的建议”,这也就意味着我的屏幕布局得不停的切换,从开发模式到调试再到重构等,这是非常令人困扰的。而现在,只需一个额外的上下文窗口即可解决上面所有问题。

4.调试

使用IntelliJ IDEA调试,你只需要把光标移到你的表达式中然后按下Alt+F8。IntelliJ IDEA会很好的理解这个你可能需要的表达式,然后显示一个对话窗口,其中有一些它给出的建议参数变量。你也可以编辑并在对话框中立即得到这个表达式的值。相当的方便!试过这个特性后,你就不会再想在Eclipse中调试了。

5.技术支持

Eclipse由基金会成立,这本身不是什么坏事,但由于基金会里的各个团体利益出发点不同,所以在管理和执行上肯定会有所不同。对于开发者来说,这并不是什么好事,当你想获得一些技术指导或支持时,它很有可能不能及时给你回复。而IntelliJ IDEA完全不会存在这样的问题。

下面是我最近发现的几个好东西:

 

  • 当你输入时,JPA查询语法会立即进行正确性检查,这样就节省了大量的时间来检查错误。
  • 属性文件集成:在一个属性文件里,开发者可以在源码里看到某个属性的使用状态。
  • 整合不同的浏览器:为了测试HTML代码的兼容性,开发者可以在IDE里建立不同的浏览器,这样开发者就无需安装各种不同的浏览器进行测试。
  • 在IDE的右边会显示CSS代码颜色,所以开发者不用在浏览器里对此进行检查。 

 

 

最近,越来越多的开发者体会到,使用IntelliJ IDEA要好于Eclipse,对此,笔者从网上搜集到了一些资料(以下内容节选自:为何IntelliJ IDEA比Eclipse更好):

1.自动完成

拥有自动完成功能的IDE要比notepad更加优秀,在这个领域,能感知上下文的IntelliJ IDEA有了质的飞跃。例如,我们开始如下一行代码:

 

1
assertElement(By.id("errorMessage"), vi

 

现在我们想要查找以vi开头的选项有哪些。

IntelliJ  IDEA怎么做的呢?无需等待任何的按键,它马上就能理解assertElement需要一个Conditaion类的示例作为第二个参数,而在Condition类中有一个静态变量名叫visible。IntelliJ IDEA会直接建议这个唯一的有效选项。

  

然而,Eclipse会怎么做呢?唉,它不能理解上下文,它不知道光标所在处就是assertElement方法的第二个参数。因此当你按下“神圣”的Ctrl+Space时,Eclipse只会简单的显示全局中以vi字母开头的一切。 

 

在一个美丽的弹出框中我看到了很多漂亮的高亮的格式规范的无用信息。 

2.重构

专业的程序员能够高效的使用IDE提供的重构功能。所有的现代IDE都提供许多印象深刻的重构功能。但还是那句,IntelliJ  IDEA的重构功能也很聪明智能。它们能读懂你需要什么,然后针对不同的情况提供给你最适合的解决方案。 

例如,假设有一个assertErrorMessageIsHidden方法: 

 

1
2
3
public void assertErrorMessageIsHidden() {
  assertElement(By.id("errorMessage"), Condition.visible);
}

我们以字符串“errorMessage”作为该方法的一个参数。

让我们先从IntelliJ IDEA开始,将光标放在任何字符串“errorMessage”上,按Ctrl+Alt+P(代表“parameter”),IntelliJ IDEA将会建议我们可以在哪些表达中用次字符串为参数。

 

当“errorMessage”表达式被选定以后,IntelliJ IDEA将会建议一些可能的能用做该参数的变量名称。 

 

IntelliJ IDEA在作为Java IDE时确实比Eclipse更好。如果你考虑他们其他方面的能力例如用于其他例如C++、Python、Scala的IDE上,或者是作为构建桌面的应用的平台,Eclipse很有可能拔得头筹。

事实上这是依赖于对他们的定义的,Eclipse已将自己定位为一个抽象平台,用来使用插件构建任何工具,而IntelliJ IDEA则定位为一个“智能的Java IDE”,而且它正如此。

3.Eclipse好于IntelliJ IDEA的地方

下面列一些Eclipse可能比IntelliJ IDEA更好的地方:

 

  • Eclipse看上去更棒,所有大题小做的SWT以及本地控件都用的很值。Eclipse看上去很稳定的深思熟虑过的程序,它有着漂亮的字体以及图标。然而当第一眼看到IntelliJ IDEA是,它像是作噱头的玩具一样,有着不完全的图标以及笨拙的Swing界面。
  • Eclipse拥有更强的项目结构支持。在IntelliJ IDEA中,你的项目是有模块组成。在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?
  • 为Eclipse编写插件似乎很简单
  • IntelliJ IDEA比Eclipse使用更多的系统资源。这其实也说得通--因为IntelliJ IDEA更加智能
  • 最后,Eclipse是免费的,然而IntelliJ IDEA Community版本已经够我用了

 

最后的建议

如果你需要漂亮的图标,用来创建桌面程序的平台,C++IDE或者你用一个低配的笔记本工作,那么Eclipse可能对你来说是更好的选择。但是如果你是一个正儿八经的Java开发者,你需要更快更方便的工具帮你集中注意于解决问题而不是让你分心,IntelliJ  IDEA则正是你所需要的。

关于IntelliJ IDEA

目前最新的稳定版本是12.1.4, 点击查看 IntelliJ IDEA最新版本介绍。

下载地址:

 

posted on 2013-09-22 16:10  咖啡猫1292  阅读(1489)  评论(0编辑  收藏  举报