java9的子產品化類似于nodejs,如果大家學過,可能更好了解子產品化的概念。Oracle為什麼要給java加入子產品化,主要有以下幾個問題:
- 整個jre環境太大了,運作一個hello world也需要整個幾百兆的jre環境
- public是對任何東西都開放的,也可以通路内部的api,并且可以通過反射擷取任何資訊
- 可以細粒度的控制依賴關系,比jar更好的依賴管理
jdk的目錄也變了,現在是這樣的
子產品可以了解為是代碼和資料的封裝體,有一個配置的檔案
module-info.java
,在裡面聲明需要引入哪些子產品,此子產品需要對外提供什麼。我們看一下java.compiler的module-info