Java 9+模塊化:模塊化背後的理論和動機

Java 9+模塊化:模塊化背後的理論和動機

首先:使用Java 9+中引入的模塊化功能來編寫更簡潔,架構更好的代碼,庫和系統。

一、為什麼我們需要Java模塊系統

當前的Java系統中模塊化可以為專業程序員解決的問題是什麼?

Java SE 8和更早的系統在開發或交付基於Java的應用程序時出現以下問題:

1.具有大尺寸的大型整體源文件

JAR文件rt.jar和其他文件一樣大,以至於很難在小型設備中使用它們。

Java 9+模塊化:模塊化背後的理論和動機

2.大型JDK和冗餘工具

JDK太大,因此很難縮小到小型設備。三種緊湊配置類型已經出臺在Java SE 8來解決這個問題:compact1,compact2,和compact3。但是,它們不能解決此問題,因為它們是靜態的且不可自定義。

JDK大小的另一個缺點是應用程序和設備無法支持更好的性能。另外,最終打包的應用程序太大,無法部署在基於容器的應用程序和雲環境中。

3.缺乏強封裝

當前的Java系統中沒有真正強大的封裝,因為public訪問修飾符太開放了-每個人都可以訪問它。因為public太開放了,對訪問一些像內部關鍵的API沒有限制sun.*,*.internal.*例如,因為用戶可以訪問內部的API了。這使安全性成為一個大問題。同樣,要支持更少的組件之間的耦合也有些困難。

那麼,問題就變成了Java 9如何解決這些問題?

二、Java9模塊化是如何體現的

如下圖所示,Jdk8與Jdk9的目錄結構,您會注意到的第一件事是JDK 9中的文件夾結構有所更改。


Java 9+模塊化:模塊化背後的理論和動機

從上面兩張圖對比可以發現: JDK8: 在Jdk8中有兩個重要的jar,即rt.jar與tools.jar。

Java 9+模塊化:模塊化背後的理論和動機

Java 9+模塊化:模塊化背後的理論和動機

在Jdk8中有jre,在jre/lib目錄中有一個rt.jar(大小約64M),即rutime,提供了運行環境所用到的一些類庫;在lib目錄有一個tools.jar(大小約17M),是java中最基本的包,裡面包含了從java中最重要的lang包到各種高級功能如可視化swing的包。

JDK 9文件夾不包含JRE。在JDK 9中,JRE被放到一個單獨的分發文件夾中,該文件夾是多餘的,並且已經包含了相同的工具bin。這不必要地增加了JDK的大小。

其他文件和文件夾已被刪除並變成了模塊。JDK 9軟件包含一個名為的新文件夾jmods。該文件夾包含一組Java 9編譯模塊定義。


Java 9+模塊化:模塊化背後的理論和動機

三、總結

Java8其實是一個單體模式,一個簡單的HelloWorld,都需要100多M的JRE環境,Java9引入模塊後,模塊之間依賴關係更加清晰,只需引用需要的模塊。


分享到:


相關文章: