JAVA - 模組

chuangzhou發表於2024-04-14

目錄
  • 模組的概念
  • 對模組命名
  • 模組化的 "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

相關文章