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