本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/11/why-drop-eclipse-use-intellij

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给出的建议实在是太帅了。

code

语言支持。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颜色,因此无需再打开浏览器查看了。

code

我可以保证,在你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又更胜一筹呢?欢迎各位读者一起讨论。

我们为何放弃Eclipse,投奔IntelliJ IDEA的更多相关文章

  1. Eclipse和intellij idea 快捷键对比

    Eclipse和intellij idea 快捷键对比

  2. Mac之OS系统下搭建JavaEE环境 <三> 之Eclipse 与 IntelliJ IDEA 的安装配置

    三.Eclipse 与 IntelliJ IDEA 的安装配置 1.Eclipse的安装配置 1 下载eclipse 到官网 https://www.eclipse.org/downloads/ecl ...

  3. 为何放弃Eclipse,选择IntelliJ IDEA,看完终于明白了

    如果你初次用idea,毫无目的的度娘如何使用IDEA     浪费的将会是大量的时间.一套让你花时间,少走弯路的视频教程(下载地址:https://pan.baidu.com/s/1gfeX3hD) ...

  4. Idea_从Eclipse转Intellij IDEA

    场景:使用Intellij IDEA感觉还是不是很顺手,想放弃又舍不得它,如:强大的代码提示功能. 本人使用IntelliJ IDEA其实并不太久,用了这段时间以后,觉得的确很是好用.刚刚从Eclip ...

  5. 【转】Maven3把命令行创建的web工程转成Eclipse和IntelliJ Idea的工程

    参考链接:http://blog.sina.com.cn/s/blog_4f925fc30102ed5b.html 大前提:在执行mvn eclipse:eclipse命令之前一定要先存在一个含有po ...

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

    话说,好马配好鞍,一个好的工匠,必定要有一套好的工具才能打造出最好的工艺给大家.之前,Plumbr团队里的所有成员都使用Eclipse编辑器,而如今,大家都成为IntelliJ IDEA用户.那么,到 ...

  7. linux ubuntu装机到可实现java(eclipse,intellij IDEA,android)开发全过程

    前言:linux是个很强的东西,你可以在其中体验开发的神速,有如神助,但是同时系统的不完整,错误漏洞多也是ubuntu等系统的诟病,所以大家遇到任何问题,第一时间请淡定,随后百度,google一下吧, ...

  8. Eclipse 和 Intellij idea 快捷键的区别

    描述 Eclipse IntelliJ 代码补全 Ctrl+space ctrl+space 打开类或者接口 (两个IDE都支持使用“驼峰字符”前缀的方式来过滤查找列表,进而轻松完成搜索:比如:可以使 ...

  9. spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

随机推荐

  1. CSS选择符、属性继承、优先级算法以及CSS3新增伪类、新特性

    CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?CSS新增了哪些特性?下面我整理了一些,仅供参考. CSS 选择符: 1)      id选择器(# myid) ...

  2. jquery开发表格插件项目之知识点累积

    js设置节点的属性与属性值用setAttribute(),获取节点的属性和属性值用getAttribute(). jquery 中使用attr 就可以获取及设置元素属性. 在设置checkbox状态时 ...

  3. Codeforces Round #394 (Div. 2) B. Dasha and friends 暴力

    B. Dasha and friends 题目连接: http://codeforces.com/contest/761/problem/B Description Running with barr ...

  4. Lodop客户端本地和集中打印 [是否安装][操作系统]

    前面有些博文或图片介绍了这两种方式,可能文字太多,耐心看完的人不多,这里简略描述+图片的方式解释一下. 客户端本地打印: 用户访问某网站,用自己本地的打印机打出来. 集中打印方式: 用户访问某网页,用 ...

  5. jPlayer插件的使用

    文讲一下本人在使用jPlayer插件时的整个过程.出现的BUG已经解决办法. 最近在做bootstrap项目,项目中需要一个响应式.兼容IE7的视频播放插件,经过上网查找,找到了所谓可以兼容到IE6的 ...

  6. C程序设计的抽象思维-递归过程-砝码称重

    [问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...

  7. Spring整合Disruptor

    原文:https://segmentfault.com/a/1190000014469173 什么是Disruptor 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列.那 ...

  8. 安装oracle 11g环境变量ORACLE_HOME的一个问题 转

    http://blog.itpub.net/26129555/viewspace-1243467/报错内容: OUI-10137:An Oracle Home with name ORACLE_HOM ...

  9. C++笔记:头文件的作用和写法

    from://http://ceeji.net/blog/c%E7%AC%94%E8%AE%B0%EF%BC%9A%E5%A4%B4%E6%96%87%E4%BB%B6%E7%9A%84%E4%BD% ...

  10. WordPress主题开发:开启侧边栏小工具功能

    步骤一:在主题的functions.php中,添加一段代码,开启侧边栏功能,代码如下: <?php //参数 $args = array( 'name' => __( '主侧边栏'), ' ...