前言
各位小伙伴大家好,我是A哥。IDEA上個較大版本的發(fā)布,要追溯到4月份了:

時隔近4個月,北京時間2020-07-28深夜,IntelliJ IDEA
再迎更新,這是2020年的第二個里程碑版本。
之前提到過,2020年是Jetbrain公司
的20周年(小伙子長成大男孩了),有理由相信官方會立些Flag。所以自從官方在2020-01-20發(fā)布了其2020年的Roadmap后,我個人是有保持持續(xù)關(guān)注的,畢竟一方面是公司20周年,另一方面是21世紀的“新10年”,這么好的契機很適合搞事情。
上個版本(2020.1)發(fā)布后,帶來了眾多實用新特性,比如:中文支持、禪模式、Javadoc渲染等等,某些新功能可以顯著提高效率,因此反響是一片叫好。無獨有偶,作為2020年的第二個里程碑版本,它能給我們帶來什么樣的期許呢?
正文
按照慣例,來一張最新版IDEA啟動圖嘗嘗鮮:

我把2020.1版本啟動圖也扔在這供你對比,哪個更好看?

what’s new(新特性)
IntelliJ IDEA 2020.2做的改進重點體現(xiàn)在完全控制GitHub請求,包括在IDE中審查、合并 GitHub PR等。同時還提供了對Java15、Jakarta EE 9的支持,還包括Quarkus、microaut等等。
1、支持Java 15
盡管Java 15將在9月發(fā)布,IntelliJ IDEA 2020.2已經(jīng)提前為此做好了準備,反應(yīng)不可為不靈活,給個大大的贊。
說明:Java 15新特性啥的本文不提,畢竟這不是本文關(guān)注點所在
題外話:從JDK9之后,Oracle采用了新的發(fā)布周期:每6個月發(fā)布一個版本,每3年發(fā)布一個LTS版本。JDK15是繼JDK9之后發(fā)布的第七個版本, 該版本依舊為非LTS版本,最新的LTS版本為JDK11(JDK17還未發(fā)布)。

2、相關(guān)問題內(nèi)嵌提示
這個功能非常好用,特別對有些不使用RENAME
功能的小伙伴來說是福音。
如果您通過更改具有外部使用的類、方法或字段的簽名而引入了編譯錯誤,IDE將用鑲嵌提示通知您。單擊相關(guān)嵌入提示,IDE將自動幫你打開Find工具窗口,列出了在外部文件中發(fā)生的所有相關(guān)問題。
看完這段話是不是還有點蒙,來吧,A哥給你準備了示例:
Person.java文件:
1
2
3
4
5
public class Person {
public String eat(String food) {
return "SUCCESS";
}
}
Demo.java文件:
1
2
3
4
5
6
public class Demo {
public static void main(String[] args) {
new Person().eat("大魚");
new Person().eat("大肉");
}
}
這時編譯肯定一切正常。現(xiàn)在我做出改變:更改Person類的eat()
方法名為eatDish()
,結(jié)果如下圖:

鼠標單擊提示,自動幫你打開Find框且定位到問題所在:

就問你,這個功能爽不爽,實用不實用?
小貼士:在同一個
.java
文件內(nèi)(即使是不同class),是不會類似提示的哦
3、運行時異常原因分析
一聽這個功能名稱,就覺得很厲害。快速定位問題一直是程序員的痛點,現(xiàn)在讓工具來輔助你完成,效率更上一層樓。
新版IDEA為異常堆棧跟蹤分析添加了數(shù)據(jù)流分析。點擊堆棧跟蹤時,IDE 可能會將您帶到代碼中出現(xiàn)異常的確切位置,并提供建議來幫助您了解發(fā)生此錯誤的原因。
下面用一個NPE異常作為示例感受一把,代碼如下:
1
2
3
4
public static void main(String[] args) {
Integer i = null;
System.out.println(i.toString());
}
運行程序,拋出異常,控制臺顯示:

如紅框所示,IDEA給出的建議是讓我們創(chuàng)建一個斷點,單擊此“按鈕”即彈出斷點創(chuàng)建對話框:

不得不說,真的是方便了很多。
附:老版本中效果截圖,用以對比:

4、更好Stream API自動補全
Stream API在開發(fā)中太太太常用了,因此哪怕只是更智能一丁點的,帶來的效率提升都可謂是大大的。
可以直接在集合或數(shù)組中直接輸入Stream API方法名,IDEA 會自動插入 stream()
。這適用于任何流操作(map、reduce、collect等所有操作都行)。
話外音:以后你就不用自己的手動的多寫一步
stream()
了,開不開森
話不多說,來個栗子:


附:老版本中效果截圖,用以對比:很明顯根本就不支持嘛

5、Live Templates新增Java分組
相信這是很多小伙伴一直以來的一個痛點,畢竟咱們都是Java程序員,使用Live Templates
幾乎100%都是針對于Java代碼的,然后老版本竟然還沒有個Java分組,實在難受,我還記得我剛開始使用IDEA時就默默吐槽了這點。
現(xiàn)在好了,這個版本終于補上嘍:

小貼士:你之前放在自定義分組里的還在那,不會給你自動挪過來的
附:老版本中效果截圖,用以對比:JavaScript分組都有竟然沒有Java分組,服氣

特別強調(diào):此窗口是新增的,老版本并無此能力,也并無此窗口。所以,升嗎?
6、新增Problems窗口
此版本新增了一個Problems窗口,簡直不要太贊。
顯示與當前文件有關(guān)的警告和錯誤以及問題描述。在此工具窗口中,可以右鍵點擊問題導(dǎo)航到遇到問題的代碼行,方便你逐個修復(fù)。

另外,它在文件右上角還有問題總數(shù)、上/下導(dǎo)航按鈕,可謂非常貼心:

7、操作意圖預(yù)覽
咋一看還以為人工智能呢,都能預(yù)覽我的意圖了。
此功能可以讓你在將它們實際應(yīng)用到代碼之前預(yù)覽它們的結(jié)果。按Alt+Enter
調(diào)用顯示上下文動作并選擇你需要的意圖動作,然后按相應(yīng)快捷鍵顯示結(jié)果預(yù)覽(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),即可看見結(jié)果預(yù)覽:

8、改進的拼寫檢查
IDEA使用spell checker做拼寫檢查,看你單詞也沒有寫錯啥的。這次改進主要提升了性能和準確性,然而我一般都是把此項禁用的,畢竟有時候我需要用拼音命名。
9、完整的GitHub pull requests支持
現(xiàn)在整個 GitHub PR 工作流程全部可以直接在 IntelliJ IDEA 完成。包括瀏覽、指派、管理以及合并 PR、查看時間線和內(nèi)聯(lián)評論、提交評論、審查以及接受更改。
簡單點,我就不用實際案例了。引用官方提供的三張圖作為示例了哈:



我想說,這個功能區(qū),對做Java開源社區(qū)開發(fā)的工作者絕對是福音,可以多睡會了~
10、改進的Git操作對話框
主要體現(xiàn)在merge、pull和rebase對話框的視覺一致性上。此外還改進了對話框,使其可以清楚地標識待執(zhí)行的 Git 命令,并加入一些缺失選項,比如向Pull和 Merge對話框分別添加了--rebase
和--no-verify
。

附:老版本中效果截圖,用以對比:

11、支持Jakarta EE 9
Jakarta EE 9同Java 15一樣也將會在今年9月份發(fā)布,但IDEA已早早的提供了支持。并且號稱是已經(jīng)支持到了Jakarta EE的所有可用特性(典型的13種技術(shù)嘛)。
題外話:2018年3月初,Java EE正式更名為JakartaEE,至此再無 JavaEE。
