船新 IDEA 2020.1真香體驗(yàn)!Java開發(fā)首席生產(chǎn)力擔(dān)當(dāng)

就在前幾天炭玫,Java軟件開發(fā)神器 IDEA 2020.1 新版發(fā)布了:

image

我第一時(shí)間在機(jī)子上更新并體驗(yàn)了幾天奈嘿,感覺還是有點(diǎn)香的!怎么碩呢吞加,體驗(yàn)完新特性之后裙犹,不由的感嘆一句:IDEA現(xiàn)在真的是越來越智能,越來越懂開發(fā)者了衔憨。


UI/界面升級(jí)

1伯诬、界面支持中文了

漢化后的效果就是這個(gè)憨樣子:

image

各花入各眼,好壞就不做評(píng)判了巫财,可以根據(jù)自己的喜好來調(diào)節(jié)。

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

image

2悍及、導(dǎo)航欄進(jìn)化

現(xiàn)在代碼層級(jí)導(dǎo)航欄這里闽瓢,可以直接定位到文件中的某個(gè)具體方法或者字段了,這個(gè)的確很高效

image

3心赶、支持編輯器內(nèi)的Javadocs渲染

以前在IDEA中閱讀Javadoc非常不方便扣讼,因?yàn)樘幱谠紶顟B(tài)的Javadoc中含有各種標(biāo)記,不好讀缨叫。這次新版的IDEA 2020新增了Javadocs的渲染功能椭符,點(diǎn)擊左邊的小按鈕就可以啟用

image

渲染后的Javadoc就非常直觀易讀了荔燎,而且還可以調(diào)整字號(hào)

image

4、新增主題和字體

首先默認(rèn)支持了JetBrains自家的新JetBrains Mono字體销钝,這沒啥可說的有咨,之前就體驗(yàn)過了,詳細(xì)可參考前文《試水JetBrains官方新編程字體蒸健,真香座享!》

image

然后則是采用了統(tǒng)一的IntelliJ Light主題,而且該主題已經(jīng)在不同的操作系統(tǒng)中完全統(tǒng)一了

image
image

喜不喜歡看大家個(gè)人習(xí)慣了似忧。

5渣叛、船新的LightEdit模式

LightEdit,顧名思義盯捌,輕量級(jí)的代碼編輯淳衙。

是的,這次更新的IDEA支持打開單個(gè)代碼文件進(jìn)行編輯挽唉,而無需打開整個(gè)項(xiàng)目滤祖。文件可以在單獨(dú)的編輯窗口打開,而且該窗口可以和其他(項(xiàng)目)窗口共存瓶籽。就像這樣:

image

更強(qiáng)大的是匠童,直接支持快捷打開這個(gè)單文件所在的完整項(xiàng)目:

image

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

image

6塑顺、支持“禪”模式

現(xiàn)在的這個(gè)代碼展示模式有夠豐富了汤求,支持四種了:

image

當(dāng)然,禪模式是最徹底的严拒,一開這個(gè)模式扬绪,整個(gè)世界都清凈了...

image

7、終端支持分欄了

現(xiàn)在可以隨意地將IDEA自帶的終端進(jìn)行橫豎分欄裤唠,非常方便

image

支持直接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,沒毛病,好用藕届,切換也很方便挪蹭。

image
image

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

image

支持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)成如下所示:

image

所以最終變成了這個(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生成各種方法:

image

支持更加智能的檢查和重構(gòu)

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

什么意思呢想鹰?舉個(gè)例子。

當(dāng)你想直接修改某個(gè)已有方法的參數(shù)時(shí)药版,不管三七二十一辑舷,上來可以直接修改方法簽名,然后點(diǎn)擊更新槽片,接下來的所有步驟IDEA可以幫你完成何缓。

image
image
image
image

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

比如這個(gè)例子中还栓,我格式化一個(gè)日期時(shí)碌廓,無意將年月日yyyy/MM/dd字符串寫成了yyyy/mm/dd,中間的MM大小寫忘了剩盒,IDEA自動(dòng)給我們分析出來了:

image

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

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

比如跟匆,這地方我小手一抖异袄,寫錯(cuò)了英語語法,它立馬幫我們提示出來了

image

增強(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ā)生什么。

image

2叁巨、調(diào)試時(shí)斑匪,支持固定對象字段

當(dāng)一個(gè)對象字段過多,以致于調(diào)試時(shí)很難找到需要的字段時(shí)锋勺,我們可以直接將其置頂蚀瘸,便于查看。

image

3庶橱、以文件形式存儲(chǔ)運(yùn)行配置

新版IDEA支持直接將當(dāng)前的調(diào)試/運(yùn)行的配置存檔贮勃,并在以后選擇重新加載

image

更加先進(jìn)的版本控制

第一個(gè)大的改進(jìn)就是重新設(shè)計(jì)了代碼提交的窗口,而不再是以前老的那種模態(tài)化彈窗式窗口了苏章。這樣一來寂嘉,提交代碼時(shí)的代碼比對奏瞬,編輯會(huì)更加舒適。

image

第二個(gè)改進(jìn)就是支持搜索泉孩、刷新本地以及遠(yuǎn)端的代碼分支:

image

另外硼端,這個(gè)歷史日志留痕也是蠻好看的:

image

Maven和Gradle導(dǎo)入更新

此處就以Maven工具為例,編輯器右上角出現(xiàn)的是一個(gè)浮動(dòng)通知寓搬。修改構(gòu)建文件后珍昨,可以使用這個(gè)迷你的通知圖標(biāo)來加載更改。

image

數(shù)據(jù)庫處理增強(qiáng)

新版IDEA內(nèi)置的數(shù)據(jù)庫管理句喷,現(xiàn)在可以支持將數(shù)據(jù)導(dǎo)出到Excel(.xlsx)文件镣典,并且直接在編輯器中以文本形式查看

image

增強(qiáng)的HTTP Client

升級(jí)之后的HTTP Client更加智能,典型的比如:支持自動(dòng)匹配和補(bǔ)全

image

而且還可以在Contoller代碼的左側(cè)脏嚷,通過快捷的方式來自動(dòng)生成HTTP請求文件

image

而且對于Spring項(xiàng)目骆撇,還可以在底部的Endpoints窗口里來快捷生成HTTP請求文件。

image

其他改進(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)一大票的插件都不能用了悠咱,所以周邊支持的兼容性還得再等等蒸辆。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市析既,隨后出現(xiàn)的幾起案子躬贡,更是在濱河造成了極大的恐慌,老刑警劉巖眼坏,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拂玻,死亡現(xiàn)場離奇詭異,居然都是意外死亡宰译,警方通過查閱死者的電腦和手機(jī)檐蚜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沿侈,“玉大人闯第,你說我怎么就攤上這事∽菏茫” “怎么了咳短?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵肃廓,是天一觀的道長。 經(jīng)常有香客問我诲泌,道長,這世上最難降的妖魔是什么铣鹏? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任敷扫,我火速辦了婚禮,結(jié)果婚禮上诚卸,老公的妹妹穿的比我還像新娘葵第。我一直安慰自己,他們只是感情好合溺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布卒密。 她就那樣靜靜地躺著,像睡著了一般棠赛。 火紅的嫁衣襯著肌膚如雪哮奇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天睛约,我揣著相機(jī)與錄音鼎俘,去河邊找鬼。 笑死辩涝,一個(gè)胖子當(dāng)著我的面吹牛贸伐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怔揩,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捉邢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了商膊?” 一聲冷哼從身側(cè)響起伏伐,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翘狱,沒想到半個(gè)月后秘案,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潦匈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年阱高,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茬缩。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赤惊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凰锡,到底是詐尸還是另有隱情未舟,我是刑警寧澤圈暗,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站裕膀,受9級(jí)特大地震影響员串,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昼扛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一寸齐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抄谐,春花似錦渺鹦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浦箱,卻和暖如春吸耿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憎茂。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工珍语, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竖幔。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓板乙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拳氢。 傳聞我的和親對象是個(gè)殘疾皇子募逞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 鏡子頭,三亭五眼比例均衡的鵝蛋臉不知不覺中瘦成了瓜子臉馋评,那一刻除了覺得很神奇以外并沒有想像中的開心放接。 為什么說神奇...
    T茶茶閱讀 1,249評(píng)論 0 1
  • Swift語言使用var定義變量,但和別的語言不同留特,Swift里不會(huì)自動(dòng)給變量賦初始值纠脾,也就是說變量不會(huì)有默認(rèn)值,...
    guoshengboy閱讀 272評(píng)論 0 0
  • 一直以來對于身體的穴位是盲點(diǎn)蜕青,瑜伽課所學(xué)到的一點(diǎn)點(diǎn)小知識(shí)苟蹈,憑著記憶記錄一些,漲漲姿勢右核,稍作概括慧脱,動(dòng)動(dòng)手指靜靜心。 ...
    蓮若一閱讀 714評(píng)論 0 3
  • 走過那段揮汗如雨的高中生活贺喝,再次到了距離高考150天的日子菱鸥,只不過宗兼,這一次,我在大學(xué)校園里氮采∫笊埽回想365天前,在距高...
    思點(diǎn)閱讀 638評(píng)論 0 4