船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

就在前幾天,Java軟件開發神器 IDEA 2020.1 新版發佈了:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

我第一時間在機子上更新並體驗了幾天,感覺還是有點香的!怎麼碩呢,體驗完新特性之後,不由的感嘆一句:IDEA現在真的是越來越智能,越來越懂開發者了。


UI/界面升級

1、界面支持中文了

漢化後的效果就是這個憨樣子:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

各花入各眼,好壞就不做評判了,可以根據自己的喜好來調節。

必須要說的是,這個中文漢化不是軟件原生支持,而是需要下載安裝一個名為Chinese (Simplified) Language Pack的插件,好在這個插件就是JetBrains官方提供的

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

2、導航欄進化

現在代碼層級導航欄這裡,可以直接定位到文件中的某個具體方法或者字段了,這個的確很高效

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

3、支持編輯器內的Javadocs渲染

以前在IDEA中閱讀Javadoc非常不方便,因為處於原始狀態的Javadoc中含有各種標記,不好讀。這次新版的IDEA 2020新增了Javadocs的渲染功能,點擊左邊的小按鈕就可以啟用

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

渲染後的Javadoc就非常直觀易讀了,而且還可以調整字號

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

4、新增主題和字體

首先默認支持了JetBrains自家的新JetBrains Mono字體,這沒啥可說的,之前就體驗過了,詳細可參考前文《試水JetBrains官方新編程字體,真香!》

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

然後則是採用了統一的IntelliJ Light主題,而且該主題已經在不同的操作系統中完全統一了

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

喜不喜歡看大家個人習慣了。

5、船新的LightEdit模式

LightEdit,顧名思義,輕量級的代碼編輯。

是的,這次更新的IDEA支持打開單個代碼文件進行編輯,而無需打開整個項目。文件可以在單獨的編輯窗口打開,而且該窗口可以和其他(項目)窗口共存。就像這樣:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

更強大的是,直接支持快捷打開這個單文件所在的完整項目:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

甚至還可以通過命令行來打開單文件,這相當可以了:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

6、支持“禪”模式

現在的這個代碼展示模式有夠豐富了,支持四種了:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

當然,禪模式是最徹底的,一開這個模式,整個世界都清淨了...

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

7、終端支持分欄了

現在可以隨意地將IDEA自帶的終端進行橫豎分欄,非常方便

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


支持直接IDEA裡安裝JDK和Git

很多小夥伴交流說自己JDK環境好像裝的有問題,實驗各種出問題。為了這個事,強迫症都快犯了,很煩。

從IntelliJ IDEA 2020.1開始,我們可以直接在創建項目時,直接從IDEA上下載並設置JDK環境,很方便了。

我特地實驗了一下,在IDEA裡面下載安裝了個Open JDK 14,沒毛病,好用,切換也很方便。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

除此之外,IDEA還直接支持Git的安裝,i了i了

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


支持Java 14新特性

前段時間Java 14發佈,加入了一些新特性,這次IDEA 2020.1迅速跟進,支持了Java 14的一些新特性,舉兩個典型的例子。

1、instanceof用法增強

老的Java版本中,對於instanceof語法,我們一般都是這樣用的:

<code>private void test( Object obj ) {
    if( obj instanceof String  ) {
        String str = (String) obj;  // 需手動強制轉換!
        System.out.println( str.isEmpty() );
    }
}/<code>

而Java 14對instanceof用法做了增強,我們藉助全新的IDEA 2020,可以快捷的將上面的代碼自動重構成如下所示:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

所以最終變成了這個亞子:

<code>private void test( Object obj ) {
    if( obj instanceof String str ) { // 校驗通過,直接後面定義變量,無需強轉!
        System.out.println( str.isEmpty() );
    }
}/<code>

2、record新語法支持

Java 14新增了record新語法,record的詞面意思就是 “記錄”,主要用於形式化的固定記錄,這在以前主要就是通過 不可變類來實現的,舉個例子吧。

比如我們定義一個不可變的日誌記錄類LogRecord,裡面包含日誌ID(id),日誌時間(date),日誌詳情(detail),按照老的做法,只能使用class進行定義:

<code>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);
    }
    
}/<code>

Java 14認為上面這種final類型class的定義的套路是完全固定的,寫了很多固定套路的代碼,包括:構造函數、Getter方法、toString()方法、hashCode() 和 equals()方法等等,十分無聊。

為此Java 14推出了全新的record語法,只需一行代碼即可搞定,十分方便:

<code>record LogRecord( int id, LocalDate date, String detail ) {
    
}/<code>

這次IDEA 2020中就已經完全支持recod語法了,並且還可以自動顯式地為record生成各種方法:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


支持更加智能的檢查和重構

1、支持就地更改方法簽名

什麼意思呢?舉個例子。

當你想直接修改某個已有方法的參數時,不管三七二十一,上來可以直接修改方法簽名,然後點擊更新,接下來的所有步驟IDEA可以幫你完成。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

2、智能分析日期字符串格式

比如這個例子中,我格式化一個日期時,無意將年月日yyyy/MM/dd字符串寫成了yyyy/mm/dd,中間的MM大小寫忘了,IDEA自動給我們分析出來了:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

3、智能語法和拼寫檢查器

這個功能得配合Grazie這個插件一起使用,該插件是一個全面的語法、拼寫、以及樣式檢查工具。

比如,這地方我小手一抖,寫錯了英語語法,它立馬幫我們提示出來了

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


增強調試功能

1、數據流分析輔助,可以直接預測下面的運行結果

IDEA 2020.1直接將數據流分析添加到JVM調試器。當程序在斷點處停止時,IDEA可以根據程序的當前狀態運行數據流分析,來預測下一步將要發生什麼。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

2、調試時,支持固定對象字段

當一個對象字段過多,以致於調試時很難找到需要的字段時,我們可以直接將其置頂,便於查看。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

3、以文件形式存儲運行配置

新版IDEA支持直接將當前的調試/運行的配置存檔,並在以後選擇重新加載

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


更加先進的版本控制

第一個大的改進就是重新設計了代碼提交的窗口,而不再是以前老的那種模態化彈窗式窗口了。這樣一來,提交代碼時的代碼比對,編輯會更加舒適。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

第二個改進就是支持搜索刷新本地以及遠端的代碼分支:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

另外,這個歷史日誌留痕也是蠻好看的:

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


Maven和Gradle導入更新

此處就以Maven工具為例,編輯器右上角出現的是一個浮動通知。修改構建文件後,可以使用這個迷你的通知圖標來加載更改。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


數據庫處理增強

新版IDEA內置的數據庫管理,現在可以支持將數據導出到Excel(.xlsx)文件,並且直接在編輯器中以文本形式查看

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


增強的HTTP Client

升級之後的HTTP Client更加智能,典型的比如:支持自動匹配和補全

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

而且還可以在Contoller代碼的左側,通過快捷的方式來自動生成HTTP請求文件

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當

而且對於Spring項目,還可以在底部的Endpoints窗口裡來快捷生成HTTP請求文件。

船新 IDEA 2020.1真香體驗!Java開發首席生產力擔當


其他改進

1、對各種框架的支持改進,比如:Spring WebFlux/Selenium/JMS/Micronaut/RxJava等等

2、對Docker/Kubernetes的支持改進

3、對Scala 3的支持

4、對Android Volley的支持

5、對JavaScript的改進和支持


小結

體驗一番之後發現,新版的IDEA 2020.1肉眼可見的改進還是非常多的,挺香。

不過還有一個實際的問題就是:我一升級之後發現一大票的插件都不能用了,所以周邊支持的兼容性還得再等等。



分享到:


相關文章: