Java模組化 - 恆逸教育訓練中心

文章推薦指數: 80 %
投票人數:10人

Java 5新增加強型迴圈、Annotation與Generic,Java 8新增的Lambda,都讓Java程式設計語言產生很大的變化。

Java 9新增的模組化,雖然對程式設計語言本身並 ... Java技術在二十幾年來的版本,Java5、8與9的變化最大。

Java5新增加強型迴圈、Annotation與Generic,Java8新增的Lambda,都讓Java程式設計語言產生很大的變化。

Java9新增的模組化,雖然對程式設計語言本身並沒有影響,不過對JDK與應用程式的架構進行非常大的修改。

從Java7開始支援嵌入式應用程式設計,把JDK規劃為三種compactprofile,可以簡單的分為大、中、小。

大表示完整的JDK,中表示省略一些特定用途的API,小則是最精簡的JDK,只有基礎的API。

應用程式可以使用工具程式判斷適合在哪一種環境運作,對於小型應用程式來說,可以在最精簡的執行環境運作,佔用的空間與資源可以減少,效率也會比較好一些。

不同於Java7固定為三種profile的作法,Java9使用全新模組化的架構,在類別、套件之上,加入模組(Module)的架構。

JDK把原有的API分為不同的模組,每個模組包含數個套件,例如java.base模組包含java.lang、java.util等套件。

應用程式可以使用工具程式判斷需要使用的模組,再為應用程式產生專屬的執行環境,這樣可以讓執行環境更符合應用程式的需求。

Java應用程式常久以來,一直都要面對ClassPath產生的問題,錯誤的設定與設計,經常會造成很難判斷原因的錯誤。

應用程式也可以使用模組化架構,在套件之上,將應用程式規劃為不同的模組,模組與模組之間可以設定相依性與服務。

讓應用程式架構比較不容易產生相依性的問題,還有增加重複使用的特性。

每一個Java模組都有自己的定義,只有指定為公開部份,才可以讓別的模組使用。

例如兩個模組各自包含數個套件,其中modulea的x套件使用moduleb的m套件,模組必須根據相依性執行相關的設定,moduleb沒有設定的n套件,其它模組就不能使用: 為了讓應用程式架構更靈活,通常會採用介面或抽象類別減低相依性。

Java9模組加入服務的設計,讓模組與模組之間的相依性更加靈活。

例如modulea的y套件宣告一個Hellointerface,在moduleb的n套件HelloImpl實作Hellointerface,透過Java9新增的API,可以在執行時期取得實作的類別物件: 如果原有的應用程式與程式庫沒有重新定義模組,Java9也有對應的設計,讓它們成為自動模組或沒有名稱的模組,針對不同的特性升級為模組化元件,同樣可以在模組化的應用程式架構中運作。

您可在下列課程中了解更多技巧喔! 相關學習資源 SL-110-SE11JavaSE11初階程式設計 SL-275-SE11JavaSE11程式語言設計



請為這篇文章評分?