讲 IntelliJ IDEA 的好,带更多人入坑

说几句老实话:

  • 劝别人换 IDE 就像劝一个已婚已久的人士出轨,自己得不到任何好处,别人还可能怪你多管闲事,所以你们都别做,这种痛我来承受就行了。
  • 如果你家老板让我用 Eclipse 工作,我更愿意选择离职。
  • 当你从其他 IDE 换到 IntelliJ IDEA 过程中,在初期你可能会老惦记着旧的各种便利或是习惯,你总会用旧的思维来揣摩新的,总感觉各种不合适,怀疑过去听到的所有各种 IntelliJ IDEA 传说。

当我们觉得某个东西不好用的时候,先问问自己真的弄懂了没。

开篇

请大家先回想下:是否一直觉得即使 IntelliJ IDEA 再智能、再好用,毕竟它是收费的,所以其所占市场份额肯定没法和开源的 Eclipse 相比较?

国内目前还没有相应的数据来回答这个问题,但是国外已经有一份不完全的调查,总结调查成果就是:2016 年 IntelliJ IDEA 份额终于赶超 Eclipse,具体表现如下图。

对于国内,如果有一天 IntelliJ IDEA 要超越 Eclipse 那个人感觉需要做的第一件事就是:大学的计算机老师先用 IntelliJ IDEA(第一印象真的很重要)。

如果国内外这场 IDE 战争能在今年或明年彻底结束,那我们应该疑问的是:已经成立十七年了,为何没有坚强后盾的 JetBrains 就这样活下来,并且活得还这么好?

附上一个 2013 年 JetBrains 圣彼得堡办公室:

正式

我们先回顾下 IDE 这个概念。Wiki 是这样说的:

集成开发环境(Integrated Development Environment,简称IDE,也称为Integration Design Environment、Integration Debugging Environment)是一种辅助程序开发人员开发软件的应用软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序,有些甚至可以设计图形接口。IDE通常包括编程语言编辑器、自动构建工具、通常还包括调试器。有些IDE包含编译器/解释器,如微软的Microsoft Visual Studio,有些则不包含,如Eclipse、SharpDevelop等,这些IDE是通过调用第三方编译器来实现代码的编译工作的。有时IDE还会包含版本控制系统和一些可以设计图形用户界面的工具。许多支持面向对象的现代化IDE还包括了类别浏览器、对象查看器、对象结构图。虽然目前有一些IDE支持多种编程语言(例如Eclipse、NetBeans、Microsoft Visual Studio),但是一般而言,IDE主要还是针对特定的编程语言而量身打造(例如Visual Basic)。

Wiki 的说法和我认可的 IDE 解释基本是一致的,IDE 核心就是用来辅助程序员做开发的,所以个人认为一个好的 IDE 应该是让你忘记 IDE 本身,只让你安静地沉浸在书写代码的过程中(划重点:点题了哦)。

接下来就让我说说 IntelliJ IDEA 是如何友好地做好它的本分。

JetBrains 的友好

个人认为不管是框架、IDE 或是其他技术什么的,好的文档就是成功的一半。我们来看看 JetBrains 是如何做好这一步的。

IntelliJ IDEA 的官网:

https://www.jetbrains.com/idea/

首页简洁明了地告诉了我们它有什么特点,当前最新版本是哪个版本,有哪些新特性,支持哪些框架,告诉我们社区版本和旗舰版有哪些区别差别,哪里可以下载、购买,哪里有学习资料。

对于一个新人来讲,该重点关注的基本都告诉了,现在我帮大家整理了这些友好的细节。

请问:这么用心做好文档的的 IDE 团队不多吧?

IntelliJ IDEA 的友好

IntelliJ IDEA 当前最新版本为:2017.1

2017 为大版本号,从 2016 年开始用年份命名,一年一个大版本。

1 小版本号,一般一年下来有 5 ~ 8 次的小版本更新。

IntelliJ IDEA 的友好主要体现在对各类技术的支持,以及一些人性化的辅助操作,只是这些人性化的具体操作太细节我在这里没办法讲,我也在 Github 教程也写过,对那一方面感兴趣的可以直接看下:IntelliJ IDEA 简体中文专题教程,这里我只罗列下 IntelliJ IDEA 对各类技术的支持。

  • 对主流 Java 框架的支持
    • Spring AOP/@AspectJ
    • Spring Batch
    • Spring Boot
    • Spring Cloud
    • Spring Data
    • Spring Integration Patterns
    • Spring MVC
    • Spring OSGi
    • Spring Security
    • Spring Support
    • Spring Web Flow
    • Spring Web Services
    • Spring WebSocket
    • Java EE: Batch Applications
    • Java EE: Bean Validation Support
      • Java EE: Contexts and Dependency Injection
    • Java EE: EJB, JPA, Servlets
    • Java EE: Java Server Faces
    • Java EE: JMS, JSON Processing, Concurrency, Transaction
    • Java EE: RESTful Web Services (JAX-RS)
    • Java EE: Web Services (JAX-WS)
    • Java EE: WebSockets
    • Struts
    • Hibernate
    • Mybatis(需要第三方插件)
  • 对主流容器的支持
    • Tomcat
      • TomEE
    • Jetty
    • JBoss
    • Glassfish
    • Resin
    • `WebLogic“
  • 对 JVM 语言的支持
    • Java(Java8 / Java9)
    • Scala
    • Groovy
    • Kotlin
  • 对版本控制的支持
    • Git
    • SVN
    • TFS
    • ClearCase
    • Mercurial
  • 对构建工具的支持
    • Maven
    • Gradle
    • Ant
  • 对各类 Clouds 工具的支持
    • Heroku
    • OpenShift
    • CloudBees
    • CloudFoundry
    • Google APp Engine
  • 对数据库工具的支持
    • MySQL
    • PostgreSQL
    • DB2
    • H2
    • SQL Server
  • 对移动端 Hybrid 开发的支持
    • PhoneGap
    • Cordova
    • Ionic
  • 对 Tasks 的支持
    • JIRA
    • YouTrack
    • Redmine
    • Trello
    • Gitlab
    • Github
  • 对 Android 的支持
  • 对 Docker 的支持
  • 对主流前端的支持,在这一点上 Eclipse / MyEclipse 拍马不急 IntelliJ IDEA 啊,毕竟基于 IntelliJ IDEA 架构的还有一个前端 IDE 神器叫做 WebStorm,下面会讲到。

WebStorm 的友好

说了后端 IDE 我们再来说说前端 IDE:WebStorm,来看看 JetBrains 团队的用心。

WebStorm 当前最新版本为:2017.1

官网特性的说明页面: https://www.jetbrains.com/webstorm/features/coding-assistance.html

简单的概括就是支持下面列表内容:

  • 构建工具:Grunt、Gulp、npm Scripts
  • 工作流:Yeoman
  • Hybrid 的支持:PhoneGap、Cordova、Ionic
  • 测试相关:Mocha、Jest
  • 检查相关:ESLint、JSCS、TSLint、Stylelint、JSHint、JSLint
  • JS 集:JavaScript、ECMAScript 6、TypeScript、CoffeeScript
  • 样式相关:Emmet、Less、Sass、SCSS、Stylus code、PostCSS
  • JS 库:React、React Native、Angular、Vue.js
  • 框架:Meteor
  • Trace 工具:spy-js
  • 其他语言支持:Dart
  • 容器:Docker For Node.js

是不是目前流行的前端技能树它基本都囊括了?至于写代码过程的提示、重构、调试这个需要你自己花点时间去感受。

从上面的 IntelliJ IDEA / WebStorm 的友好清单我们可以知道,你目前要用的东西,基本别人都给你准备好了,你是不是只要好好写代码就行了?

所以,把我把它叫做:沉浸式的 IDE,是否有误?(划重点:再次点题)

IntelliJ IDEA 缺点

  • 编辑超大文件不靠谱,易卡顿或直接卡死。
  • 相对于一些专用工具,显得不够专业:比如批量修改项目中的文件编码效果就很差劲。
  • 消耗大量硬件资源:IntelliJ IDEA 要求内存大,并且还要用的流畅还需要固态硬盘辅助。站在个人角度,作为一个开发者,并且打算未来几年继续做开发,如果你连花费点工资把内存升级到 16G、32G 都不愿意,那没人能帮你解决任何问题。特别是做 Java 开发的人员,在做微服务类的项目的时候,一般需要同时启动多个项目,内存一会就上来的,8G 内存完全不够用的。

IDE 看法

说了这么多夸张的 IDE 的友好,有些人会认为钻研这类傻瓜 IDE 是一种奇淫技巧,完全不是一个代码大牛应该做的事情,在这些人眼里一个真正的代码大牛都应该是 Vim、Emacs。

也许这些人是对的,这类高手应该是那种写底层核心关键代码者,或者是某些高级算法核心代码者。我们这类用 IDE 的小白确实没法跟别人比。人跟人是有差别的我们需要承认。

即使目前的现实是残酷的,也得标明我的愿景:作为普通人,我们不应该需要花大量时间去把一个简洁的编辑器 Vim 变成复杂高效 IDE,本身市面上已经有这类 IDE 帮我们很好地做好了这一切,我们只要花时间学习喜欢的开发语言,学习计算机基础知识、背好单词,其他的都交给 IDE 去就行了。

做为一个 Java 开发者,你除了学习 Java 基础、Java 框架、关系型数据库、NoSQL、Linux,可能还要学习前端知识、移动端,这些还是没要求你精通。所以作为一个年轻的开发者,你的学习时间并没有你现象的那么多。

最后

如果开完文章后的你已经开始向往 IntelliJ IDEA,那先提前恭喜你,等你学会了 IntelliJ IDEA 以后,你同时也会了 JetBrains 家其他的 IDE,一个 IDE,N 个 IDE。

请明白,有一种好叫做:同行的衬托。IntelliJ IDEA 的好,也只是因为其他家 IDE 做得还不够。希望未来有更强大的 IDE 诞生,或者 JetBrains 的不断强大。

也许有那么一天,你把 IntelliJ IDEA 当做记事本使用,跟我一样用它写今天这篇文章,那应该说明你已经忘记它就是一个所谓的 IDE。

资料

本文文字及图片出自 gitbook.cn

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注