BT

您是否属于早期采用者或者创新人士?InfoQ正在努力为您设计更多新功能。了解更多

我们为何放弃Eclipse,投奔IntelliJ IDEA

| 作者 张龙 关注 9 他的粉丝 发布于 2013年11月14日. 估计阅读时间: 不到一分钟 | 硅谷人工智能、机器学习、互联网金融、未来移动技术架构 ,尽在QCon上海2017

Nikita Salnikov Tarnovskiplumbr的高级开发者,也是一位应用性能调优的专家,他拥有多年的性能调优经验与Java开发经验。很长时间以来,Tarnovski及plumbr的诸多开发者一直在使用Eclipse进行应用开发,不过随着时间的发展,现在plumbr的很多人都开始放弃Eclipse,转而投向IntelliJ IDEA的怀抱。Tarnovski也因此专门撰文谈到这个转型背后的原因,并详尽对比了Eclipse与IDEA的各项功能。

首先说一下背景:长久以来,我们plumbr的所有人一直都在使用Eclipse进行应用开发。不过现在在办公室放眼望去,我发现整个团队都变成了IntelliJ IDEA的用户。那么是什么促成了这种转变,让我们从免费的工具转而投向了每年需要花费600美金才能使用的工具呢?下面我就来谈谈这背后的几个原因,看过之后也许你也会开始考虑转变了。

一段时间以来,我的朋友Anton Arhipov一直在说服我使用IntelliJ IDEA,一开始我压根就听不进去,直到有一次他使用了快捷键ALT+ENTER才真正触动了我。根据文档所述,这个快捷键貌似也没什么,只不过是提供了建议的快速修复而已。不过在这个特性背后的诸多IntelliJ特性却让我感到非常振奋。

索引。不知道JetBrains的那帮家伙在背后到底是怎么做的,它的索引真是太快了,并且支持不同的内容。快速索引的好处体现在几个不同的可用性特性上:

  • 在敲入代码时,警告就会立刻出现:在Eclipse中,你需要手动进行分析,不过在IntelliJ中,这种信息反馈却是即时的。
  • 代码完成与代码生成:由于非常快速的索引,这种支持的速度要快上几个数量级。我猜你们肯定都记得在使用List时,Eclipse中那个臭名昭著的java.awt.List自动导入吧,Eclipse花了好几年才消除这个Bug。在使用IntelliJ时就绝不会遇到这种问题。
  • ALT+ENTER提供的修复:这个特性真的非常棒,在很多场景下都提供了巨大的帮助,真是震到我了。有时,我甚至怀疑他们是不是在我旁边安插了一个亚马逊土耳其机器人监视我的输入——IntelliJ给出的建议实在是太帅了。

语言支持。IntelliJ在处理不同内容类型的方式上看起来是那么自然和统一。无论我使用Java、JavaScript,还是HTML或是JPA查询,IntelliJ提供的语法支持都是那么棒,并且我所执行的操作在各种语言间也是高度统一的。每次从Java切换到其他语言时,我都不需要学习新的快捷键。IntelliJ提供的代码完成支持,特别是对JavaScript的支持是Eclipse力所不逮的,Eclipse在这方面没法与IntelliJ相提并论。

透视图。实际上,IntelliJ并没有提供什么透视图的概念。当我在处理不同的内容时,Eclipse总是试图为我提供“最佳的透视图”。对于我来说,我看到的只是每次从开发切换到调试或是重构透视图时,屏幕的布局就会变得一团糟,Eclipse每次这么做都会让我心烦意乱。IntelliJ则针对操作提供了一个专门的与内容相关的窗口,这让我感到非常舒服,我也很喜欢IntelliJ的这种处理方式。

调试器。IntelliJ的调试器快得没法说,我也不打算再使用Eclipse的调试透视图了。它所提供的特性集也很不错,我最喜欢的是“Smart step into”,这样如果一行中存在多个方法调用,我就可以选择进入到哪个方法中了。

支持。Eclipse是由一个基金会提供支持的。这本身没什么问题,不过这个基金会的不同利益集团会使得管理与执行变得有些困难。对于我这样一个开发者来说,直接的结果就是看到Eclipse对于问题的支持要推迟几个星期,甚至不了了之。IntelliJ则不存在这样的问题,我的问题总是能得到及时的回答,他们也不会互相扯皮。

下面我再列出几个最近发现的不错的小特性:

  • JPA查询语法会在输入时得到纠正。这可以给我节省大量的时间,不用非得等到运行时才检查错误。
  • 属性文件集成。在属性文件中,我可以看到某个属性在源代码的哪个地方被使用了,还能快速检测出未被使用的属性。
  • 与不同浏览器的集成。为了测试HTML,我可以从IDE中启动不同的浏览器,这样就不必再单独打开浏览器和测试了。
  • 从IDE中可以直接看到CSS颜色,因此无需再打开浏览器查看了。

我可以保证,在你IntelliJ一个月的试用期结束后就再也不想回到过去了。不过坦诚地说,我还漏掉了Eclipse的一个特性——“保存动作”。在按下快捷键CTRL+S时可以创建一系列的触发动作,比如说可以组织导入、完成代码格式化以及添加@Override注解,一切都是自动进行的,这一点我还没有在IntelliJ中发现。

虽然我们还没有度量从Eclipse转移到IntelliJ之后生产力是否有了提升,不过我们非常喜欢手头上的这个新工具。我们也深信,好的工匠需要用最好的工具才能创造出最棒的艺术品。

读者Alexandro Blanco给出了这样的留言:

我使用Eclipse有8年多的时间,前一阵转向了IntelliJ进行Android开发(Android Studio),现在在公司从事Web开发使用的是NetBean。我要说的是,一旦突破使用上的障碍,这两款IDE都要好于Eclipse。

读者Pron则说到:

我同时在使用IntelliJ与NetBeans(很长时间以前就放弃了Eclipse),很多时候我更喜欢NetBeans。它更加漂亮、整洁、并且与Gradle集成度更好,这正是我急需的,不过IntelliJ对于Clojure则提供了完美的支持。

诸位InfoQ读者,相信国内的开发者还是使用Eclipse的居多。目前,占据主流市场的Java IDE有NetBeans、Eclipse与IntelliJ IDEA,其中前两个是免费的,而IntelliJ IDEA则提供了免费的社区版与收费的旗舰版,社区版在功能上会有一些限制。国内也有一些公司采用IntelliJ IDA进行开发,还有些开发者使用过其中两种,甚至多种IDE。那么你觉得从功能上、特性上、使用便利性上、速度上、以及更新发展等角度来看,哪个IDE是你最心仪的呢?原因有哪些?哪个IDE提供了其他IDE没有提供的优秀特性呢?对于多语言支持,哪个IDE又更胜一筹呢?欢迎各位读者一起讨论。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

我的看法 by feng liu

还是eclipse好用

IDEA最高 by Z Flytwokites

eclipse,netbeans,visualstudio都用过不短时间,都是中规中矩,符合对一个现代IDE的期望,但IntelliJ IDEA真是会被它感动到的,这才是一个智能的人性化的IDE。可能是IDEA是收费的有生存压力,如果做得还不如人家免费的好只能关门。

vim vim by 冯 兰池

没用过IDEA 但是感觉所有的IDE不加插件的情况下单就文本操作而言 没有比vim更好的....

仍然选择eclipse by 李 俊

信息IntelliJ 比较耗内存,
功能虽然多,但运行慢,我觉得有些功能和设计,eclipse可以学过来
如果你对eclipse的功能不满意,你可以开发一个插件来完善,idea你能吗?

IntelliJ绝对比Eclipse好一万倍 by 姚 琪琳

没有用过IntelliJ,不过最近一直在用Visual Studio + ReSharper,的确被ALT + ENTER震撼到了,以后如果再开发Java程序,必然会选择IntelliJ。而且JetBrains的产品是那么统一,一旦拥有,别无他求啊。

Re: 仍然选择eclipse by Wu Shiva

还真能

Re: 仍然选择eclipse by Wu Shiva

还真能

Re: 仍然选择eclipse by Wu Shiva

还真能

Intelij本身夜有一些问题 by dj yin

总体上要比eclipse强太多,但也有不足:
1.Maven支持的不太好,特别是多级工程导入的时候
2.Web工程热部署,只能通过jdpa实现
3.对中文支持有点问题,在写文档注释的时候
eclipse里面的runjettyrun太舒服了...配合maven工程...

Re: 仍然选择eclipse by Chen Long

1. 真正有几个人去开发eclipse的插件?
2. IntelliJ有插件接口,为其开发的插件也不在少,还有eclpse插件的wrapper
3. 3年前的主流配置跑intelliJ就无压力了。

Re: 仍然选择eclipse by 颖祺 高

ieda 也有插件的

clojure-clr 感觉还是notepad++好用 by Woods Alex

clojure-clr 感觉还是notepad++好用

用Jetbrain WebStorm写JavaScript by Evans Jim

IDEA好久没用了,不过最近用Jetbrain WebStorm写JavaScript,有触电般的快感。

Re: 仍然选择eclipse by tea shell

最近在试用IntelliJ,感觉确实比Eclipse在智能提示方面强一些。在我的机器上IntelliJ内存占用比Eclipse多,但运行速度却快一点。默认就已经集成了Maven、Git的插件,方便一些。

烂货intelliJ by 王 学超

烂货intelliJ,都多少个版本了,高分辨率的屏幕看的字体就跟像素画一样模糊

转投intellij by 秦 昆

1、速度快。
2、对github支持Command+K,但是问下 怎么能支持oschina的git库。
3、java和php都开始用这个
4、需要多多了解 intellij的设计理念及操作习惯。
5、相见恨晚。

支持Intel by 孔 明

综合来讲,Intel和Eclipse各有优劣,但是intel更炫更快.

其实真的是各有优势 by 马 名名

我说的 不是收费,免费的问题。反正intellij 破解的满天飞。
eclipse 两大优势 ,
一个是插件,
另一个是多工程 同时打开。

插件,优势不是一点半点。
eclipse 插件开发比较轻松。10年前就有人发过贴。其实我本人也在javaeye发出一个eclipse插件开发的贴子。可以说任何有一些JAVA基础的人,在向导的帮助下,都可以做一些简易的。打开文件夹,统计代码行什么的。
但是intellij 的插件开发手册太难了。

有人说了,那是你水平问题,跟intellij 有啥关系。
那我们不比插件开发,只说商业的插件。

eclipse 因为他的架构本身就是插件式,其它的框架只有几十M,java编译都是插件的作用。
这使得插件的契合度不高,但是,同时也就具备了另一优点,就是插件多,使用方便。
可以说,只要开发超过2年的,还很少有人没有下载eclipse 的其它插件的。

而intellij 的插件呢,你下载了试试,有一半安不上。偶尔几个安上了,功能真的是水的一B。
就之前intellij8 的时候,安过一个看图的,感觉还可以。因为确实跟其它视图不太相关。后来intellij本身也带这个功能了。
这是因为intellij的各插件,视图之间契合度高。


可以说,用过intellij 5年的人,也有可能只是更新一下版本,而没有安装intellij的其它插件。
这一方面说明intellij本身功能也确实比较全,比较多。
但是,另一方面,也说明第三方开发插件要想达到 原插件的高度,真的是太难了。

要说点具有高度的。
eclipse的插件开发plugins 环境 真的是太棒了。

你的插件可以随时在另一个eclipse里调试,这感觉真的是太爽了。

eclipse 的另一个优势 是多个项目 同时打开,在一起。

这个对于一般的人员无感觉。
但是,对于一些大公司,N个框架,

开发一个项目 ,一般要修改4个以上的子项目的时候,
你才知道 intellij在这方面,真的是没法活下去了。。


对这两点,eclipse 得10分,intellij 3分。
多项目这一点, intellij 1分。
---------------------------------------
但是,对于intellij 本身够用,打开工程 不多的时候,

intellij 10分,eclipse 8分。

最后说一句,

intellij 最强大的是重构。

从intellij8开始,这一点就是eclipse 拍马都追不上的。

起初的重构, eclipse不支持JSP。
intellij 重构,J2ee项目 统吃。

后来,eclipse 插件强大了,但是重构JSP的速度。
方法 abstract 等等,跟intellij差太远了。

另外,intellij重构,你可以拍胸脯。因为他不但告诉你JAVA引用。
还告诉你,注释中,字符串中,配置文件中。

有一个强大的列表。类似find .

当然,本文说的intellij 代码体现感,也确实强好多。

intellij 打代码,真的舒服。。

我特喜欢的是,变量的命 名,这在大公司中是必须的。变量一般名字都很长。
intellij 默认首字母小写,给你变量名。

还有字符串处理,“处理等等,intellij 真的是太贴心了

不考虑其它的因素。
纯J2EE项目,写代码速度,

intellij 10分,

eclipse 6分。

eclipse 是多面手。啥都能干。。只是JAVA这一块干的也不算太出色。
但是intellij 有特点。用的人就知道。

有一种 “酸爽” 的感觉。

不过,intellij 不强的地方,你同样也会晕死。。
不说别的,就说intellj 8在flex 的打压下,也支持 flex 项目。。

那个难用。。。


另外,就是JAVA类工具。我指的是用JAVA语言本身开发的。

一般都比较丑,字符也不锐利。
这真的不怪工具,这是JAVA 虚拟机的事。

而eclipse 他的这部分是dll文件,是本地化的。

你见到在虚拟机上打lol 还会比本机上打LOL 图像还清晰的么??

Re: 仍然选择eclipse by 杨 泽强

idea一样可以!

Re: 烂货intelliJ by 宁 宇

一看就知道是用windows敲代码的。。。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

20 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT