2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

  • 2013-11-14
  • 本文字数:2347 字

    阅读完需:约 8 分钟

Nikita Salnikov Tarnovski plumbr 的高级开发者,也是一位应用性能调优的专家,他拥有多年的性能调优经验与 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 又更胜一筹呢?欢迎各位读者一起讨论。

2013-11-14 01:0835133
用户头像

发布了 88 篇内容, 共 272.5 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

在 Linux 中使用 cp 命令

树上有只程序猿

Linux copy

NFTScan | 08.07~08.13 NFT 市场热点汇总

NFT Research

NFT\

OpenHarmony Meetup 广州站 OpenHarmony正当时—技术开源

OpenHarmony开发者

OpenHarmony

【墨菲安全实验室】Smartbi未授权设置Token回调地址获取管理员权限

墨菲安全

网络安全 安全 BI

Koordinator 异构资源/任务调度实践

阿里巴巴云原生

阿里云 开源 云原生

亚信科技AntDB &U8 cloud联合产品亮相U8 cloud信创云ERP新品体验会(西安站)

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

在软件开发领域寻找更安全的众包平台?YesPMP助您无忧!

知者如C

对标数据科学家,直面AI浪潮丨和鲸助力中国石油大学(华东)理学院,打造有学科特色的数据科学与大数据专业

ModelWhale

大数据 人才培养 数据科学 高等教育 数据科学家

在Next.js 13中使用React Server组件实现国际化

汽车之家客户端前端团队

React next.js app route RSC

IT工程化,提升数科公司运营能力

用友BIP

数科公司

GaussDB技术解读系列之应用无损透明(ALT)

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

深入思考 Next.js App Directory 架构

汽车之家客户端前端团队

架构 nextjs App Directory

优测云服务平台|【压力测试功能升级】轻松压测

优测云服务平台

性能测试 压力测试 并发测试 云性能测试

软件测试/测试开发丨Python 模块与包 学习笔记

测试人

Python 程序员 软件测试 测试开发

【墨菲安全实验室】 Apache Airflow Drill Provider < 2.4.3 存在任意文件读取漏洞(CVE-2023-39553)

墨菲安全

Apache 网络安全 安全 漏洞 apache 社区

软件测试/测试开发丨Python 虚拟环境及pip环境管理

测试人

Python 程序员 软件测试 测试开发

软件测试/测试开发丨Python 多态 学习笔记

测试人

Python 软件测试 测试开发 多态

实录分享 | 使用Prometheus和Grafana监控Alluxio运行状况

Alluxio

分布式 Grafana #Prometheus Alluxio 大数据 开源

深度学习入门

统信软件

如何选择最佳的文件传输协议?(FTP、TFTP、Raysync)

镭速

文件传输协议

17. 正则表达式

茶桁

Python 正则表达式

OSCS开源安全周报第 55 期:JeecgBoot 远程代码执行漏洞

墨菲安全

网络安全 安全 漏洞

SpringBoot有几种获取Request对象的方法?

王磊

java面试

面部表情识别技术的伦理问题与应对策略

数据堂

现代技术与语言翻译的未来

汽车之家客户端前端团队

AI 语言翻译 现代技术 AI翻译

湖仓一体:国产基础软件的创新突破与弯道超车

极客天地

使用FTP文件传输协议的潜在风险

镭速

文件传输协议

我们为何放弃Eclipse,投奔IntelliJ IDEA_Java_张龙_InfoQ精选文章