IntelliJ IDEA 2020.2正式發(fā)布,兩點多多總能助你提效
前言
各位小伙伴大家好,我是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世紀(jì)的“新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)提前為此做好了準(zhǔn)備,反應(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哥給你準(zhǔn)備了示例:
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('大肉'); }}
這時編譯肯定一切正常。現(xiàn)在我做出改變:更改Person類的eat()方法名為eatDish(),結(jié)果如下圖:
鼠標(biāo)單擊提示,自動幫你打開Find框且定位到問題所在:
就問你,這個功能爽不爽,實用不實用?
小貼士:在同一個.java文件內(nèi)(即使是不同class),是不會類似提示的哦
3、運行時異常原因分析
一聽這個功能名稱,就覺得很厲害。快速定位問題一直是程序員的痛點,現(xiàn)在讓工具來輔助你完成,效率更上一層樓。
新版IDEA為異常堆棧跟蹤分析添加了數(shù)據(jù)流分析。點擊堆棧跟蹤時,IDE 可能會將您帶到代碼中出現(xiàn)異常的確切位置,并提供建議來幫助您了解發(fā)生此錯誤的原因。
下面用一個NPE異常作為示例感受一把,代碼如下:
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窗口,簡直不要太贊。
顯示與當(dāng)前文件有關(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做拼寫檢查,看你單詞也沒有寫錯啥的。這次改進主要提升了性能和準(zhǔn)確性,然而我一般都是把此項禁用的,畢竟有時候我需要用拼音命名😄。
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對話框的視覺一致性上。此外還改進了對話框,使其可以清楚地標(biāo)識待執(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。
12、創(chuàng)建企業(yè)項目向?qū)?/p>
如果需要創(chuàng)建Java EE 8或Jakarta EE 9項目,可以使用IDEA的創(chuàng)建向?qū)А?/p>
這對于天朝的程序員來說貌似沒啥卵用,因為我們都用Spring,所以大都使用Spring Initializr來創(chuàng)建工程。
12、HPROF內(nèi)存查看器
我們知道IntelliJ IDEA 2020.1版本就可以打開.hprof內(nèi)存轉(zhuǎn)儲文件,有助于識別內(nèi)存泄漏,并找到優(yōu)化內(nèi)存使用率的方法。那時候功能還非常的簡陋,IDEA官方承諾會持續(xù)改進的,果不其然這個版本帶來了功能提升。
下面通過案例使用一把。代碼如下:
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的此功能把該文件讀取進來:
文件讀取進來后,可在其“專屬視窗”看到分析結(jié)果:
指出使用大量內(nèi)存的代碼部分,并檢測內(nèi)存泄漏的原因。HPROF內(nèi)存查看器顯示了計算的對象保留大小、到垃圾收集器根的最短路徑、對象(保留的對象)的支配器樹和傳入的引用。
附:上個版本(2020.1)效果截圖,用以對比:
新版本還是感覺到明顯的功能提升的。上個版本官方不建議你用于生產(chǎn)分析,很明顯這個版本已經(jīng)沒有這樣的字眼了,用吧騷年。
12、使用預(yù)先構(gòu)建好的indexes
IDEA在每打開一個項目時都會它進行index建立索引,以確保你后續(xù)時候過程中的編碼流暢度(代碼補全、代碼跳轉(zhuǎn)...),而這個建立索引階段一般來說是比較耗時的。
同一個項目一般會被N多人使用、開發(fā),那么能不能只需要構(gòu)建一次索引,別人直接用就行了呢?IDEA此版本對此痛點提供了支持。
現(xiàn)在,通過在另一臺機器上生成的索引(我們可以弄臺機器專門來生成索引),而不用再在本地構(gòu)建,索引文件拿來就用,可以加快索引速度。
小貼士:此功能需要安裝共享索引插件提供額外支持
13、正在索引中也可編碼
當(dāng)我們打開一個項目時,如果正在構(gòu)建索引,代碼的顏色是這樣的(預(yù)示先別編碼,請等待):
說明:顏色灰色并不是說你不能敲字,只是沒有代碼提示了
索引構(gòu)建好后,顏色恢復(fù)正常,你可以正常編碼了:
然后在IntelliJ IDEA 2020.2版本中,當(dāng)在為你的項目構(gòu)建索引時,你現(xiàn)在可以繼續(xù)編寫代碼了。IDE現(xiàn)在能在索引期間為Java提供代碼完成建議(也就是最重要的代碼補全提示能力)。
14、支持Maven Wrapper
IntelliJ IDEA 2020.2現(xiàn)在支持Maven包裝器,它會自動將所需的Maven版本安裝到您的項目中。如果提供并配置了Maven包裝器,IDE會自動使用它并在需要時導(dǎo)入更改。
Maven Wrapper(Maven包裝器)是什么?嗯嗯,建議你可以自己了解一下了~
15、其它
其它的還有諸如對JavaScript語言的代碼自動補全支持、Database鏈接數(shù)據(jù)庫的UI/功能優(yōu)化、Scala語言支持等,因為用的人著實不多(主要是我自己也不用😄),所以就不做詳解了哈。
當(dāng)然嘍,新版IDEA怎么少得了對云原生技術(shù)Docker和Kubernetes的優(yōu)化支持呢?這些主要體現(xiàn)在對它們配置文件的支持上,在實際使用時你會感受出來。
升級建議
升。
以前我的建議很保守,現(xiàn)在明確點,畢竟僅僅只是建議😄
若你仍決定停留在2020.1甚至之前版本,那么是可以實現(xiàn)破解的。
總結(jié)
作為2020年的第二個版本,雖然說沒有第一個版本(2020.1)提供的新功能那么的博人眼球,但好些新特性依舊是可圈可點,值得稱贊。
最后,依舊要向那些孜孜不倦為IT行業(yè)提供優(yōu)秀工具的人們致敬!!!特別是捷克的那些創(chuàng)造者們,你們創(chuàng)造了非常好的工具提高了生產(chǎn)力,推動了社會某些產(chǎn)業(yè)的進步,功勛卓越!!!
推薦你看:
Fastjson到了說再見的時候了
1. 初識Jackson -- 世界上最好的JSON庫
2. 媽呀,Jackson原來是這樣寫JSON的
3. 懂了這些,方敢在簡歷上說會用Jackson寫JSON
4. JSON字符串是如何被解析的?JsonParser了解一下
5. JsonFactory工廠而已,還蠻有料,這是我沒想到的
到此這篇關(guān)于IntelliJ IDEA 2020.2正式發(fā)布的文章就介紹到這了,更多相關(guān)IntelliJ IDEA 2020.2正式發(fā)布內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
