欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

初始JAVA模塊化開發(fā)的超詳細(xì)步驟(適合菜鳥)

 更新時(shí)間:2025年03月25日 09:00:13   作者:Wooden-Flute  
這篇文章主要介紹了初始JAVA模塊化開發(fā)的超詳細(xì)步驟,詳細(xì)解釋了模塊描述符的職責(zé)、模塊路徑的概念以及如何使用命令行運(yùn)行模塊化Java程序,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

一、概述

這里講解,如何使用IntelliJ IDEA創(chuàng)建一個(gè)簡(jiǎn)單的模塊化Java應(yīng)用。

這里需要知道,Intellij IDEA項(xiàng)目基本的構(gòu)建單元也叫“模塊(module)”,但這里的模塊和JPMS中的“模塊”不是一回事。Intellij中的模塊是“構(gòu)建單元”,它可以用于組織多種類型的開發(fā)資源。在實(shí)際開發(fā)中,可以使用Intellij模塊來創(chuàng)建和生成JPMS模塊。

二、創(chuàng)建步驟

1、打開Intellij IDEA,創(chuàng)建一個(gè)名為MyJavaModuleApp的Java項(xiàng)目。

每個(gè)IntelliJ IDEA 項(xiàng)目,都至少包容有一個(gè)模塊,在本例中,最頂層的就是在這里起了名字的模塊,可以將它看成是本項(xiàng)目的默認(rèn)模塊。

2、向示例項(xiàng)目中添加”模塊描述符“文件

moduleinfo.java 文件應(yīng)該位于IntelliJ 模塊的 src 文件夾下。

module之后,跟著的就是模塊名,由于所有 模塊都位于一個(gè)全局命名空間中,因此,模塊名稱必須是唯一的,并且應(yīng)該與模塊文件夾的名字相同。

 3、創(chuàng)建多模塊的IntelliJ 項(xiàng)目

向IntelliJ 項(xiàng)目添加新模塊:

  • 一個(gè) IntelliJ 項(xiàng)目可以包容多個(gè)模塊,這在實(shí)際開發(fā)中非常常見。
  • 通常會(huì)將代碼等相關(guān)資源按照“職責(zé)”進(jìn)行分類和匯總,把密切相關(guān)的東西都放在一起,保存在某個(gè)模塊中,然后,再建立起各個(gè)模塊之間的依賴關(guān)系。
  • 達(dá)到一定規(guī)模的 Java 項(xiàng)目,不應(yīng)該將所有的東西全部放在一個(gè)模塊中。

4、IntelliJ項(xiàng)目添加“新模塊”對(duì)話框

從IntelliJ IDEA 的“ New Module ”對(duì)話窗口可以看出,它的“模塊”,是廣義的模塊,在一個(gè) IntelliJ IDEA 項(xiàng)目中,可以創(chuàng)建 N 種類型的“模塊”。

創(chuàng)建IntelliJ 模塊的過程,與創(chuàng)建一個(gè) IntelliJ 項(xiàng)目的過程幾乎一樣,這也說明了,你可以把 IntelliJ 模塊,看成是一個(gè) IntelliJ 的“子項(xiàng)目”。 

模塊創(chuàng)建好之后,采用與前面一樣的方法,為新模塊添加 module info.java 文件。

  • 每個(gè)模塊,都要有自己的module info.java 。
  • 模塊名稱必須是唯一的。 

解釋1:模塊聲明與模塊描述符

  • moduleinfo.java 稱為“ 模塊聲明( Module Declaration )文件 ”,它編譯之后稱為“ 模塊描述符( Module Descriptor )。
  • 模塊聲明文件必須存在于模塊目錄的根目錄中。它與其他源文件一起編譯成一個(gè)名為 module info .class 的二進(jìn)制類文件 。
  • 如果使用javac 一次性編譯多模塊的 Java 模塊化項(xiàng)目 中,模塊名稱必須與包含模塊描述符的目錄名稱相匹配。否則,編譯器將拒絕編譯并報(bào)告匹配錯(cuò)誤。

解釋2:模塊化的jar包

  • 包容有模塊描述符的 JAR 包,稱為模塊化 JAR 包 。
  • 模塊描述符必須放在模塊化JAR 包的根目錄下,以方便 JPMS 識(shí)別。
  • 模塊化JAR 可以當(dāng)成普通的JAR 來使用,你只需要把它放到類路徑中去就行了。 

5、給MyLibModule模塊添加可復(fù)用的代碼

向MyLibModule 模塊中添加一個(gè)包,再添加一個(gè)類,然后里面寫了一個(gè) getInfo() 方法,返回一個(gè)“提示信息”。

模塊化的應(yīng)用中,所有的類,都應(yīng)該歸屬于一個(gè)有名字的包。

6、修改MyLibModule模塊的module info.java

在module info.java文件中,使用 exports 導(dǎo)出“ com.jinxuliang”包。

MyLibModule模塊導(dǎo)出了一個(gè)包,此包中所有的公有類(本例為 MyPublicFunc現(xiàn)在就可以被其他模塊所使用。簡(jiǎn)單地說,只要在 module info.java文件中導(dǎo)出一個(gè)包之后,包中所有聲明為public 的類,就可以被外部所訪問了。 

在模塊化的Java 應(yīng)用中,如果沒有在 module info.java 文件中導(dǎo)出包,那么,包中的類即使被聲明為 public ,外界也無法使用它。

總結(jié)一下模塊描述符的職責(zé):

所謂“模塊描述符”,其實(shí)就是放在module info.java文件中的內(nèi)容編譯之后的結(jié)果(是一個(gè) .class 文件), 它描述了模塊相關(guān)的重要信息:

  • 模塊的名字
  • 本模塊依賴于其他哪些模塊的哪些包
  • 本模塊導(dǎo)出了哪些包和服務(wù)
  • 本模塊是否允許外界使用反射,讀取特定包中的類型。

7、建立模塊化之間的依賴關(guān)系

File---->Project Structure

 點(diǎn)擊+

 選擇3 模塊依賴關(guān)系

點(diǎn)擊確定

這里所建立好的依賴關(guān)系,其實(shí)是編譯時(shí)的依賴關(guān)系,僅在編譯時(shí)起作用。 

8、修改MyJavaModuleApp模塊的module info.java

  • 使用 requires 語句導(dǎo)入本模塊所需要調(diào)用的代碼所在的模塊。
  • 如果本模塊中也有代碼需要供給外界使用,則可以用 exports 語句導(dǎo)出。 

9、編寫測(cè)試代碼測(cè)試模塊的調(diào)用

這里需要注意一個(gè)點(diǎn),編寫的測(cè)試代碼也必須包含在一個(gè)軟件包里面,否則無法運(yùn)行。因?yàn)槟K化的應(yīng)用中,所有的類,都應(yīng)該歸屬于一個(gè)有名字的包。

然后運(yùn)行即可 

由于本模塊使用requires關(guān)鍵字導(dǎo)入了 MyLibModule 模塊,所以可以使用它所導(dǎo)出的MyPublicFunc 類。

三、模塊路徑的概念

  • 當(dāng)編譯和運(yùn)行模塊時(shí),Java編譯器和運(yùn)行時(shí)使用模塊描述符來解析正確的模塊。模塊是從模塊路徑(module path)中解析出來的,而不是類路徑(class path)。類路徑用于構(gòu)建編譯項(xiàng)目所需要用到的類型清單,而模塊路徑則可以看成是一個(gè)項(xiàng)目所引用的模塊的清單。
  • java命令行有一個(gè)module-path參數(shù),用于指定模塊路徑。
  • 當(dāng)使用java命令運(yùn)行一個(gè)模塊時(shí),它到模塊路徑中去查找所有模塊,裝載其模塊描述符,通過讀取模塊描述符中給定的exports和requires等信息,就能構(gòu)建出程序中用到的所有模塊的依賴圖。

給IntelliJ模塊添加“模塊依賴”時(shí),其實(shí)是為了指定編譯信息。真正的Java模塊依賴信息,是放在module-info.java中的。

四、使用命令行運(yùn)行模塊后的Java程序

使用命令行運(yùn)行模塊實(shí)戰(zhàn)演練

操作如圖

像我的操作就是 

-m 是“ module ”的簡(jiǎn)寫。

就可以運(yùn)行成功。而要運(yùn)行的MyFirstModuleApp.class所在的文件夾是這樣的

 小結(jié)1:使用命令行運(yùn)行模塊化Java應(yīng)用

  • --module path ,簡(jiǎn)寫為-p :代表依賴的模塊保存的位置
  • --module ,簡(jiǎn)寫為 -m: 表示要啟動(dòng)的初始模塊,如果此模塊中沒有定義程序入口點(diǎn),則可以采用“模塊名 主類”的方式指定程序入口點(diǎn)。

小結(jié)2:Java模塊編寫的“基本準(zhǔn)則” 

區(qū)別兩個(gè)性 

可讀性(readability):如果A requires B,我們就說:“模塊B對(duì)于模塊A來說,是可讀的。讀取其他模塊意味著可以訪問其導(dǎo)出包中的類型。”

可訪問性:

默認(rèn)情況下,模式可讀性必須顯示聲明,不能傳遞

區(qū)分編譯時(shí)和運(yùn)行時(shí)

總結(jié) 

到此這篇關(guān)于初始JAVA模塊化開發(fā)的文章就介紹到這了,更多相關(guān)初始JAVA模塊化開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論