YourBatman · 2020年07月29日

IntelliJ IDEA 2020.2正式发布,诸多亮点总有几款能助你提效

向工具人致敬。本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈、MyBatis、JVM、中间件等小而美的专栏供以免费学习。关注公众号【BAT的乌托邦】逐个击破,深入掌握,拒绝浅尝辄止。

前言

各位小伙伴大家好,我是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怎么少得了对云原生技术DockerKubernetes的优化支持呢?这些主要体现在对它们配置文件的支持上,在实际使用时你会感受出来。

升级建议

以前我的建议很保守,现在明确点,毕竟仅仅只是建议?

关于破解

如果你是付费党(土豪),或者是开源committer,或者是edu邮箱拥有者,请忽略此part哈。

  • 若你升级到了2020.2最新版本,你可以享有这些新特性功能,提升编码效率。但是,暂时破解没戏,这不我也试用着呢(就不信1个月后还不能破解?):

  • 若你仍决定停留在2020.1甚至之前版本,那么是可以实现破解的。破解方式可在公众号后台回复“IDEA破解”获得,白嫖去吧~

总结

作为2020年的第二个版本,虽然说没有第一个版本(2020.1)提供的新功能那么的博人眼球,但好些新特性依旧是可圈可点,值得称赞。

最后,依旧要向那些孜孜不倦为IT行业提供优秀工具的人们致敬!!!特别是捷克的那些创造者们,你们创造了非常好的工具提高了生产力,推动了社会某些产业的进步,功勋卓越!!!

推荐你看:

关注A哥

AuthorA哥(YourBatman)
个人站点www.yourbatman.cn
E-mailyourbatman@qq.com
微 信fsx641385712
活跃平台
公众号BAT的乌托邦(ID:BAT-utopia)
知识星球BAT的乌托邦
每日文章推荐每日文章推荐

BAT的乌托邦

推荐阅读
关注数
1
内容数
1
专注Java领域分享、成长,拒绝浅尝辄止。公众号搜索:BAT的乌托邦
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息