IntelliJ IDEA 2020.2正式發(fā)布,兩點(diǎn)多多總能助你提效
前言
各位小伙伴大家好,我是A哥。IDEA上個(gè)較大版本的發(fā)布,要追溯到4月份了:
時(shí)隔近4個(gè)月,北京時(shí)間2020-07-28深夜,IntelliJ IDEA
再迎更新,這是2020年的第二個(gè)里程碑版本。
之前提到過(guò),2020年是Jetbrain公司
的20周年(小伙子長(zhǎng)成大男孩了),有理由相信官方會(huì)立些Flag。所以自從官方在2020-01-20發(fā)布了其2020年的Roadmap后,我個(gè)人是有保持持續(xù)關(guān)注的,畢竟一方面是公司20周年,另一方面是21世紀(jì)的“新10年”,這么好的契機(jī)很適合搞事情。
上個(gè)版本(2020.1)發(fā)布后,帶來(lái)了眾多實(shí)用新特性,比如:中文支持、禪模式、Javadoc渲染等等,某些新功能可以顯著提高效率,因此反響是一片叫好。無(wú)獨(dú)有偶,作為2020年的第二個(gè)里程碑版本,它能給我們帶來(lái)什么樣的期許呢?
正文
按照慣例,來(lái)一張最新版IDEA啟動(dòng)圖嘗嘗鮮:
我把2020.1版本啟動(dòng)圖也扔在這供你對(duì)比,哪個(gè)更好看?
what's new(新特性)
IntelliJ IDEA 2020.2做的改進(jìn)重點(diǎn)體現(xiàn)在完全控制GitHub請(qǐng)求,包括在IDE中審查、合并 GitHub PR等。同時(shí)還提供了對(duì)Java15、Jakarta EE 9的支持,還包括Quarkus、microaut等等。
1、支持Java 15
盡管Java 15將在9月發(fā)布,IntelliJ IDEA 2020.2已經(jīng)提前為此做好了準(zhǔn)備,反應(yīng)不可為不靈活,給個(gè)大大的贊👍。
說(shuō)明:Java 15新特性啥的本文不提,畢竟這不是本文關(guān)注點(diǎn)所在
題外話:從JDK9之后,Oracle采用了新的發(fā)布周期:每6個(gè)月發(fā)布一個(gè)版本,每3年發(fā)布一個(gè)LTS版本。JDK15是繼JDK9之后發(fā)布的第七個(gè)版本, 該版本依舊為非LTS版本,最新的LTS版本為JDK11(JDK17還未發(fā)布)。
2、相關(guān)問(wèn)題內(nèi)嵌提示
這個(gè)功能非常好用,特別對(duì)有些不使用RENAME
功能的小伙伴來(lái)說(shuō)是福音。
如果您通過(guò)更改具有外部使用的類、方法或字段的簽名而引入了編譯錯(cuò)誤,IDE將用鑲嵌提示通知您。單擊相關(guān)嵌入提示,IDE將自動(dòng)幫你打開(kāi)Find工具窗口,列出了在外部文件中發(fā)生的所有相關(guān)問(wèn)題。
看完這段話是不是還有點(diǎn)蒙,來(lái)吧,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("大魚(yú)"); new Person().eat("大肉"); } }
這時(shí)編譯肯定一切正?!,F(xiàn)在我做出改變:更改Person類的eat()
方法名為eatDish()
,結(jié)果如下圖:
鼠標(biāo)單擊提示,自動(dòng)幫你打開(kāi)Find框且定位到問(wèn)題所在:
就問(wèn)你,這個(gè)功能爽不爽,實(shí)用不實(shí)用?
小貼士:在同一個(gè).java
文件內(nèi)(即使是不同class),是不會(huì)類似提示的哦
3、運(yùn)行時(shí)異常原因分析
一聽(tīng)這個(gè)功能名稱,就覺(jué)得很厲害??焖俣ㄎ粏?wèn)題一直是程序員的痛點(diǎn),現(xiàn)在讓工具來(lái)輔助你完成,效率更上一層樓。
新版IDEA為異常堆棧跟蹤分析添加了數(shù)據(jù)流分析。點(diǎn)擊堆棧跟蹤時(shí),IDE 可能會(huì)將您帶到代碼中出現(xiàn)異常的確切位置,并提供建議來(lái)幫助您了解發(fā)生此錯(cuò)誤的原因。
下面用一個(gè)NPE異常作為示例感受一把,代碼如下:
public static void main(String[] args) { Integer i = null; System.out.println(i.toString()); }
運(yùn)行程序,拋出異常,控制臺(tái)顯示:
如紅框所示,IDEA給出的建議是讓我們創(chuàng)建一個(gè)斷點(diǎn),單擊此“按鈕”即彈出斷點(diǎn)創(chuàng)建對(duì)話框:
不得不說(shuō),真的是方便了很多。
附:老版本中效果截圖,用以對(duì)比:
4、更好Stream API自動(dòng)補(bǔ)全
Stream API在開(kāi)發(fā)中太太太常用了,因此哪怕只是更智能一丁點(diǎn)的,帶來(lái)的效率提升都可謂是大大的。
可以直接在集合或數(shù)組中直接輸入Stream API方法名,IDEA 會(huì)自動(dòng)插入 stream()
。這適用于任何流操作(map、reduce、collect等所有操作都行)。
話外音:以后你就不用自己的手動(dòng)的多寫(xiě)一步stream()
了,開(kāi)不開(kāi)森
話不多說(shuō),來(lái)個(gè)栗子:
附:老版本中效果截圖,用以對(duì)比:很明顯根本就不支持嘛
5、Live Templates新增Java分組
相信這是很多小伙伴一直以來(lái)的一個(gè)痛點(diǎn),畢竟咱們都是Java程序員,使用Live Templates
幾乎100%都是針對(duì)于Java代碼的,然后老版本竟然還沒(méi)有個(gè)Java分組,實(shí)在難受,我還記得我剛開(kāi)始使用IDEA時(shí)就默默吐槽了這點(diǎn)。
現(xiàn)在好了,這個(gè)版本終于補(bǔ)上嘍:
小貼士:你之前放在自定義分組里的還在那,不會(huì)給你自動(dòng)挪過(guò)來(lái)的
附:老版本中效果截圖,用以對(duì)比:JavaScript分組都有竟然沒(méi)有Java分組,服氣
特別強(qiáng)調(diào):此窗口是新增的,老版本并無(wú)此能力,也并無(wú)此窗口。所以,升嗎?🙂
6、新增Problems窗口
此版本新增了一個(gè)Problems窗口,簡(jiǎn)直不要太贊。
顯示與當(dāng)前文件有關(guān)的警告和錯(cuò)誤以及問(wèn)題描述。在此工具窗口中,可以右鍵點(diǎn)擊問(wèn)題導(dǎo)航到遇到問(wèn)題的代碼行,方便你逐個(gè)修復(fù)。
另外,它在文件右上角還有問(wèn)題總數(shù)、上/下導(dǎo)航按鈕,可謂非常貼心:
7、操作意圖預(yù)覽
咋一看還以為人工智能呢,都能預(yù)覽我的意圖了。
此功能可以讓你在將它們實(shí)際應(yīng)用到代碼之前預(yù)覽它們的結(jié)果。按Alt+Enter
調(diào)用顯示上下文動(dòng)作并選擇你需要的意圖動(dòng)作,然后按相應(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àn)結(jié)果預(yù)覽:
8、改進(jìn)的拼寫(xiě)檢查
IDEA使用spell checker做拼寫(xiě)檢查,看你單詞也沒(méi)有寫(xiě)錯(cuò)啥的。這次改進(jìn)主要提升了性能和準(zhǔn)確性,然而我一般都是把此項(xiàng)禁用的,畢竟有時(shí)候我需要用拼音命名😄。
9、完整的GitHub pull requests支持
現(xiàn)在整個(gè) GitHub PR 工作流程全部可以直接在 IntelliJ IDEA 完成。包括瀏覽、指派、管理以及合并 PR、查看時(shí)間線和內(nèi)聯(lián)評(píng)論、提交評(píng)論、審查以及接受更改。
簡(jiǎn)單點(diǎn),我就不用實(shí)際案例了。引用官方提供的三張圖作為示例了哈:
我想說(shuō),這個(gè)功能區(qū),對(duì)做Java開(kāi)源社區(qū)開(kāi)發(fā)的工作者絕對(duì)是福音,可以多睡會(huì)了~
10、改進(jìn)的Git操作對(duì)話框
主要體現(xiàn)在merge、pull和rebase對(duì)話框的視覺(jué)一致性上。此外還改進(jìn)了對(duì)話框,使其可以清楚地標(biāo)識(shí)待執(zhí)行的 Git 命令,并加入一些缺失選項(xiàng),比如向Pull和 Merge對(duì)話框分別添加了--rebase
和--no-verify
。
附:老版本中效果截圖,用以對(duì)比:
11、支持Jakarta EE 9
Jakarta EE 9同Java 15一樣也將會(huì)在今年9月份發(fā)布,但I(xiàn)DEA已早早的提供了支持。并且號(hào)稱是已經(jīng)支持到了Jakarta EE的所有可用特性(典型的13種技術(shù)嘛)。
題外話:2018年3月初,Java EE正式更名為JakartaEE,至此再無(wú) JavaEE。
12、創(chuàng)建企業(yè)項(xiàng)目向?qū)?/p>
如果需要?jiǎng)?chuàng)建Java EE 8或Jakarta EE 9項(xiàng)目,可以使用IDEA的創(chuàng)建向?qū)А?/p>
這對(duì)于天朝的程序員來(lái)說(shuō)貌似沒(méi)啥卵用,因?yàn)槲覀兌加肧pring,所以大都使用Spring Initializr
來(lái)創(chuàng)建工程。
12、HPROF內(nèi)存查看器
我們知道IntelliJ IDEA 2020.1版本就可以打開(kāi).hprof
內(nèi)存轉(zhuǎn)儲(chǔ)文件,有助于識(shí)別內(nèi)存泄漏,并找到優(yōu)化內(nèi)存使用率的方法。那時(shí)候功能還非常的簡(jiǎn)陋,IDEA官方承諾會(huì)持續(xù)改進(jìn)的,果不其然這個(gè)版本帶來(lái)了功能提升。
下面通過(guò)案例使用一把。代碼如下:
public static void main(String[] args) throws InterruptedException { List<Integer> ids = new ArrayList<>(); TimeUnit.MINUTES.sleep(10); }
先使用jps找到你的進(jìn)程id(這個(gè)都會(huì)吧,我就不截圖了),然后使用jmap -dump:file=test.hprof,format=b 你的pid
拿到一份dump文件:test.hprof
。
然后使用IDEA的此功能把該文件讀取進(jìn)來(lái):
文件讀取進(jìn)來(lái)后,可在其“專屬視窗”看到分析結(jié)果:
指出使用大量?jī)?nèi)存的代碼部分,并檢測(cè)內(nèi)存泄漏的原因。HPROF內(nèi)存查看器顯示了計(jì)算的對(duì)象保留大小、到垃圾收集器根的最短路徑、對(duì)象(保留的對(duì)象)的支配器樹(shù)和傳入的引用。
附:上個(gè)版本(2020.1)效果截圖,用以對(duì)比:
新版本還是感覺(jué)到明顯的功能提升的。上個(gè)版本官方不建議你用于生產(chǎn)分析,很明顯這個(gè)版本已經(jīng)沒(méi)有這樣的字眼了,用吧騷年。
12、使用預(yù)先構(gòu)建好的indexes
IDEA在每打開(kāi)一個(gè)項(xiàng)目時(shí)都會(huì)它進(jìn)行index建立索引,以確保你后續(xù)時(shí)候過(guò)程中的編碼流暢度(代碼補(bǔ)全、代碼跳轉(zhuǎn)...),而這個(gè)建立索引階段一般來(lái)說(shuō)是比較耗時(shí)的。
同一個(gè)項(xiàng)目一般會(huì)被N多人使用、開(kāi)發(fā),那么能不能只需要構(gòu)建一次索引,別人直接用就行了呢?IDEA此版本對(duì)此痛點(diǎn)提供了支持。
現(xiàn)在,通過(guò)在另一臺(tái)機(jī)器上生成的索引(我們可以弄臺(tái)機(jī)器專門(mén)來(lái)生成索引),而不用再在本地構(gòu)建,索引文件拿來(lái)就用,可以加快索引速度。
小貼士:此功能需要安裝共享索引插件提供額外支持
13、正在索引中也可編碼
當(dāng)我們打開(kāi)一個(gè)項(xiàng)目時(shí),如果正在構(gòu)建索引,代碼的顏色是這樣的(預(yù)示先別編碼,請(qǐng)等待):
說(shuō)明:顏色灰色并不是說(shuō)你不能敲字,只是沒(méi)有代碼提示了
索引構(gòu)建好后,顏色恢復(fù)正常,你可以正常編碼了:
然后在IntelliJ IDEA 2020.2版本中,當(dāng)在為你的項(xiàng)目構(gòu)建索引時(shí),你現(xiàn)在可以繼續(xù)編寫(xiě)代碼了。IDE現(xiàn)在能在索引期間為Java提供代碼完成建議(也就是最重要的代碼補(bǔ)全提示能力)。
14、支持Maven Wrapper
IntelliJ IDEA 2020.2現(xiàn)在支持Maven包裝器,它會(huì)自動(dòng)將所需的Maven版本安裝到您的項(xiàng)目中。如果提供并配置了Maven包裝器,IDE會(huì)自動(dòng)使用它并在需要時(shí)導(dǎo)入更改。
Maven Wrapper(Maven包裝器)是什么?嗯嗯,建議你可以自己了解一下了~
15、其它
其它的還有諸如對(duì)JavaScript
語(yǔ)言的代碼自動(dòng)補(bǔ)全支持、Database鏈接數(shù)據(jù)庫(kù)的UI/功能優(yōu)化、Scala語(yǔ)言支持等,因?yàn)橛玫娜酥鴮?shí)不多(主要是我自己也不用😄),所以就不做詳解了哈。
當(dāng)然嘍,新版IDEA怎么少得了對(duì)云原生技術(shù)Docker
和Kubernetes
的優(yōu)化支持呢?這些主要體現(xiàn)在對(duì)它們配置文件的支持上,在實(shí)際使用時(shí)你會(huì)感受出來(lái)。
升級(jí)建議
升。
以前我的建議很保守,現(xiàn)在明確點(diǎn),畢竟僅僅只是建議😄
若你仍決定停留在2020.1
甚至之前版本,那么是可以實(shí)現(xiàn)破解的。
總結(jié)
作為2020年的第二個(gè)版本,雖然說(shuō)沒(méi)有第一個(gè)版本(2020.1)提供的新功能那么的博人眼球,但好些新特性依舊是可圈可點(diǎn),值得稱贊。
最后,依舊要向那些孜孜不倦為IT行業(yè)提供優(yōu)秀工具的人們致敬!??!特別是捷克的那些創(chuàng)造者們,你們創(chuàng)造了非常好的工具提高了生產(chǎn)力,推動(dòng)了社會(huì)某些產(chǎn)業(yè)的進(jìn)步,功勛卓越?。?!
推薦你看:
Fastjson到了說(shuō)再見(jiàn)的時(shí)候了
1. 初識(shí)Jackson -- 世界上最好的JSON庫(kù)
2. 媽呀,Jackson原來(lái)是這樣寫(xiě)JSON的
3. 懂了這些,方敢在簡(jiǎn)歷上說(shuō)會(huì)用Jackson寫(xiě)JSON
4. JSON字符串是如何被解析的?JsonParser了解一下
5. JsonFactory工廠而已,還蠻有料,這是我沒(méi)想到的
到此這篇關(guān)于IntelliJ IDEA 2020.2正式發(fā)布的文章就介紹到這了,更多相關(guān)IntelliJ IDEA 2020.2正式發(fā)布內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
@Value注入List、數(shù)組、Set、Map問(wèn)題
這篇文章主要介紹了@Value注入List、數(shù)組、Set、Map問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07spring cloud實(shí)現(xiàn)Eureka注冊(cè)中心的HA的方法
本篇文章主要介紹了spring cloud實(shí)現(xiàn)Eureka注冊(cè)中心的HA的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Eclipse最新版使用過(guò)程中遇到的問(wèn)題總結(jié)
這篇文章主要介紹了Eclipse最新版使用過(guò)程中遇到的問(wèn)題總結(jié)的相關(guān)資料,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09jedis操作redis的幾種常見(jiàn)方式總結(jié)
Redis是一個(gè)著名的key-value存儲(chǔ)系統(tǒng),也是nosql中的最常見(jiàn)的一種,這篇文章主要給大家總結(jié)了關(guān)于在java中jedis操作redis的幾種常見(jiàn)方式,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。2017-05-05SpringMVC中的DispatcherServlet詳細(xì)解析
這篇文章主要介紹了SpringMVC中的DispatcherServlet詳細(xì)解析,DispatcherServlet也是一個(gè)Servlet,它也能通過(guò)Servlet的API來(lái)響應(yīng)請(qǐng)求,從而成為一個(gè)前端控制器,Web容器會(huì)調(diào)用Servlet的doGet()以及doPost()等方法,需要的朋友可以參考下2023-12-12Java利用for循環(huán)打印菱形的實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Java利用for循環(huán)打印菱形的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03