为何 IntelliJ IDEA 比 Eclipse 更好

彭博
 彭博
发布于 2012年03月19日
收藏 120

疫情之下,程序员如何转型?共享数字化转型加速度,就在微软在线技术峰会>>>

圣战

有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是Windows还是Linux,Java还是C#;谁更强壮:Chuck Norris还是Van Damme。

其中的一个圣战便是Java IDE的选择:

有许多争论的话题是讨论它们哪个有更多的插件、快捷键等等。它们之间有太多的不同而很难决定什么才是最重要的。

因此,人们都表示两个IDE在功能性上都差不多,选择某一个则是个人喜好问题了。

我认为这不仅仅是个人喜好的问题,有客观的原因能表明:Intellij IDEA 肯定比Eclipse更好.

我不会去大量比较两者细微不同,例如插件与快捷键之类的。因为有一系列的blog是关于这些的,例如:[part 1] [part 2] [part 3]。我将会展示IDEA与Eclipse的一个最大的不同之处。通常IDEA和Eclipse的fans都不曾了解。前者已经习惯性的使用着它而不曾想象IDE缺少它会怎样,后者则没有使用它的习惯且难以想象有了它IDE能做得这么好。Eclipse的用户在把玩IDEA的时候通常都不会意识到这个不同点,因为他们习惯了以Eclipse模式工作。

为何我如此确信?

在开始说明之前,让我解释一下我是谁和为什么我的观点值得一听。

我使用Eclipse已经5年之久,我很了解它,我为它编写插件并真心地喜爱它。然后,我换了一个公司工作,并被强行转移到IDEA上开发,在这次“分手”后,我才最终意识到为什么IDEA更加敏锐。而如今我我已经使用IDEA一些年了,所以我能比较它们两者,因为我了解它们。

IDEA与Eclipse主要的不同

IDEA之所以更加敏锐的原因是:IDEA懂得上下文。这也是JetBrains员工命名IDEA为intelligent的原因。它真正的含义又是什么呢?IDEA检索你的整个项目,分析项目所有的内容,甚至构建语法树。幸亏有它,在任何时候无论你将鼠标放置在哪里,IDEA都知道你在哪里并知道在那能干什么。

仍旧不了然?别担心,在列举了以下几个例子后,一切就清楚了。

这种对上下文的理解表现在很多很多方式上,以下只是其中的一部分。

1、调试

通常在调试过程中,我们想要求一些表达式的值,在Eclipse中你需要选定这个表达式,选定整个表达式非常重要,否则你就没法求出它的值。然后,你可以使用Ctrl+Shift+I看到这个表达式的值。

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

基本上在两个IDE上都能让你做同样的事,但是使用IDEA会更加简单和快速。对此我认真的表示,这个差异太大了:就像天堂跟人间一样。在一个小小的IDEA对话窗口中就提供了自动完成,语法高亮以及你需要的一切。

2、自动完成

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

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

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

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

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

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

3、重构

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

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

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

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

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

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

每月惊奇

你会经常地惊讶于IDEA的聪敏表现,比如它为你提示一些选项的名称。它考虑到方法名称,变量类型甚至是变量值,以及其他的此类变量的名称,与之前你给定的此变量的名称,除了忽略了你的生肖。相信我,你会想说“Wow,IDEA也能这样?”,我想说至少每个月一次吧。

现在然我们看看Eclipse是怎么样给出建议的。

别忘了,选择整个"errorMessage"表达式哦。选择一个“推荐参数”的重构功能(通过菜单,没有什么快捷键可供使用),获得差不多相同的结果,然而,Eclipse不会给出变量名提示选项,但幸亏不会。

结论

如果我们选择Java IDE,那么Intellij IDEA肯定要比Eclipse好的。这不仅仅是个人喜好问题。从客观上看,IDEA更好。它是的你能够快捷地编写和修改代码。它给出恰当的名称提示,查找适合的方法。它不需要你特别地选择表达式便会猜测到你想要做的以及你想如何对它命名。IDEA预示着并给你提示。

P.S. Remarks

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

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

作为纪念我就尝试着列绝一些Eclipse可能比IDEA更好的地方:

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

最后的建议

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

 

via:dzone.com ,OSChina原创编译

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:为何 IntelliJ IDEA 比 Eclipse 更好
加载中

精彩评论

echo-neo
echo-neo

引用来自“linxux”的评论

"在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?"

是的,我真的需要!

引用来自“许雪里”的评论

我也非常需要!!! idea是个渣渣
这个是最需要的功能,公司项目特别多。好多老项目,代码量特别大。不关闭。会导致特别卡。
凯撒大弚
凯撒大弚
在90前的大部分程序猿眼中eclipse永远是初恋一般的存在
许雪里
许雪里

引用来自“linxux”的评论

"在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?"

是的,我真的需要!
我也非常需要!!! idea是个渣渣
‌‍‌‍‍Elife
水了一手好帖~明知是圣战,还下这种结论,就是一个开发工具,哪个用着习惯就用哪个,值得比来比去?有这功夫不如泡泡妞去~

最新评论(173

I
I_am_father
跟老师学过一段时间 idea,最终我还是不知道如果我要新建两个项目,是开两个模块,还是在一个模块中建第二个模块。在第一个模块中建第二个模块文件夹就会包裹在第一个模块的文件夹下面,这在逻辑上让我很难接受。开两个模块感觉更麻烦。而且"在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?"这个功能我真的很需要,这可以让我很轻松的对项目进行分类,在我需要的时候可以很轻松的找到它。idea更加智能,这个功能对我来说不是必须的,也许我的技术还达不到需要用idea的程度吧。尽管eclipse的界面很low,idea的界面比较潮。不过这就跟win 10和win 7一样吧,虽然官方说win 10有很多好处但我感觉不出来(吐槽一下,现在买的笔记本都是万恶的win 10)。虽然我在用,但我只感觉到了win 10的卡以及强迫性更新。
xiexiaobo
xiexiaobo
说到底还是你不会用而以,对于IDEA而言,模块就是一个文件夹而以(还有,File->open就是你们所说的工作区,一个新窗口而以,你们只是被eclipse强行洗了个脑而以,模块也好,项目也好,它们就是一个文件夹而以),需要引入就在设置里去配,不需要引用可以加mark标签排除,需要用它的jar包也可以在部署里配置,调试的时候就会自动对引用模块做jar或者编译生成,只要电脑配置够高(分2G内存足以),这很简单有那么难受?说白了喜欢eclipse的无非是先入为主懒得换而以,不想改变现状,跟做人处事是一样的。对于这些人而言,改变现状意味着费时费力浪费精力还不一定有收获!我eclipse用了也七年多了,发现idea时用时也不习惯,但熟悉它的套路后,才发现它的好并不是吹出来,收费的东西并不简单,我这么说吧,我在IDEA上进行的任务是全栈开发(JAVA,WEB,数据库远程调试,GIT项目提交 ,SSH项目测试发布,项目上生产自动部署)一条龙全搞定,都2019了,还在死抗呢,看看新生代的程序猿们,都在转IDEA了,要不是那些老师教学需要,eclipse是什么可能都不知道了
天天编码

引用来自“游客”的评论

用着用着还是用回eclipse了
eclipse一看就知道怎么用
这个idea就是找不到北
你觉得 IDEA 不好学的原因是 Eclipse 用习惯了,而 IDEA 采用了与 Eclipse 不同的设计,更加的科学,特别是结合 Maven 使用时。
给你推荐一个 IntelliJ IDEA 2017 的详细图文入门教程吧。
[Intellij IDEA 2017 详细图文教程之概述](http://www.tiantianbianma.com/intellij-idea-tutorial-overview.html/)
sosqrn
sosqrn

引用来自“凯撒大弚”的评论

在90前的大部分程序猿眼中eclipse永远是初恋一般的存在
Idea在很多方面比Eclipse做得完善多了,不是不愿意接受新事物,Eclipse受欢迎不仅仅在中国,使用Eclipse开发超过五年到人不多,但真的熟练运用或者说掌握Eclipse的没几个人,Idea,JBuilder,Netbeans也一样,ide只是辅助工具,ide只是辅助工具,ide只是辅助工具
wangning76
wangning76

引用来自“linxux”的评论

"在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?"

是的,我真的需要!

引用来自“许雪里”的评论

我也非常需要!!! idea是个渣渣

引用来自“echo-neo”的评论

这个是最需要的功能,公司项目特别多。好多老项目,代码量特别大。不关闭。会导致特别卡。
是的,我真的需要!
smile_灰太狼
smile_灰太狼
eclipse 用的两年了 去一家新公司强制用IEDA 等我离职那天 我又换回了 我不知道哪个更好 ,但是我个人习惯还是喜欢 eclipse
‌‍‌‍‍Elife

引用来自“linxux”的评论

"在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?"

是的,我真的需要!

引用来自“许雪里”的评论

我也非常需要!!! idea是个渣渣

引用来自“echo-neo”的评论

这个是最需要的功能,公司项目特别多。好多老项目,代码量特别大。不关闭。会导致特别卡。
确实很需要!!!!
连仍数枚手雷
连仍数枚手雷
非常需要
‌‍‌‍‍Elife
水了一手好帖~明知是圣战,还下这种结论,就是一个开发工具,哪个用着习惯就用哪个,值得比来比去?有这功夫不如泡泡妞去~
echo-neo
echo-neo

引用来自“linxux”的评论

"在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?"

是的,我真的需要!

引用来自“许雪里”的评论

我也非常需要!!! idea是个渣渣
这个是最需要的功能,公司项目特别多。好多老项目,代码量特别大。不关闭。会导致特别卡。
凯撒大弚
凯撒大弚
在90前的大部分程序猿眼中eclipse永远是初恋一般的存在
太清
最重要的一点,,,IDEA收费,想要用需要先交费或者先破解
返回顶部
顶部