首先:使用Java 9+中引入的模塊化功能來編寫更簡潔,架構更好的代碼,庫和系統。
一、為什麼我們需要Java模塊系統
當前的Java系統中模塊化可以為專業程序員解決的問題是什麼?
Java SE 8和更早的系統在開發或交付基於Java的應用程序時出現以下問題:
1.具有大尺寸的大型整體源文件
JAR文件rt.jar和其他文件一樣大,以至於很難在小型設備中使用它們。
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中的文件夾結構有所更改。
從上面兩張圖對比可以發現: JDK8: 在Jdk8中有兩個重要的jar,即rt.jar與tools.jar。
在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編譯模塊定義。
三、總結
Java8其實是一個單體模式,一個簡單的HelloWorld,都需要100多M的JRE環境,Java9引入模塊後,模塊之間依賴關係更加清晰,只需引用需要的模塊。