就在前幾天炭玫,Java軟件開發(fā)神器 IDEA 2020.1 新版發(fā)布了:
我第一時(shí)間在機(jī)子上更新并體驗(yàn)了幾天奈嘿,感覺還是有點(diǎn)香的!怎么碩呢吞加,體驗(yàn)完新特性之后裙犹,不由的感嘆一句:IDEA現(xiàn)在真的是越來越智能,越來越懂開發(fā)者了衔憨。
UI/界面升級(jí)
1伯诬、界面支持中文了
漢化后的效果就是這個(gè)憨樣子:
各花入各眼,好壞就不做評(píng)判了巫财,可以根據(jù)自己的喜好來調(diào)節(jié)。
必須要說的是哩陕,這個(gè)中文漢化不是軟件原生支持平项,而是需要下載安裝一個(gè)名為Chinese (Simplified) Language Pack
的插件,好在這個(gè)插件就是JetBrains
官方提供的
2悍及、導(dǎo)航欄進(jìn)化
現(xiàn)在代碼層級(jí)導(dǎo)航欄這里闽瓢,可以直接定位到文件中的某個(gè)具體方法或者字段了,這個(gè)的確很高效
3心赶、支持編輯器內(nèi)的Javadocs
渲染
以前在IDEA中閱讀Javadoc
非常不方便扣讼,因?yàn)樘幱谠紶顟B(tài)的Javadoc
中含有各種標(biāo)記,不好讀缨叫。這次新版的IDEA 2020新增了Javadocs
的渲染功能椭符,點(diǎn)擊左邊的小按鈕就可以啟用
渲染后的Javadoc
就非常直觀易讀了荔燎,而且還可以調(diào)整字號(hào)
4、新增主題和字體
首先默認(rèn)支持了JetBrains
自家的新JetBrains Mono
字體销钝,這沒啥可說的有咨,之前就體驗(yàn)過了,詳細(xì)可參考前文《試水JetBrains官方新編程字體蒸健,真香座享!》
然后則是采用了統(tǒng)一的IntelliJ Light
主題,而且該主題已經(jīng)在不同的操作系統(tǒng)中完全統(tǒng)一了
喜不喜歡看大家個(gè)人習(xí)慣了似忧。
5渣叛、船新的LightEdit模式
LightEdit
,顧名思義盯捌,輕量級(jí)的代碼編輯淳衙。
是的,這次更新的IDEA支持打開單個(gè)代碼文件進(jìn)行編輯挽唉,而無需打開整個(gè)項(xiàng)目滤祖。文件可以在單獨(dú)的編輯窗口打開,而且該窗口可以和其他(項(xiàng)目)窗口共存瓶籽。就像這樣:
更強(qiáng)大的是匠童,直接支持快捷打開這個(gè)單文件所在的完整項(xiàng)目:
甚至還可以通過命令行來打開單文件,這相當(dāng)可以了:
6塑顺、支持“禪”模式
現(xiàn)在的這個(gè)代碼展示模式有夠豐富了汤求,支持四種了:
當(dāng)然,禪模式是最徹底的严拒,一開這個(gè)模式扬绪,整個(gè)世界都清凈了...
7、終端支持分欄了
現(xiàn)在可以隨意地將IDEA自帶的終端進(jìn)行橫豎分欄裤唠,非常方便
支持直接IDEA里安裝JDK和Git
很多小伙伴交流說自己JDK環(huán)境好像裝的有問題挤牛,實(shí)驗(yàn)各種出問題。為了這個(gè)事种蘸,強(qiáng)迫癥都快犯了墓赴,很煩毛嫉。
從IntelliJ IDEA 2020.1開始筋蓖,我們可以直接在創(chuàng)建項(xiàng)目時(shí),直接從IDEA上下載并設(shè)置JDK環(huán)境鳄橘,很方便了刊侯。
我特地實(shí)驗(yàn)了一下章办,在IDEA里面下載安裝了個(gè)Open JDK 14,沒毛病,好用藕届,切換也很方便挪蹭。
除此之外,IDEA還直接支持Git的安裝翰舌,i了i了
支持Java 14新特性
前段時(shí)間Java 14發(fā)布嚣潜,加入了一些新特性,這次IDEA 2020.1迅速跟進(jìn)椅贱,支持了Java 14的一些新特性懂算,舉兩個(gè)典型的例子。
1庇麦、instanceof
用法增強(qiáng)
老的Java版本中计技,對于instanceof語法,我們一般都是這樣用的:
private void test( Object obj ) {
if( obj instanceof String ) {
String str = (String) obj; // 需手動(dòng)強(qiáng)制轉(zhuǎn)換山橄!
System.out.println( str.isEmpty() );
}
}
而Java 14對instanceof
用法做了增強(qiáng)垮媒,我們借助全新的IDEA 2020
,可以快捷的將上面的代碼自動(dòng)重構(gòu)成如下所示:
所以最終變成了這個(gè)亞子:
private void test( Object obj ) {
if( obj instanceof String str ) { // 校驗(yàn)通過航棱,直接后面定義變量睡雇,無需強(qiáng)轉(zhuǎn)!
System.out.println( str.isEmpty() );
}
}
2饮醇、record
新語法支持
Java 14新增了record
新語法它抱,record
的詞面意思就是 “記錄”,主要用于形式化的固定記錄朴艰,這在以前主要就是通過 不可變類來實(shí)現(xiàn)的观蓄,舉個(gè)例子吧。
比如我們定義一個(gè)不可變的日志記錄類LogRecord
祠墅,里面包含日志ID(id
)侮穿,日志時(shí)間(date
),日志詳情(detail
)毁嗦,按照老的做法亲茅,只能使用class
進(jìn)行定義:
public final class LogRecord { // 不可變類
private final int id;
private final LocalDate date;
private final String detail;
public LogRecord(int id, LocalDate date, String detail) {
this.id = id;
this.date = date;
this.detail = detail;
}
public int getId() {
return id;
}
public LocalDate getDate() {
return date;
}
public String getDetail() {
return detail;
}
@Override
public String toString() {
return "LogRecord{" +
"id=" + id +
", date=" + date +
", detail='" + detail + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LogRecord logRecord = (LogRecord) o;
return id == logRecord.id &&
Objects.equals(date, logRecord.date) &&
Objects.equals(detail, logRecord.detail);
}
@Override
public int hashCode() {
return Objects.hash(id, date, detail);
}
}
Java 14認(rèn)為上面這種final
類型class
的定義的套路是完全固定的,寫了很多固定套路的代碼狗准,包括:構(gòu)造函數(shù)芯急、Getter
方法、toString()
方法驶俊、hashCode()
和 equals()
方法等等,十分無聊免姿。
為此Java 14推出了全新的record
語法饼酿,只需一行代碼即可搞定,十分方便:
record LogRecord( int id, LocalDate date, String detail ) {
}
這次IDEA 2020中就已經(jīng)完全支持recod
語法了,并且還可以自動(dòng)顯式地為record
生成各種方法:
支持更加智能的檢查和重構(gòu)
1故俐、支持就地更改方法簽名
什么意思呢想鹰?舉個(gè)例子。
當(dāng)你想直接修改某個(gè)已有方法的參數(shù)時(shí)药版,不管三七二十一辑舷,上來可以直接修改方法簽名,然后點(diǎn)擊更新槽片,接下來的所有步驟IDEA可以幫你完成何缓。
2、智能分析日期字符串格式
比如這個(gè)例子中还栓,我格式化一個(gè)日期時(shí)碌廓,無意將年月日yyyy/MM/dd
字符串寫成了yyyy/mm/dd
,中間的MM
大小寫忘了剩盒,IDEA自動(dòng)給我們分析出來了:
3谷婆、智能語法和拼寫檢查器
這個(gè)功能得配合Grazie
這個(gè)插件一起使用,該插件是一個(gè)全面的語法辽聊、拼寫纪挎、以及樣式檢查工具。
比如跟匆,這地方我小手一抖异袄,寫錯(cuò)了英語語法,它立馬幫我們提示出來了
增強(qiáng)調(diào)試功能
1贾铝、數(shù)據(jù)流分析輔助隙轻,可以直接預(yù)測下面的運(yùn)行結(jié)果
IDEA 2020.1直接將數(shù)據(jù)流分析添加到JVM調(diào)試器。當(dāng)程序在斷點(diǎn)處停止時(shí)垢揩,IDEA可以根據(jù)程序的當(dāng)前狀態(tài)運(yùn)行數(shù)據(jù)流分析玖绿,來預(yù)測下一步將要發(fā)生什么。
2叁巨、調(diào)試時(shí)斑匪,支持固定對象字段
當(dāng)一個(gè)對象字段過多,以致于調(diào)試時(shí)很難找到需要的字段時(shí)锋勺,我們可以直接將其置頂蚀瘸,便于查看。
3庶橱、以文件形式存儲(chǔ)運(yùn)行配置
新版IDEA支持直接將當(dāng)前的調(diào)試/運(yùn)行的配置存檔贮勃,并在以后選擇重新加載
更加先進(jìn)的版本控制
第一個(gè)大的改進(jìn)就是重新設(shè)計(jì)了代碼提交的窗口,而不再是以前老的那種模態(tài)化彈窗式窗口了苏章。這樣一來寂嘉,提交代碼時(shí)的代碼比對奏瞬,編輯會(huì)更加舒適。
第二個(gè)改進(jìn)就是支持搜索泉孩、刷新本地以及遠(yuǎn)端的代碼分支:
另外硼端,這個(gè)歷史日志留痕也是蠻好看的:
Maven和Gradle導(dǎo)入更新
此處就以Maven工具為例,編輯器右上角出現(xiàn)的是一個(gè)浮動(dòng)通知寓搬。修改構(gòu)建文件后珍昨,可以使用這個(gè)迷你的通知圖標(biāo)來加載更改。
數(shù)據(jù)庫處理增強(qiáng)
新版IDEA內(nèi)置的數(shù)據(jù)庫管理句喷,現(xiàn)在可以支持將數(shù)據(jù)導(dǎo)出到Excel(.xlsx)
文件镣典,并且直接在編輯器中以文本形式查看
增強(qiáng)的HTTP Client
升級(jí)之后的HTTP Client
更加智能,典型的比如:支持自動(dòng)匹配和補(bǔ)全
而且還可以在Contoller
代碼的左側(cè)脏嚷,通過快捷的方式來自動(dòng)生成HTTP請求文件
而且對于Spring項(xiàng)目骆撇,還可以在底部的Endpoints
窗口里來快捷生成HTTP請求文件。
其他改進(jìn)
1父叙、對各種框架的支持改進(jìn)神郊,比如:Spring WebFlux/Selenium/JMS/Micronaut/RxJava
等等
2、對Docker/Kubernetes
的支持改進(jìn)
3趾唱、對Scala 3
的支持
4涌乳、對Android Volley
的支持
5、對JavaScript
的改進(jìn)和支持
小結(jié)
體驗(yàn)一番之后發(fā)現(xiàn)甜癞,新版的IDEA 2020.1肉眼可見的改進(jìn)還是非常多的夕晓,挺香。
不過還有一個(gè)實(shí)際的問題就是:我一升級(jí)之后發(fā)現(xiàn)一大票的插件都不能用了悠咱,所以周邊支持的兼容性還得再等等蒸辆。