IntelliJ IDEA 2020.2正式釋出,諸多亮點總有幾款能助你提效

YourBatman發表於2020-07-29

向工具人致敬。本文已被 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行業提供優秀工具的人們致敬!!!特別是捷克的那些創造者們,你們創造了非常好的工具提高了生產力,推動了社會某些產業的進步,功勳卓越!!!

推薦你看:

相關文章