java逆天的十大新特性

按照 Java 1995 年正式誕生起到現(xiàn)在秉沼,已經(jīng)快 23 年了桶雀。

現(xiàn)在好多人還在用 Java SE 6,還有一部分人 Java SE 8 還沒玩明白呢唬复,Java SE 9 已經(jīng)粉末登場了矗积。在 Open JDK 的官網(wǎng)上看到了 Java 10 的標準也在制定當中,Java 的發(fā)展真的越來越快了敞咧。


modularity System 模塊系統(tǒng)

Java 9 中主要的變化是已經(jīng)實現(xiàn)的模塊化系統(tǒng)棘捣。

Modularity 提供了類似于 OSGI 框架的功能,模塊之間存在相互的依賴關(guān)系休建,可以導出一個公共的 API乍恐,并且隱藏實現(xiàn)的細節(jié)评疗,Java 提供該功能的主要的動機在于,減少內(nèi)存的開銷茵烈,在 JVM 啟動的時候百匆,至少會有 30~60MB 的內(nèi)存加載,主要原因是 JVM 需要加載 rt.jar呜投,不管其中的類是否被 classloader 加載加匈,第一步整個 jar 都會被 JVM 加載到內(nèi)存當中去,模塊化可以根據(jù)模塊的需要加載程序運行需要的 class宙彪。

在引入了模塊系統(tǒng)之后矩动,JDK 被重新組織成 94 個模塊。Java 應(yīng)用可以通過新增的 jlink 工具释漆,創(chuàng)建出只包含所依賴的 JDK 模塊的自定義運行時鏡像悲没。這樣可以極大的減少 Java 運行時環(huán)境的大小。使得 JDK 可以在更小的設(shè)備中使用男图。采用模塊化系統(tǒng)的應(yīng)用程序只需要這些應(yīng)用程序所需的那部分 JDK 模塊示姿,而非是整個 JDK 框架了。


HTTP/2

JDK9 之前提供 HttpURLConnection API 來實現(xiàn) HTTP 訪問功能逊笆,但是這個類基本很少使用栈戳,一般都會選擇 Apache 的 HttpClient,此次在 Java 9 的版本中引入了一個新的 package:java.net.http难裆,里面提供了對 HTTP 訪問很好的支持子檀,不僅支持 HTTP 1.1 而且還支持 HTTP 2(什么是 HTTP2?請參見?HTTP2 的時代來了...)乃戈,以及 WebSocket褂痰,據(jù)說性能特別好。

注意:新的 HttpClient API 在 Java 9 中以所謂的孵化器模塊交付症虑。也就是說缩歪,這套 API 不能保證 100% 完成。


JShell

用過 Python 的童鞋都知道谍憔,Python 中的讀取-求值-打印循環(huán)( Read-Evaluation-Print Loop )很方便匪蝙。它的目的在于以即時結(jié)果和反饋的形式。

Java9 引入了 JShell 這個交互性工具习贫,讓 Java 也可以像腳本語言一樣來運行逛球,可以從控制臺啟動 JShell ,在 JShell 中直接輸入表達式并查看其執(zhí)行結(jié)果沈条。當需要測試一個方法的運行效果需忿,或是快速的對表達式進行求值時,JShell 都非常實用。

除了表達式之外屋厘,還可以創(chuàng)建 Java 類和方法涕烧。jshell 也有基本的代碼完成功能。我們在教人們?nèi)绾尉帉?Java 的過程中汗洒,不再需要解釋 “public static void main(String [] args)” 這句廢話议纯。


不可變集合工廠方法

Java 9 增加了 List.of()、Set.of()溢谤、Map.of()和 Map.ofEntries()等工廠方法來創(chuàng)建不可變集合瞻凤。

除了更短和更好閱讀之外,這些方法也可以避免您選擇特定的集合實現(xiàn)世杀。在創(chuàng)建后阀参,繼續(xù)添加元素到這些集合會導致 “UnsupportedOperationException”。


私有接口方法

Java 8 為我們提供了接口的默認方法和靜態(tài)方法瞻坝,接口也可以包含行為蛛壳,而不僅僅是方法定義。

默認方法和靜態(tài)方法可以共享接口中的私有方法所刀,因此避免了代碼冗余衙荐,這也使代碼更加清晰。如果私有方法是靜態(tài)的浮创,那這個方法就屬于這個接口的忧吟。并且沒有靜態(tài)的私有方法只能被在接口中的實例調(diào)用。



HTML5 風格的 Java 幫助文檔

Java 8 之前的版本生成的 Java 幫助文檔是在 HTML 4 中斩披。在 Java 9 中溜族,Javadoc 的輸出現(xiàn)在符合兼容 HTML5 標準。現(xiàn)在 HTML 4 是默認的輸出標記語言垦沉,但是在之后發(fā)布的 JDK 中斩祭,HTML 5 將會是默認的輸出標記語言。

Java 幫助文檔還是由三個框架組成的結(jié)構(gòu)構(gòu)成乡话,這是不會變的,并且以 HTML 5 輸出的 Java 幫助文檔也保持相同的結(jié)構(gòu)耳奕。每個 Javadoc 頁面都包含有關(guān) JDK 模塊類或接口來源的信息绑青。

多版本兼容 JAR

當一個新版本的 Java 出現(xiàn)的時候,你的庫用戶要花費很長時間才會切換到這個新的版本屋群。這就意味著庫要去向后兼容你想要支持的最老的 Java 版本 (許多情況下就是 Java 6 或者 7)闸婴。這實際上意味著未來的很長一段時間,你都不能在庫中運用 Java 9 所提供的新特性芍躏。




在上述場景中邪乍,multirelease.jar 可以在 Java 9 中使用, 不過 Helper 這個類使用的不是頂層的 multirelease.Helper 這個 class, 而是處在“META-INF/versions/9”下面的這個。這是特別為 Java 9 準備的 class 版本,可以運用 Java 9 所提供的特性和庫庇楞。同時榜配,在早期的 Java 諸版本中使用這個 JAR 也是能運行的,因為較老版本的 Java 只會看到頂層的這個 Helper 類吕晌。


統(tǒng)一 JVM 日志

Java 9 中 蛋褥,JVM 有了統(tǒng)一的日志記錄系統(tǒng),可以使用新的命令行選項-Xlog 來控制 JVM 上 所有組件的日志記錄睛驳。該日志記錄系統(tǒng)可以設(shè)置輸出的日志消息的標簽烙心、級別、修飾符和輸出目標等乏沸。


Java 9 的垃圾收集機制

Java 9 移除了在 Java 8 中 被廢棄的垃圾回收器配置組合淫茵,同時把 G1 設(shè)為默認的垃圾回收器實現(xiàn)。替代了之前默認使用的 Parallel GC蹬跃,對于這個改變匙瘪,evens 的評論是醬紫的:這項變更是很重要的,因為相對于 Parallel 來說炬转,G1 會在應(yīng)用線程上做更多的事情辆苔,而 Parallel 幾乎沒有在應(yīng)用線程上做任何事情,它基本上完全依賴 GC 線程完成所有的內(nèi)存管理扼劈。這意味著切換到 G1 將會為應(yīng)用線程帶來額外的工作驻啤,從而直接影響到應(yīng)用的性能。


I/O 流新特性

java.io.InputStream 中增加了新的方法來讀取和復制 InputStream 中包含的數(shù)據(jù)荐吵。

readAllBytes:讀取 InputStream 中的所有剩余字節(jié)骑冗;

readNBytes: 從 InputStream 中讀取指定數(shù)量的字節(jié)到數(shù)組中;

transferTo:讀取 InputStream 中的全部字節(jié)并寫入到指定的 OutputStream 中先煎。

更多java小知識可詢462403503或點擊下方藍色字體了解

藍色字體

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贼涩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子薯蝎,更是在濱河造成了極大的恐慌本冲,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轿曙,死亡現(xiàn)場離奇詭異挺身,居然都是意外死亡,警方通過查閱死者的電腦和手機消略,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門堡称,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艺演,你說我怎么就攤上這事却紧⊥╇” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵晓殊,是天一觀的道長断凶。 經(jīng)常有香客問我,道長挺物,這世上最難降的妖魔是什么懒浮? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮识藤,結(jié)果婚禮上砚著,老公的妹妹穿的比我還像新娘。我一直安慰自己痴昧,他們只是感情好稽穆,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赶撰,像睡著了一般舌镶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪娜,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天餐胀,我揣著相機與錄音,去河邊找鬼瘤载。 笑死否灾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鸣奔。 我是一名探鬼主播墨技,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挎狸!你這毒婦竟也來了扣汪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤锨匆,失蹤者是張志新(化名)和其女友劉穎崭别,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恐锣,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡紊遵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侥蒙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡匀奏,死狀恐怖鞭衩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤论衍,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布瑞佩,位于F島的核電站,受9級特大地震影響坯台,放射性物質(zhì)發(fā)生泄漏炬丸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一蜒蕾、第九天 我趴在偏房一處隱蔽的房頂上張望稠炬。 院中可真熱鬧,春花似錦咪啡、人聲如沸首启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毅桃。三九已至,卻和暖如春准夷,著一層夾襖步出監(jiān)牢的瞬間钥飞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工衫嵌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留读宙,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓渐扮,卻偏偏與公主長得像论悴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子墓律,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理膀估,服務(wù)發(fā)現(xiàn),斷路器耻讽,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 親愛的老爸: 你好嗎察纯?過得咋樣? 那什么针肥,你的小姑娘饼记,變成大姑娘了。 你知道慰枕,我是個自律的好同志具则,不會亂來,一直以...
    老爸我很想你閱讀 166評論 0 1
  • ?最近楊冪和趙又廷演的三生三世十里桃花特別火具帮,里面有一段戲是女主失去記憶在凡間遇到下凡除妖的天庭太子夜華博肋,女主遇到...
    一木芳華烈焰成池閱讀 233評論 3 2
  • 暖心熱飲快手版?第七篇 蜂蜜柚子茶 工具:奶鍋 配方:柚子一個 冰糖適量 蜂蜜適量 鹽一大勺 清水適量 步驟1:將...
    Sophia_293d閱讀 362評論 0 2
  • 回了趟老家低斋,感覺人釋然很多,本來想回原單位匪凡,現(xiàn)在想想其實多接觸外面的風景挺好的膊畴,人生走一步是一步,開心健康才好病游,從...
    其其菱菱閱讀 112評論 0 0