jdk9是Java最新的開發(fā)運(yùn)行套件,Java 9 新的特性真正具有顛覆意義的其實就是Module System,其余很多主要是一些新的feature增加,還有一些功能的加強(qiáng)。JDK9主要是模塊化(JPMS),以及進(jìn)一步提高性能;還趁著模塊化功能新加了jimage、jlink、jaotc等新玩意兒,以及新增jshell改善易用性;
很多現(xiàn)有的Java代碼都可以在Java 9中使用,類路徑仍然存在,模塊是選擇使用。在我看來,大多數(shù)程序員都應(yīng)該完全忽視模塊系統(tǒng),直到它們的依賴關(guān)系全部或者至少部分地被模塊化。所以最大的誤解是,如果升級到Java 9,那么之前的代碼都實現(xiàn)不了了,事實上,升級到Java 9絕對不會比升級到其它Java版本更糟糕。
JDK9最大的特性,主要是為了減少內(nèi)存開銷。我認(rèn)為不是這樣,JDK9實現(xiàn)了OGSI的模塊化當(dāng)然不是為了減小內(nèi)存開銷,而是使JAVA實現(xiàn)了模塊化熱部署,當(dāng)需要更換一個模塊時,就把模塊連同類加載器一塊換掉以實現(xiàn)代碼的熱替換。
Java 平臺級模塊系統(tǒng)
Java 9 的定義功能是一套全新的模塊系統(tǒng)。當(dāng)代碼庫越來越大,創(chuàng)建復(fù)雜,盤根錯節(jié)的“意大利面條式代碼”的幾率呈指數(shù)級的增長。這時候就得面對兩個基礎(chǔ)的問題: 很難真正地對代碼進(jìn)行封裝, 而系統(tǒng)并沒有對不同部分(也就是 JAR 文件)之間的依賴關(guān)系有個明確的概念。每一個公共類都可以被類路徑之下任何其它的公共類所訪問到, 這樣就會導(dǎo)致無意中使用了并不想被公開訪問的 API。此外,類路徑本身也存在問題: 你怎么知曉所有需要的 JAR 都已經(jīng)有了, 或者是不是會有重復(fù)的項呢? 模塊系統(tǒng)把這倆個問題都給解決了。
模塊化的 JAR 文件都包含一個額外的模塊描述器。在這個模塊描述器中, 對其它模塊的依賴是通過 “requires” 來表示的。另外, “exports” 語句控制著哪些包是可以被其它模塊訪問到的。所有不被導(dǎo)出的包默認(rèn)都封裝在模塊的里面。
安裝使用:
很簡單,直接點擊安裝即可,記得勾選自定義,選擇一個合適的安裝路徑,我安裝在D:\ProgramFiles\Java\jdk-9
設(shè)置環(huán)境變量
自行參考網(wǎng)上的配置,設(shè)置JAVA_HOME、PATH、CLASSPATH什么的,如果僅僅想嘗試使用下Jshell的話,也可以不設(shè)置;
Jshell工具使用
直接在JDK安裝目錄的bin文件夾下雙擊jshell.exe即可。
創(chuàng)建一個類,調(diào)用靜態(tài)方法
注意這里,我們不需要編寫main方法就可以直接運(yùn)行。
其它使用示例
輸入/help獲取幫助
有沒發(fā)現(xiàn)跟Python解釋器極其相似, 剩下的有興趣自己探索吧。
什么是Jshell
其實就是一個命令行工具,安裝完JDK9后,可以在bin目錄下找到該工具,與Python的解釋器極其相似,用過Python解釋器的人應(yīng)該會非常熟悉。
它可以讓你體驗交互式編程,有一些比較有趣的特性:
1、語句末尾可以省略分號
2、一般情況下不需要強(qiáng)制捕獲受檢異常
3、可以直接寫表達(dá)式
4、在定義方法時可以引用其他方法或變量,且這些方法或變量可以在一段時間后被定義;