IntelliJ IDEA宣布對Java 9的支持情況

責任編輯:editor005

作者:張衛(wèi)濱

2017-09-28 11:19:41

摘自:INFOQ

如果在一個帶有module-info java文件的模塊中運行代碼的話,IntelliJ IDEA會自動使用-p參數(模塊路徑)來替代-classpath:例如,我們可以高亮顯示自動化的模塊:  這樣的話,能夠看出我們依賴的并不是真正的Java 9模塊。

Java 9于本月21日正式發(fā)布,廣受開發(fā)者歡迎的IDE產品IntelliJ IDEA隨即在官方博客介紹了對Java 9的支持情況以及即將發(fā)布的IntelliJ IDEA 2017.3所包含的新特性?,F在,我們就看一下IntelliJ IDEA提供了哪些特性來幫助開發(fā)人員更高效地使用Java 9的新功能。

Jigsaw與JPMS

在Java 9中,最引人關注的新特性就是Java平臺模塊化系統(Java Platform Module System,JPMS)了,它是在Jigsaw項目下提供的。Jigsaw本身的任務范圍更廣泛一些,其中還包括對JDK本身的模塊化,而對于開發(fā)人員來說,更關心的則是JPMS。

IntelliJ IDEA通過多項特性來支持Java平臺模塊化系統。

借助IDEA,我們可以很容易地為IntelliJ IDEA module創(chuàng)建module-info.java文件,如下圖所示:

這樣的話,就能得到模塊聲明的基本結構,包括與IntelliJ IDEA module匹配的模塊名。當然,在使用該文件的時候,可以借助代碼高亮和補全功能:

如果在一個帶有module-info.java文件的模塊中運行代碼的話,IntelliJ IDEA會自動使用-p參數(模塊路徑)來替代-classpath:

在將代碼遷移至JPMS時,對于常見的問題,IntelliJ IDEA提供了快速修正的功能,比如添加“requires”指令:

  另外,還能夠探測到重復的指令和其他可修復的錯誤:

IntelliJ IDEA還支持創(chuàng)建模塊圖,從而能夠以可視化的方式展現我們所使用的模塊。JDK模塊、自己編寫的模塊以及自動化(automatic)模塊會以不同的顏色顯示,為了強調,傳遞性所需的模塊會使用更粗的線來表示。

當我們剛開始使用模塊化功能時,這些圖會特別有用,因為它能夠讓我們清楚地看到都使用了哪些模塊,它們來自哪里。

IntelliJ IDEA還提供了探查(Inspection)功能,有助于將代碼遷移至Java 9。例如,我們可以高亮顯示自動化的模塊:

這樣的話,能夠看出我們依賴的并不是真正的Java 9模塊。這一點也是很重要的,因為這些自動化模塊隨著時間推移可能會發(fā)生變化:

關于IntelliJ IDEA對模塊化的基本支持以及模塊圖和快速修復的功能,可以參考jetbrains博客上的相關文章。

便利的工廠方法

Java 9引入了一些小的API變更,讓開發(fā)人員的工作變得更輕松。其中有一個API就是簡化具有固定內容的Collections的創(chuàng)建。IntelliJ IDEA有一項inspection能夠提示我們可以在何處使用這項新特性:

這樣的話,相應的代碼會高亮顯示,提示我們可以使用Java 9的工廠方法來進行簡化。

  Thread.onSpinWait

Java 9允許我們?yōu)镴VM提供一些提示信息,便于實現性能的提升。具體來講,如果你的代碼需要在一個循環(huán)中等待某個條件發(fā)生的話,那么可以使用Thread.onSpinWait讓運行時環(huán)境了解到這一點。IntelliJ IDEA能夠定位到這種提示在何處會比較有用,并提示我們添加進來:

  增強的棄用標記

Java 9提供了另外一個看起來很小的特性,那就是增強的棄用標記,能夠讓開發(fā)人員更好地理解代碼的影響。以前,我們只能將代碼標記為deprecated并在Javadoc中添加一些原因說明的文檔,現在@Deprecated新增了兩個有用的屬性:since和orRemoval。在IntelliJ IDEA 2017.3中將會有一個新的inspection項,如果我們使用了標記為“forRemoval”的代碼,將會高亮提示。

我們開啟這項探測并設置為“Warning”(默認配置)級別的話,如果使用了標記為“forRemoval”的代碼,IntelliJ IDEA將會使用紅色的刪除線來標記,而不是之前常見的黑色:

  JShell

Java 9首次為Java語言提供了REPL工具,名為JShell。我們可以在命令行或者在IntelliJ IDEA的終端中運行該REPL。另外,IntelliJ IDEA還提供了一個基本的控制臺,能夠讓我們在IDE中使用JShell,類似于Groovy Console。

  借助這個控制臺,我們可以嘗試代碼片段,還可以選擇運行代碼的模塊路徑。

  這項特性會在2017.3 EAP中提供支持。

其他默認支持的特性

Java 9提供了許多的特性,包括Streams API的變更、引入了Optional以及支持接口中的私有方法。如果我們將項目的代碼級別調整為Java 9,這些特性將會自動支持,并且能夠進行自動的代碼補全。

另外,還可以在生成文檔的時候添加一個標記,使IntelliJ IDEA生成HTML 5格式的Javadoc。

我們還可以使用IntelliJ IDEA生成多個發(fā)布版的JAR文件,通常來講這些工作可以留給Maven、Gradle或Ant這樣的工具來完成,但是IntelliJ IDEA同樣可以做到這一點。

IntelliJ IDEA已經對Java 9的大多數功能提供了便利的支持,想切換至Java 9體驗一下新特性的讀者可以采用該IDE簡化編碼的流程。

鏈接已復制,快去分享吧

企業(yè)網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號