鍍金池/ 教程/ Java/ Java9模塊系統(tǒng)
Java9多版本Jar( Multirelease JAR)
Java9 JavaDocs
Java9 @Deprecated注解
Java9 CompletableFuture API
Java9多分辨率圖像API
Java9教程
Java9 Repl(JShell)
Java9私有接口方法
Java9模塊系統(tǒng)
Java9簡(jiǎn)介
Java9內(nèi)部類鉆石操作符
Java9開發(fā)環(huán)境安裝
Java9集合工廠方法
Java9特性及示例
Java9 Optional類
Java9 Process API
Java9 Stream API
Java9 Try-With-Resources

Java9模塊系統(tǒng)

Java 9是一種稱為模塊的新型編程組件。模塊是一個(gè)自我描述的代碼和數(shù)據(jù)集合,并有一個(gè)名稱來(lái)標(biāo)識(shí)它。

模塊系統(tǒng)特征

使用模塊組件,Java 9中增加了以下增強(qiáng)功能 -

  • 引入了一個(gè)新的可選階段,即鏈接時(shí)間。這個(gè)階段介于編譯時(shí)間和運(yùn)行時(shí)間之間。 在此階段,可以組合和優(yōu)化一組模塊,使用jlink工具制作自定義運(yùn)行時(shí)映像。
  • javac,jlink和java有額外的選項(xiàng)來(lái)指定模塊路徑,它們進(jìn)一步定位模塊的定義。
  • JAR格式更新為模塊化JAR,其中包含根目錄中的module-info.class文件。
  • 引入了JMOD格式,這是一種打包格式(類似于JAR),可以包含本機(jī)代碼和配置文件。

創(chuàng)建模塊

按照下面步驟來(lái)創(chuàng)建一個(gè)模塊:com.yiibai.greetings

第1步
創(chuàng)建一個(gè)文件夾F:\worksp\java9\src。 在這個(gè)目錄下,創(chuàng)建一個(gè)與創(chuàng)建的模塊名稱相同的文件夾com.yiibai.greetings

第2步
使用以下代碼在F:\worksp\java9\src\com.yiibai.greetings文件夾中創(chuàng)建一個(gè)文件:module-info.java,添加以下內(nèi)容 -

module com.yiibai.greetings { }

module-info.java是用來(lái)創(chuàng)建模塊的文件。 在這一步中,我們創(chuàng)建了一個(gè)名為com.yiibai.greetings的模塊。 按照慣例,這個(gè)文件應(yīng)該存儲(chǔ)在名稱與模塊名稱相同的文件夾中。

第3步

在模塊中添加源代碼。在F:\worksp\java9\src\com.yiibai.greetings\com\yiibai\greetings文件夾中創(chuàng)建一個(gè)Java文件:Java9Tester.java,其代碼如下 -

package com.yiibai.greetings;

public class Java9Tester {
   public static void main(String[] args) {
      System.out.println("Hello World!");
   }
}

按照慣例,模塊的源代碼位于與模塊名稱相同的目錄中。

第4步
創(chuàng)建一個(gè)文件夾F:\worksp\java9\mods。 現(xiàn)在創(chuàng)建一個(gè)與創(chuàng)建的模塊名稱相同的文件夾F:\worksp\java9\mods\com.yiibai.greetings。 現(xiàn)在編譯模塊到mods目錄。如下所示 -

F:\worksp\java9> javac -d mods/com.yiibai.greetings src/com.yiibai.greetings/module-info.java src/com.yiibai.greetings/com/yiibai/greetings/JavaTester.java

第5步
運(yùn)行模塊來(lái)查看結(jié)果,執(zhí)行以下命令。

F:\worksp\java9>java --module-path mods -m com.yiibai.greetings/com.yiibai.greetings.JavaTester
Hello World!

這里module-pathmods作為模塊位置提供,而-m則表示主模塊。

完整的過程如下圖所示 -