就在前幾天,Java軟件開發神器 IDEA 2020.1 新版發佈了:java
我第一時間在機子上更新並體驗了幾天,感受仍是有點香的!怎麼碩呢,體驗完新特性以後,不禁的感嘆一句:IDEA如今真的是愈來愈智能,愈來愈懂開發者了。數據庫
一、界面支持中文了編程
漢化後的效果就是這個憨樣子:框架
各花入各眼,好壞就不作評判了,能夠根據本身的喜愛來調節。編輯器
必需要說的是,這個中文漢化不是軟件原生支持,而是須要下載安裝一個名爲Chinese (Simplified) Language Pack
的插件,好在這個插件就是JetBrains
官方提供的ide
二、導航欄進化函數
如今代碼層級導航欄這裏,能夠直接定位到文件中的某個具體方法或者字段了,這個的確很高效工具
三、支持編輯器內的Javadocs
渲染字體
之前在IDEA中閱讀Javadoc
很是不方便,由於處於原始狀態的Javadoc
中含有各類標記,很差讀。此次新版的IDEA 2020新增了Javadocs
的渲染功能,點擊左邊的小按鈕就能夠啓用this
渲染後的Javadoc
就很是直觀易讀了,並且還能夠調整字號
四、新增主題和字體
首先默認支持了JetBrains
自家的新JetBrains Mono
字體,這沒啥可說的,以前就體驗過了,詳細可參考前文《試水JetBrains官方新編程字體,真香!》
而後則是採用了統一的IntelliJ Light
主題,並且該主題已經在不一樣的操做系統中徹底統一了
喜不喜歡看你們我的習慣了。
五、船新的LightEdit模式
LightEdit
,顧名思義,輕量級的代碼編輯。
是的,此次更新的IDEA支持打開單個代碼文件進行編輯,而無需打開整個項目。文件能夠在單獨的編輯窗口打開,並且該窗口能夠和其餘(項目)窗口共存。就像這樣:
更強大的是,直接支持快捷打開這個單文件所在的完整項目:
甚至還能夠經過命令行來打開單文件,這至關能夠了:
六、支持「禪」模式
如今的這個代碼展現模式有夠豐富了,支持四種了:
固然,禪模式是最完全的,一開這個模式,整個世界都清淨了...
七、終端支持分欄了
如今能夠隨意地將IDEA自帶的終端進行橫豎分欄,很是方便
不少小夥伴交流說本身JDK環境好像裝的有問題,實驗各類出問題。爲了這個事,強迫症都快犯了,很煩。
從IntelliJ IDEA 2020.1開始,咱們能夠直接在建立項目時,直接從IDEA上下載並設置JDK環境,很方便了。
我特意實驗了一下,在IDEA裏面下載安裝了個Open JDK 14,沒毛病,好用,切換也很方便。
除此以外,IDEA還直接支持Git的安裝,i了i了
前段時間Java 14發佈,加入了一些新特性,此次IDEA 2020.1迅速跟進,支持了Java 14的一些新特性,舉兩個典型的例子。
一、instanceof
用法加強
老的Java版本中,對於instanceof語法,咱們通常都是這樣用的:
private void test( Object obj ) { if( obj instanceof String ) { String str = (String) obj; // 需手動強制轉換! System.out.println( str.isEmpty() ); } }
而Java 14對instanceof
用法作了加強,咱們藉助全新的IDEA 2020
,能夠快捷的將上面的代碼自動重構成以下所示:
因此最終變成了這個亞子:
private void test( Object obj ) { if( obj instanceof String str ) { // 校驗經過,直接後面定義變量,無需強轉! System.out.println( str.isEmpty() ); } }
二、record
新語法支持
Java 14新增了record
新語法,record
的詞面意思就是 「記錄」,主要用於形式化的固定記錄,這在之前主要就是經過 不可變類來實現的,舉個例子吧。
好比咱們定義一個不可變的日誌記錄類LogRecord
,裏面包含日誌ID(id
),日誌時間(date
),日誌詳情(detail
),按照老的作法,只能使用class
進行定義:
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認爲上面這種final
類型class
的定義的套路是徹底固定的,寫了不少固定套路的代碼,包括:構造函數、Getter
方法、toString()
方法、hashCode()
和 equals()
方法等等,十分無聊。
爲此Java 14推出了全新的record
語法,只需一行代碼便可搞定,十分方便:
record LogRecord( int id, LocalDate date, String detail ) { }
此次IDEA 2020中就已經徹底支持recod
語法了,而且還能夠自動顯式地爲record
生成各類方法:
一、支持就地更改方法簽名
什麼意思呢?舉個例子。
當你想直接修改某個已有方法的參數時,無論三七二十一,上來能夠直接修改方法簽名,而後點擊更新,接下來的全部步驟IDEA能夠幫你完成。
二、智能分析日期字符串格式
好比這個例子中,我格式化一個日期時,無心將年月日yyyy/MM/dd
字符串寫成了yyyy/mm/dd
,中間的MM
大小寫忘了,IDEA自動給咱們分析出來了:
三、智能語法和拼寫檢查器
這個功能得配合Grazie
這個插件一塊兒使用,該插件是一個全面的語法、拼寫、以及樣式檢查工具。
好比,這地方我小手一抖,寫錯了英語語法,它立馬幫咱們提示出來了
一、數據流分析輔助,能夠直接預測下面的運行結果
IDEA 2020.1直接將數據流分析添加到JVM調試器。當程序在斷點處中止時,IDEA能夠根據程序的當前狀態運行數據流分析,來預測下一步將要發生什麼。
二、調試時,支持固定對象字段
當一個對象字段過多,以至於調試時很難找到須要的字段時,咱們能夠直接將其置頂,便於查看。
三、以文件形式存儲運行配置
新版IDEA支持直接將當前的調試/運行的配置存檔,並在之後選擇從新加載
第一個大的改進就是從新設計了代碼提交的窗口,而再也不是之前老的那種模態化彈窗式窗口了。這樣一來,提交代碼時的代碼比對,編輯會更加溫馨。
第二個改進就是支持搜索、刷新本地以及遠端的代碼分支:
另外,這個歷史日誌留痕也是蠻好看的:
此處就以Maven工具爲例,編輯器右上角出現的是一個浮動通知。修改構建文件後,可使用這個迷你的通知圖標來加載更改。
新版IDEA內置的數據庫管理,如今能夠支持將數據導出到Excel(.xlsx)
文件,而且直接在編輯器中以文本形式查看
升級以後的HTTP Client
更加智能,典型的好比:支持自動匹配和補全
並且還能夠在Contoller
代碼的左側,經過快捷的方式來自動生成HTTP請求文件
並且對於Spring項目,還能夠在底部的Endpoints
窗口裏來快捷生成HTTP請求文件。
一、對各類框架的支持改進,好比:Spring WebFlux/Selenium/JMS/Micronaut/RxJava
等等
二、對Docker/Kubernetes
的支持改進
三、對Scala 3
的支持
四、對Android Volley
的支持
五、對JavaScript
的改進和支持
體驗一番以後發現,新版的IDEA 2020.1肉眼可見的改進仍是很是多的,挺香。
不過還有一個實際的問題就是:我一升級以後發現一大票的插件都不能用了,因此周邊支持的兼容性還得再等等。