JPMS 代表 Java 平台模組系統。這是Java 9中的新功能。我們的java應用程式和Java包可以藉助Java模組系統打包成Java模組。 Java 模組允許我們指定模組的哪些套件和其他 Java 模組應該能夠看到。 Java 模組也列出了它運作所需的 Java 模組。
Java 平台系統也稱為 Java Jigsaw 或 Project Jigsaw。 Jigsaw 的名字是在其開發時使用的。開發這個的主要目的是讓JRE更模組化。 JPMS 解決了幾個主要問題,分別是 Classpath/JAR Hell、大規模單體 JDK、版本衝突、安全問題。
現在,讓我們更深入地研究 Java 平台模組化系統,以了解更多關於它們的資訊。
重要的是要記住,JPMS 是一個 SE(標準版)功能,並且會影響 Java 的各個層級。儘管如此,該修補程式的目的是使大多數程式在從 Java 8 切換到 Java 9 時無需修改即可運行。其主要目的是收集模組可見的相關包,同時對模組的外部用戶隱藏一些組件.
JPMS 的推出有以下既定目標 -
輕鬆組織大型應用程式和函式庫。
提高安全性
#提高應用程式效能
#管理小型裝置的平台故障。
改進結構。
迄今為止,類別路徑一直是程式在 Java 中執行時可存取的內容的主要決定因素。儘管扮演了這個角色並且被清楚地了解,類路徑最終變成了一個大的、無差別的桶,所有依賴項都插入其中。
模組路徑在類別路徑之上新增了一個層級。它充當包的存儲空間,並選擇應用程式可以存取哪些包。
類別路徑 |
模組路徑 |
---|---|
適用於所有 Java 版本 |
僅適用於Java 9以上版本 |
不需要 module-info.java |
是否需要 module-info.java |
只當專案沒有 module-info.java 時加入函式庫才有效 |
函式庫可以在沒有 module-info.java 的情況下運作 |
只新增非模組化函式庫 |
模組化和非模組化都可以加入 |
封裝與抽象較弱 |
封裝性與抽象性很強 |
模組化程度較弱 |
#模組化很強 |
#無法透過將庫的一部分新增至類別路徑來將其新增至專案 |
我們只能透過將庫的所需部分新增到模組路徑中來將其新增至專案 |
JDK 由模組組成。如果您在系統上使用 JDK,那麼您也擁有原始程式碼。如果您不知道這一點,請查看此內容以了解更多資訊。
JDK安裝目錄中有一個/lib目錄。在該目錄中,您將找到一個 src.zip 檔案。然後將其解壓縮到 /src 目錄中。之後查看 /src 目錄並找到 /java.base 目錄,然後您將找到 module-info.java 文件,最後打開它。
在頂部的 Javadoc 註解之後,您將找到一個名為 modulesection.base 的資料夾,後面是匯出行。格式有點深奧,所以我們不會太深入。
正如您所看到的,java.base 模組導出了幾個眾所周知的 Java 包,包括 java.io。這就是收集包的模組的工作原理。
指令的要求與匯出相反。因此,所指定的模組可能需要一個模組。指定模組路徑的方式與針對模組執行 Java 編譯器時提供類別路徑的方式相同。這使得解決依賴關係成為可能。
Java 9 在創建時就考慮到了向後相容性。不過,新的模組結構是一個重大轉變,您可能會遇到問題,特別是在大型程式碼庫中。
以下命令可能對解決源自程式碼庫的問題有用 - 當命令 jdeps 指向一個類別時,它將尋找任何依賴項以及需要依賴項的模組。
如果您的依賴項導致問題,您可以希望您所依賴的套件具有相容 Java 9 的更新版本來建置。如果沒有,您可能需要尋找選項。
如何解決java.lang.NoClassDefFoundError -
Javax/xml/bind/JAXBException
這是抱怨找不到分配的類別的程式碼,因為它已遷移到模組而對使用程式碼不可見。有幾種解決方案。
JPMS 是一個相當重大的轉變,因此採用需要一些時間。幸運的是,由於 Java 8 是長期支援版本,因此沒有迫切需要。
然而,從長遠來看,舊專案有必要遷移,而新專案必須明智地使用模組,以便也許獲得一些已經給予的好處。
JPMS代表Java Platform Module System,在開發初期也稱為project jigsaw。它使開發人員可以更輕鬆地組織大型應用程式和程式庫。它改進了結構並提高了平台的安全等級。它還用於提高應用程式效能,並且對於較小設備的平台分解很有用。這背後的主要想法是啟用模組可見的相關套件的集合,同時對模組上的外部用戶隱藏元素。
以上是JPMS:Java 平台模組系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!