通過(guò)Java 9模塊系統(tǒng)入門(mén)

2018-08-17 14:31 更新

通過(guò)Java 9模塊系統(tǒng)入門(mén)

下面討論的功能基于IntelliJ IDEA和JDK 9的早期訪問(wèn)版本,并且可能在將來(lái)發(fā)生變化。

Java平臺(tái)模塊系統(tǒng)(JSR 376)又稱Project Jigsaw,目標(biāo)是成為JDK 9版本的一部分。JSR描述的系統(tǒng)目標(biāo)是:

  • 可靠的配置,用一種程序組件聲明彼此之間顯式依賴關(guān)系的方法取代脆弱的、容易出錯(cuò)的類路徑機(jī)制
  • 強(qiáng)大的封裝,允許組件聲明其中哪些公共類型可供其他組件訪問(wèn),哪些不可訪問(wèn)。

IntelliJ IDEA已經(jīng)有一個(gè)項(xiàng)目模塊的概念。每個(gè)IntelliJ IDEA模塊都構(gòu)建自己的類路徑。 

隨著新的Java平臺(tái)模塊系統(tǒng)的引入,如果使用Java平臺(tái)的模塊路徑而不是類路徑,IntelliJ IDEA模塊必須通過(guò)支持Java平臺(tái)的模塊路徑來(lái)擴(kuò)展其功能。 

在本教程中,我們將探討IntelliJ IDEA在創(chuàng)建和使用Java平臺(tái)模塊方面提供的幫助,以及這些模塊如何與IntelliJ IDEA模塊協(xié)同工作。 

創(chuàng)建一個(gè)模塊

在IntelliJ IDEA中創(chuàng)建模塊后,我們可以通過(guò)在模塊源目錄下創(chuàng)建module-info.java文件將其定義為Java平臺(tái)模塊。 

每個(gè)IntelliJ IDEA模塊最多只能有一個(gè)Java平臺(tái)模塊。我們可以通過(guò)選擇我們想要?jiǎng)?chuàng)建它的源目錄并使用菜單選項(xiàng):New|module-info.java(New | module-info.java)為我們的模塊創(chuàng)建一個(gè)新的module-info.java。 

Jigsaw創(chuàng)建模塊信息

創(chuàng)建module-info.java聲明文件時(shí),IntelliJ IDEA將選擇IntelliJ IDEA模塊的名稱作為Java Platform模塊的默認(rèn)名稱。這可以更改,不需要匹配。 

拼圖模塊名稱

使用模塊

與所有java文件類型一樣,IntelliJ IDEA幫助我們對(duì)module-info.java內(nèi)容進(jìn)行自動(dòng)完成和有效性檢查。

需要在IntelliJ IDEA和Java Platform(Jigsaw)模塊中定義模塊的依賴關(guān)系。 IntelliJ IDEA幫助我們保持同步。 要定義項(xiàng)目模塊之間的依賴關(guān)系,我們可以在module-info.java中編寫(xiě)一個(gè)requires聲明,然后IntelliJ IDEA會(huì)建議我們將它作為依賴項(xiàng)添加到其模塊中。 這也適用于庫(kù)依賴項(xiàng),但前提是庫(kù)jar文件已經(jīng)聲明為項(xiàng)目依賴項(xiàng)。 

Jigsaw從模塊信息中添加依賴項(xiàng)

從另一個(gè)方向,我們可以編寫(xiě)我們的java代碼。IntelliJ IDEA將建議將其他模塊添加為對(duì)當(dāng)前模塊的依賴,然后還建議我們添加requires聲明。 

Jigsaw從代碼中添加依賴項(xiàng)

運(yùn)行模塊

在IntelliJ IDEA中運(yùn)行類時(shí)(使用快捷鍵Ctrl+Shift+F10),將使用Java平臺(tái)模塊中聲明的信息。這意味著IntelliJ IDEA將使用模塊路徑而不是類路徑運(yùn)行JVM。這將強(qiáng)制執(zhí)行我們從模塊系統(tǒng)獲得的強(qiáng)封裝,然后我們可能會(huì)遇到的任何依賴性問(wèn)題都會(huì)被此次運(yùn)行重現(xiàn)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)