目錄
- 模組的概念
- 對模組命名
- 模組化的 "Hello,World" 程式
模組的概念
在物件導向程式設計中,基礎的構建要素就是類。類提供了封裝,私有特性只能被具有明確訪問許可權的程式碼訪問,即,只能被其所屬類中的方法訪問,這使得對訪問情況的推斷稱為可能。如果某個私有變數發生了變化,那麼我們就會發現一系列可能出錯的方法。如果需要修改私有表示,那麼就知道哪些方法會受到影響。
在java 中,包提供了更高一級的組織方式,包是類的集合。包也提供了一種封裝級別,具有包訪問許可權的所有特性(無論是共有的還是私有的)都只能被同一個包中的方法訪問。
但是在大型系統中,這種級別的訪問控制仍顯不足。所有共有特性(即在包的外部也可以訪問的特性)可以從任何地方訪問。假設我們想要修改或剔除一個很少使用的特性,如果它是共有的,那麼就沒有辦法推斷這個變化所產生的影響。
Java 平臺的設計者們在面對一個規模超大且盤根錯節的程式碼時,認為他們需要一種能夠提供更多控制能力的構建機制。他們研究了現有模組系統(OSGi),發現它們都不使用於他們的問題。於是,設計了一個新的系統,稱為Java 平臺模組系統。現在成了Java 語言和虛擬機器的一部分。這個系統已經成功地用於Java API 模組化
一個Java 平臺模組包含:
- 一個包集合
- 可選地包含資原始檔和像本地庫這樣的其他檔案
- 一個有關模組中可訪問的包的列表
- 一個有關這個模組依賴的所有其他模組的列表
對模組命名
模組化的 "Hello,World" 程式
module-info.java:
module v2ch09.hellomod{
}
HelloWorld.java:
package com.horstmann.hello;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Modular World");
}
}
//編譯
PS E:\javaProject> javac v2ch09.hellomod/module-info.java v2ch09.hellomod/com/horstmann/hello/HelloWorld.java
v2ch09.hellomod\module-info.java:1: 警告: [module] 模組名稱組成部分 v2ch09 應避免以數字結尾
module v2ch09.hellomod{
^
1 個警告
//執行
PS E:\javaProject> java --module-path v2ch09.hellomod -m v2ch09.hellomod/com.horstmann.hello.HelloWorld
Hello, Modular World
PS E:\javaProject>
https://zhuanlan.zhihu.com/p/388252107