搜尋
首頁Javajava教程JPMS:Java 平台模組系統

JPMS:Java 平台模組系統

Sep 24, 2023 pm 05:05 PM

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 平台模組化系統,以了解更多關於它們的資訊。

為什麼 Java 需要模組?

重要的是要記住,JPMS 是一個 SE(標準版)功能,並且會影響 Java 的各個層級。儘管如此,該修補程式的目的是使大多數程式在從 Java 8 切換到 Java 9 時無需修改即可運行。其主要目的是收集模組可見的相關包,同時對模組的外部用戶隱藏一些組件.

JPMS 的推出有以下既定目標 -

  • 輕鬆組織大型應用程式和函式庫。

  • 提高安全性

  • #提高應用程式效能

  • #管理小型裝置的平台故障。

  • 改進結構。

類別路徑VS模組路徑

迄今為止,類別路徑一直是程式在 Java 中執行時可存取的內容的主要決定因素。儘管扮演了這個角色並且被清楚地了解,類路徑最終變成了一個大的、無差別的桶,所有依賴項都插入其中。

模組路徑在類別路徑之上新增了一個層級。它充當包的存儲空間,並選擇應用程式可以存取哪些包。

類別路徑

模組路徑

適用於所有 Java 版本

僅適用於Java 9以上版本

不需要 module-info.java

是否需要 module-info.java

只當專案沒有 module-info.java 時加入函式庫才有效

函式庫可以在沒有 module-info.java 的情況下運作

只新增非模組化函式庫

模組化和非模組化都可以加入

封裝與抽象較弱

封裝性與抽象性很強

模組化程度較弱

#模組化很強

#無法透過將庫的一部分新增至類別路徑來將其新增至專案

我們只能透過將庫的所需部分新增到模組路徑中來將其新增至專案

#

JAVA 中的模組

JDK 由模組組成。如果您在系統上使用 JDK,那麼您也擁有原始程式碼。如果您不知道這一點,請查看此內容以了解更多資訊。

JDK安裝目錄中有一個/lib目錄。在該目錄中,您將找到一個 src.zip 檔案。然後將其解壓縮到 /src 目錄中。之後查看 /src 目錄並找到 /java.base 目錄,然後您將找到 module-info.java 文件,最後打開它。

在頂部的 Javadoc 註解之後,您將找到一個名為 modulesection.base 的資料夾,後面是匯出行。格式有點深奧,所以我們不會太深入。

正如您所看到的,java.base 模組導出了幾個眾所周知的 Java 包,包括 java.io。這就是收集包的模組的工作原理。

JPMS:Java 平台模块系统

指令的要求與匯出相反。因此,所指定的模組可能需要一個模組。指定模組路徑的方式與針對模組執行 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中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器