向工具人致敬. 本文已被 https://www.yourbatman.cn/ 收录, 里面一并有 Spring 技术栈, MyBatis,JVM, 中间件等小而美的专栏供以免费学习. 关注公众号[BAT 的乌托邦] 逐个击破, 深入掌握, 拒绝浅尝辄止.
目录
前言
正文
what's new(新特性)
1, 支持 Java 15
2, 相关问题内嵌提示
3, 运行时异常原因分析
4, 更好 Stream API 自动补全
5,Live Templates 新增 Java 分组
6, 新增 Problems 窗口
7, 操作意图预览
8, 改进的拼写检查
9, 完整的 GitHub pull requests 支持
10, 改进的 Git 操作对话框
11, 支持 Jakarta EE 9
12, 创建企业项目向导
12,HPROF 内存查看器
12, 使用预先构建好的 indexes
13, 正在索引中也可编码
14, 支持 Maven Wrapper
15, 其它
升级建议
关于破解
总结
推荐你看:
前言
各位小伙伴大家好, 我是 A 哥. IDEA 上个较大版本的发布, 要追溯到 4 月份了:
时隔近 4 个月, 北京时间 2020-07-28 深夜, IntelliJ IDEA 再迎更新, 这是 2020 年的第二个里程碑版本.
之前提到过, 2020 年是 Jetbrain 公司的 20 周年(小伙子长成大男孩了), 有理由相信官方会立些 Flag. 所以自从官方在 2020-01-20 发布了其 2020 年的 Roadmap 后, 我个人是有保持持续关注的, 毕竟一方面是公司 20 周年, 另一方面是 21 世纪的 "新 10 年", 这么好的契机很适合搞事情.
上个版本 (2020.1) 发布后, 带来了众多实用新特性, 比如: 中文支持, 禅模式, Javadoc 渲染等等, 某些新功能可以显著提高效率, 因此反响是一片叫好. 无独有偶, 作为 2020 年的第二个里程碑版本, 它能给我们带来什么样的期许呢?
正文
按照惯例, 来一张最新版 IDEA 启动图尝尝鲜:
我把 2020.1 版本启动图也扔在这供你对比, 哪个更好看?
what's new(新特性)
IntelliJ IDEA 2020.2 做的改进重点体现在完全控制 GitHub 请求, 包括在 IDE 中审查, 合并 GitHub PR 等. 同时还提供了对 Java15,Jakarta EE 9 的支持, 还包括 Quarkus,microaut 等等.
1, 支持 Java 15
尽管 Java 15 将在 9 月发布, IntelliJ IDEA 2020.2 已经提前为此做好了准备, 反应不可为不灵活, 给个大大的赞.
说明: Java 15 新特性啥的本文不提, 毕竟这不是本文关注点所在
题外话: 从 JDK9 之后, Oracle 采用了新的发布周期: 每 6 个月发布一个版本, 每 3 年发布一个 LTS 版本. JDK15 是继 JDK9 之后发布的第七个版本, 该版本依旧为非 LTS 版本, 最新的 LTS 版本为 JDK11(JDK17 还未发布).
2, 相关问题内嵌提示
这个功能非常好用, 特别对有些不使用 RENAME 功能的小伙伴来说是福音.
如果您通过更改具有外部使用的类, 方法或字段的签名而引入了编译错误, IDE 将用镶嵌提示通知您. 单击相关嵌入提示, IDE 将自动帮你打开 Find 工具窗口, 列出了在外部文件中发生的所有相关问题.
看完这段话是不是还有点蒙, 来吧, A 哥给你准备了示例:
Person.java 文件:
- public class Person {
- public String eat(String food) {
- return "SUCCESS";
- }
- }
Demo.java 文件:
- public class Demo {
- public static void main(String[] args) {
- new Person().eat("大鱼");
- new Person().eat("大肉");
- }
- }
这时编译肯定一切正常. 现在我做出改变: 更改 Person 类的 eat()方法名为 eatDish(), 结果如下图:
鼠标单击提示, 自动帮你打开 Find 框且定位到问题所在:
就问你, 这个功能爽不爽, 实用不实用?
小贴士: 在同一个. java 文件内(即使是不同 class), 是不会类似提示的哦
3, 运行时异常原因分析
一听这个功能名称, 就觉得很厉害. 快速定位问题一直是程序员的痛点, 现在让工具来辅助你完成, 效率更上一层楼.
新版 IDEA 为异常堆栈跟踪分析添加了数据流分析. 点击堆栈跟踪时, IDE 可能会将您带到代码中出现异常的确切位置, 并提供建议来帮助您了解发生此错误的原因.
下面用一个 NPE 异常作为示例感受一把, 代码如下:
- public static void main(String[] args) {
- Integer i = null;
- System.out.println(i.toString());
- }
运行程序, 抛出异常, 控制台显示:
如红框所示, IDEA 给出的建议是让我们创建一个断点, 单击此 "按钮" 即弹出断点创建对话框:
不得不说, 真的是方便了很多.
附: 老版本中效果截图, 用以对比:
4, 更好 Stream API 自动补全
Stream API 在开发中太太太常用了, 因此哪怕只是更智能一丁点的, 带来的效率提升都可谓是大大的.
可以直接在集合或数组中直接输入 Stream API 方法名, IDEA 会自动插入 stream(). 这适用于任何流操作(map,reduce,collect 等所有操作都行).
话外音: 以后你就不用自己的手动的多写一步 stream()了, 开不开森
话不多说, 来个栗子:
附: 老版本中效果截图, 用以对比: 很明显根本就不支持嘛
5,Live Templates 新增 Java 分组
相信这是很多小伙伴一直以来的一个痛点, 毕竟咱们都是 Java 程序员, 使用 Live Templates 几乎 100% 都是针对于 Java 代码的, 然后老版本竟然还没有个 Java 分组, 实在难受, 我还记得我刚开始使用 IDEA 时就默默吐槽了这点.
现在好了, 这个版本终于补上喽:
小贴士: 你之前放在自定义分组里的还在那, 不会给你自动挪过来的
附: 老版本中效果截图, 用以对比: JavaScript 分组都有竟然没有 Java 分组, 服气
特别强调: 此窗口是新增的, 老版本并无此能力, 也并无此窗口. 所以, 升吗?
6, 新增 Problems 窗口
此版本新增了一个 Problems 窗口, 简直不要太赞.
显示与当前文件有关的警告和错误以及问题描述. 在此工具窗口中, 可以右键点击问题导航到遇到问题的代码行, 方便你逐个修复.
另外, 它在文件右上角还有问题总数, 上 / 下导航按钮, 可谓非常贴心:
7, 操作意图预览
咋一看还以为人工智能呢, 都能预览我的意图了.
此功能可以让你在将它们实际应用到代码之前预览它们的结果. 按 Alt+Enter 调用显示上下文动作并选择你需要的意图动作, 然后按相应快捷键显示结果预览(Windows 和 Linux 上按 Ctrl+Shift+I,macOS 上按 Alt+Space).
例如如下代码:
- public static void main(String[] args) {
- List<Integer> ids = new ArrayList<>();
- for (Integer id : ids) {
- if (id> 10) {
- System.out.println(id);
- }
- }
- }
在 for 处按 Alt+Enter:
再按 Ctrl+Shift+I(我是 Windows), 即可看见结果预览:
8, 改进的拼写检查
IDEA 使用 spell checker 做拼写检查, 看你单词也没有写错啥的. 这次改进主要提升了性能和准确性, 然而我一般都是把此项禁用的, 毕竟有时候我需要用拼音命名.
9, 完整的 GitHub pull requests 支持
现在整个 GitHub PR 工作流程全部可以直接在 IntelliJ IDEA 完成. 包括浏览, 指派, 管理以及合并 PR, 查看时间线和内联评论, 提交评论, 审查以及接受更改.
简单点, 我就不用实际案例了. 引用官方提供的三张图作为示例了哈:
我想说, 这个功能区, 对做 Java 开源社区开发的工作者绝对是福音, 可以多睡会了~
10, 改进的 Git 操作对话框
主要体现在 merge,pull 和 rebase 对话框的视觉一致性上. 此外还改进了对话框, 使其可以清楚地标识待执行的 Git 命令, 并加入一些缺失选项, 比如向 Pull 和 Merge 对话框分别添加了 --rebase 和 --no-verify.
附: 老版本中效果截图, 用以对比:
11, 支持 Jakarta EE 9
Jakarta EE 9 同 Java 15 一样也将会在今年 9 月份发布, 但 IDEA 已早早的提供了支持. 并且号称是已经支持到了 Jakarta EE 的所有可用特性(典型的 13 种技术嘛).
题外话: 2018 年 3 月初, Java EE 正式更名为 JakartaEE, 至此再无 JavaEE.
12, 创建企业项目向导
如果需要创建 Java EE 8 或 Jakarta EE 9 项目, 可以使用 IDEA 的创建向导.
这对于天朝的程序员来说貌似没啥卵用, 因为我们都用 Spring, 所以大都使用 Spring Initializr 来创建工程.
12,HPROF 内存查看器
我们知道 IntelliJ IDEA 2020.1 版本就可以打开. hprof 内存转储文件, 有助于识别内存泄漏, 并找到优化内存使用率的方法. 那时候功能还非常的简陋, IDEA 官方承诺会持续改进的, 果不其然这个版本带来了功能提升.
下面通过案例使用一把. 代码如下:
- public static void main(String[] args) throws InterruptedException {
- List<Integer> ids = new ArrayList<>();
- TimeUnit.MINUTES.sleep(10);
- }
先使用 jps 找到你的进程 id(这个都会吧, 我就不截图了), 然后使用
jmap -dump:file=test.hprof,format=b 你的 pid
拿到一份 dump 文件: test.hprof.
然后使用 IDEA 的此功能把该文件读取进来:
文件读取进来后, 可在其 "专属视窗" 看到分析结果:
指出使用大量内存的代码部分, 并检测内存泄漏的原因. HPROF 内存查看器显示了计算的对象保留大小, 到垃圾收集器根的最短路径, 对象 (保留的对象) 的支配器树和传入的引用.
附: 上个版本 (2020.1) 效果截图, 用以对比:
新版本还是感觉到明显的功能提升的. 上个版本官方不建议你用于生产分析, 很明显这个版本已经没有这样的字眼了, 用吧骚年.
12, 使用预先构建好的 indexes
IDEA 在每打开一个项目时都会它进行 index 建立索引, 以确保你后续时候过程中的编码流畅度(代码补全, 代码跳转...), 而这个建立索引阶段一般来说是比较耗时的.
同一个项目一般会被 N 多人使用, 开发, 那么能不能只需要构建一次索引, 别人直接用就行了呢? IDEA 此版本对此痛点提供了支持.
现在, 通过在另一台机器上生成的索引(我们可以弄台机器专门来生成索引), 而不用再在本地构建, 索引文件拿来就用, 可以加快索引速度.
小贴士: 此功能需要安装共享索引插件提供额外支持
13, 正在索引中也可编码
当我们打开一个项目时, 如果正在构建索引, 代码的颜色是这样的(预示先别编码, 请等待):
说明: 颜色灰色并不是说你不能敲字, 只是没有代码提示了
索引构建好后, 颜色恢复正常, 你可以正常编码了:
然后在 IntelliJ IDEA 2020.2 版本中, 当在为你的项目构建索引时, 你现在可以继续编写代码了. IDE 现在能在索引期间为 Java 提供代码完成建议(也就是最重要的代码补全提示能力).
14, 支持 Maven Wrapper
IntelliJ IDEA 2020.2 现在支持 Maven 包装器, 它会自动将所需的 Maven 版本安装到您的项目中. 如果提供并配置了 Maven 包装器, IDE 会自动使用它并在需要时导入更改.
Maven Wrapper(Maven 包装器)是什么? 嗯嗯, 建议你可以自己了解一下了~
15, 其它
其它的还有诸如对 JavaScript 语言的代码自动补全支持, Database 链接数据库的 UI / 功能优化, Scala 语言支持等, 因为用的人着实不多(主要是我自己也不用), 所以就不做详解了哈.
当然喽, 新版 IDEA 怎么少得了对云原生技术 Docker 和 Kubernetes 的优化支持呢? 这些主要体现在对它们配置文件的支持上, 在实际使用时你会感受出来.
升级建议
升.
以前我的建议很保守, 现在明确点, 毕竟仅仅只是建议
关于破解
如果你是付费党(土豪), 或者是开源 committer, 或者是 edu 邮箱拥有者, 请忽略此 part 哈.
若你升级到了
2020.2
最新版本, 你可以享有这些新特性功能, 提升编码效率. 但是, 暂时破解没戏, 这不我也试用着呢(就不信 1 个月后还不能破解):
若你仍决定停留在 2020.1 甚至之前版本, 那么是可以实现破解的. 破解方式可在公众号后台回复 "IDEA 破解" 获得, 白嫖去吧~
总结
作为 2020 年的第二个版本, 虽然说没有第一个版本 (2020.1) 提供的新功能那么的博人眼球, 但好些新特性依旧是可圈可点, 值得称赞.
最后, 依旧要向那些孜孜不倦为 IT 行业提供优秀工具的人们致敬!!! 特别是捷克的那些创造者们, 你们创造了非常好的工具提高了生产力, 推动了社会某些产业的进步, 功勋卓越!!!
推荐你看:
Fastjson 到了说再见的时候了 https://mp.weixin.qq.com/s/z6T9n9YvwjmDwuj-YTa0_w
1. 初识 Jackson -- 世界上最好的 JSON 库 https://mp.weixin.qq.com/s/iqSN4HUoIdX0kGcSdnD7EA
2. 妈呀, Jackson 原来是这样写 JSON 的 https://mp.weixin.qq.com/s/p6cwP2BVrC8VxkN-T3uAxg
3. 懂了这些, 方敢在简历上说会用 Jackson 写 JSON https://mp.weixin.qq.com/s/ZHb3P06IC4xElHwJqDepxw
4. JSON 字符串是如何被解析的? JsonParser 了解一下 https://mp.weixin.qq.com/s/syAOETfEawiGItaQO35mLA
5. JsonFactory 工厂而已, 还蛮有料, 这是我没想到的 https://mp.weixin.qq.com/s/0ZaDYb_ueFLbvOf3FbetfQ
来源: https://www.cnblogs.com/yourbatman/p/13399078.html