讲 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/
首页简洁明了地告诉了我们它有什么特点,当前最新版本是哪个版本,有哪些新特性,支持哪些框架,告诉我们社区版本和旗舰版有哪些区别差别,哪里可以下载、购买,哪里有学习资料。
对于一个新人来讲,该重点关注的基本都告诉了,现在我帮大家整理了这些友好的细节。
- 新版本的新特性:https://www.jetbrains.com/idea/whatsnew/
- 每年新版本的特性都会在这个地址上得到体现,有 Gif 截图,有文字,有的复杂特性还有 YouTube 视频讲解。
- IntelliJ IDEA 主要特性介绍:https://www.jetbrains.com/idea/features/
- 针对新人学习的指导页面:https://www.jetbrains.com/idea/documentation/
- YouTube 频道:https://www.youtube.com/user/JetBrainsTV
- 官网的插件库搜索、插件分类:https://plugins.jetbrains.com/
- 社区版和旗舰版本的完整对比:https://www.jetbrains.com/idea/features/editions_comparison_matrix.html
- 官网的博客:https://blog.jetbrains.com/idea/
- Markdown 格式的帮助中心:https://www.jetbrains.com/help/idea/2017.1/meet-intellij-idea.html
- 官网的社区: https://intellij-support.jetbrains.com/hc/en-us/community/topics
- 官网的 Bug 跟踪:https://youtrack.jetbrains.com/issues/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。
资料
- IDE 份额 1:Java Tools and Technologies Landscape Report 2016
- IDE 份额 2:Java Tools and Technologies Landscape Report 2016: Trends and Historical data
- Wiki IDE:https://zh.wikipedia.org/wiki/%E9%9B%86%E6%88%90%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83
- JetBrains 办公环境: https://blog.jetbrains.com/blog/2013/12/16/jetbrains-st-petersburg-rd-lab-grows-moves-to-new-office/
本文文字及图片出自 gitbook.cn
你也许感兴趣的:
- Intellij IDEA神器,那些让人爱不释手的提效小技巧
- IntelliJ IDEA酷炫插件系列
- 你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
- 译 | 5个Eclipse应该向IntelliJ IDEA学习的优秀特性
- Intellij IDEA神器那些让人爱不释手的小技巧
- 为什么比起 IntelliJ IDEA,我仍然更喜欢 Eclipse
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
你对本文的反应是: