JDK 9:模块系统状态的重点
馬克·雷因霍爾德 ( Mark Reinhold )的“模塊系統狀態 (SOMS)”已于本月初發布,它提供了信息豐富的可讀性“對項目Jigsaw中原型的Java SE平臺進行了增強的非正式概述,并被提議作為JSR 376的起點。” 在這篇文章中,我總結并突出了一些我在閱讀文檔時發現有趣的概念和術語。
- 模塊系統狀態指出Java開發人員將定期使用文檔中討論的部分功能。 這些功能和概念是“模塊聲明,模塊化JAR文件,模塊圖,模塊路徑和未命名模塊”。
- 模塊是“一種基本的新型Java程序組件”,是“一個自命名的,自定義的代碼和數據集合”。
- “一個模塊聲明需要其他哪些模塊才能進行編譯和運行。”
- requires關鍵字似乎類似于OSGI的要求,捆綁或進口包裝
- “一個模塊聲明了......其打包出口 ”到其他模塊。
- exports關鍵字似乎類似于OSGI的Export-Package 。
- 模塊聲明是“ Java編程語言的新構造”,提供了“模塊的自我描述”。
- 慣例是將“模塊聲明的源代碼”放在“模塊源文件層次結構根目錄中名為module-info.java的文件中”。
- “模塊名稱,如程序包名稱,不得沖突。”
- “模塊的聲明不包括版本字符串,也不包含對其依賴的模塊的版本字符串的約束。”
- “ 模塊化的JAR文件在所有可能的方式上都與普通的JAR文件類似,除了它的根目錄中還包含module-info.class文件。”
- “模塊化的JAR文件允許庫的維護者發布單個工件,該工件既可以在Java 9及更高版本上作為模塊使用,又可以在所有版本中作為類路徑上的常規JAR文件使用。”
- “ 基本模塊定義并導出了平臺的所有核心軟件包”,“被命名為java.base ”,是“模塊系統唯一已知的唯一模塊”,“始終存在”,并由所有其他模塊所依賴,并且不依賴其他模塊。
- 所有“平臺模塊”均以“ java. ”開頭java. 前綴和“可能包括“用于數據庫連接的 java.sql ,用于XML處理的 java.xml和用于日志記錄的 java.logging 。”
- 前綴“ jdk. ”應用于“ Java SE 9平臺規范中未定義的模塊”,但“特定于JDK”的名稱。
- 隱含可讀性 :關鍵字public可以在之后添加requires關鍵字狀態給定的模塊的模塊讀取可以通過讀取它依賴模塊讀取。 換句話說,如果模塊B根據requires public引用了模塊C提供的包,則該包可由可以讀取模塊B的模塊A讀取。
- 通過使用關鍵字的在Java模塊系統便于“經由服務接口和服務提供商的程序組件的松耦合” provides ... with ...以指示何時一個模塊提供的服務的實現,并通過使用關鍵字uses指示模塊何時使用提供的服務。
- 因為給定的類與單個模塊關聯,所以Class::getModule()將允許訪問類的關聯模塊。
- “每個類加載器都有一個唯一的未命名模塊 ”,從中加載與模塊公開的包無關的類型。 可以使用新方法ClassLoader::getUnnamedModule檢索給定的類加載器的未命名模塊。
- 未命名的模塊可以讀取所有其他模塊,并且可以被所有其他模塊讀取。
- “ JMOD”是“新工件格式”的“臨時”名稱,“新工件格式”“超出JAR文件”,用于保存“本機代碼,配置文件和其他自然不適合…放入JAR文件中的數據”。 目前,這是JDK的一部分,有可能在以后的Java SE中進行標準化。
上面概述的項目不包括“模塊系統狀態”中涵蓋的“高級主題”,例如合格的出口,增加的可讀性和層次。 原始文檔也值得一讀,因為它具有更深入的說明,簡短的代碼清單和說明性圖形。
拼圖項目和OSGi
與OSGi一樣,Project Jigsaw旨在在基于Java的應用程序中實現更大的模塊化。 我期待看到內置的模塊化支持是否可以提供與OSGi提供的某些相同的優點,同時消除或減少與OSGi相關的一些缺點。 杰西卡·桑恩斯比(Jessica Thornsby)在Mule Drop OSGi For Beo 太復雜的文章中,總結了一些開發人員對OSGi的劣勢的看法,這些想法導致Spring和Mule等停止使用OSGi。 Thornsby的文章引用了Dmitry Sklyut , Kirk Knoerschild和Ian Skerrett的話 ,他們認為更好的工具,更好的文檔(包括社區),在會議上更好的曝光以及通過使用獲得更多的熟悉度將有助于OSGi的采用并有助于克服被認為是艱難的學習曲線和復雜性。
我很好奇,如果Java平臺內置的模塊化功能幾乎可以自動帶來OSGi倡導者認為可以提高OSGi的采用率的某些功能。 我懷疑Project Jigsaw通過內置到平臺中會獲得更好的工具支持,更好地面向一般Java開發人員,并且會在Java開發人員社區(博客,會議,書籍等)中得到更廣泛和廣泛的覆蓋。 憑借這些優勢,我還想知道Java 9和Jigsaw是否會導致OSGi的當前用戶離開OSGi,或者這些用戶是否會找到創造性的方式來將兩者一起使用或會做自己能做的事情(例如使用未命名的模塊)使用OSGi而不是拼圖。 由于OSGi可以在Java 9之前的Java版本上運行,而Jigsaw僅在Java 9和更高版本上可以運行,因此在Java 9的采用升溫之前,可能不會急于將基于OSGi的應用程序遷移到Jigsaw。 Java 9的模塊化:與Project Jigsaw,Penrose和OSGi堆疊在一起,可以對當前和即將到來的Java模塊化方法進行有趣的討論。
引用/相關資源
- 模塊系統的狀態
- 馬克·雷因霍爾德(Mark Reinhold)的“ Java 9模塊狀態”的要點 (包括視頻)
- Java模塊系統:初步了解
- 拼圖快速入門
- Java 9中的模塊化:與Jigsaw,Penrose和OSGi堆疊
翻譯自: https://www.javacodegeeks.com/2015/09/jdk-9-highlights-from-the-state-of-the-module-system.html
總結
以上是生活随笔為你收集整理的JDK 9:模块系统状态的重点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语文常识单选题
- 下一篇: java信息管理系统总结_java实现科