日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

期待已久的Java 9 今日发布

發(fā)布時(shí)間:2023/12/6 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 期待已久的Java 9 今日发布 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

人們期待已久的Java SE 9.0將在2017年9月21日發(fā)布,它會(huì)帶來(lái)一些重要的變化。

\\

JDK 9的核心變化就是引入了一種新的Java編程組件,也就是模塊,按照Oracle的說(shuō)法,它是一個(gè)可命名的、自描述的代碼和數(shù)據(jù)集合。模塊技術(shù)的核心目標(biāo)是減少Java應(yīng)用和Java核心運(yùn)行時(shí)環(huán)境的大小與復(fù)雜性。為此,JDK本身進(jìn)行了模塊化,Oracle希望通過(guò)這種方式提升性能、安全性和可維護(hù)性。

\\

為了支持Java 9的模塊,引入一種新的模塊化JAR文件形式,按照這種形式會(huì)在其根目錄中包含一個(gè)module-info.class文件。Oracle同時(shí)提供了工具,允許我們組合和優(yōu)化一組模塊,形成自定義的運(yùn)行時(shí)鏡像(image),這樣的鏡像不必將整個(gè)Java運(yùn)行時(shí)包含進(jìn)來(lái)。模塊化所帶來(lái)的其他變化包括從Java運(yùn)行時(shí)鏡像中移除了rt.jar和tools.jar。

\\

InfoQ與Ben Evans進(jìn)行了交流,以了解他對(duì)Java 9.0模塊系統(tǒng)的看法,他是Java社區(qū)進(jìn)程(JCP)執(zhí)行委員會(huì)的成員。

\\\

Evans:我認(rèn)為最急需重構(gòu)的應(yīng)用恰好就是最適合進(jìn)行模塊化的應(yīng)用。如果你已經(jīng)備受Lava Flow / God Class / Stovepipe System地獄的折磨,而且你的利益相關(guān)方明確知道這一點(diǎn),那么你可能更容易說(shuō)服他們進(jìn)行一次完整的底層重構(gòu),通過(guò)漸進(jìn)式的努力形成一個(gè)完成的模塊解決方案(而不是簡(jiǎn)單重構(gòu)并遷移至Java 8)是值得去做的。

\\\

Oracle宣布Java 8會(huì)是一個(gè)長(zhǎng)期支持的發(fā)布版本,會(huì)一直支持到2022年,因此Evans認(rèn)為很多的應(yīng)用將會(huì)停留在Java 8上,根本不會(huì)升級(jí)到Java 9。Evans補(bǔ)充說(shuō),有些應(yīng)用可能會(huì)讓開(kāi)發(fā)和構(gòu)建工具鏈?zhǔn)褂肑ava 8版本,而在生產(chǎn)環(huán)境使用Java 9的運(yùn)行時(shí)。

\\\

對(duì)特定類型的應(yīng)用來(lái)說(shuō),這是很有幫助的。例如,我曾經(jīng)見(jiàn)到有的電子商務(wù)網(wǎng)站具有非常大的堆空間,其中包含了大約40G的字符串?dāng)?shù)據(jù)。Java 9的ompact Strings技術(shù)能夠?qū)⑦@種類型的內(nèi)存使用減半。這反過(guò)來(lái)又會(huì)對(duì)GC的性能帶來(lái)積極的影響。對(duì)于有些應(yīng)用來(lái)說(shuō)(這可能就包括大型的Solr安裝環(huán)境及類似場(chǎng)景),單單這一項(xiàng)收益就值得將運(yùn)行時(shí)升級(jí)到Java 9。

\\\

Java 9使用G1作為默認(rèn)的垃圾收集器,替代了之前默認(rèn)使用的Parallel GC。Evans對(duì)這項(xiàng)變化的評(píng)論:

\\\

這項(xiàng)變更是很重要的,因?yàn)橄鄬?duì)于Parallel來(lái)說(shuō),G1會(huì)在應(yīng)用線程上做更多的事情,而Parallel幾乎沒(méi)有在應(yīng)用線程上做任何事情,它基本上完全依賴GC線程完成所有的內(nèi)存管理。這意味著切換到G1將會(huì)為應(yīng)用線程帶來(lái)額外的工作,從而直接影響到應(yīng)用的性能。

\\

在很多(甚至可以說(shuō)大多數(shù))場(chǎng)景中,這種額外的性能損耗都不是什么問(wèn)題。但是,在這方面,我確實(shí)也曾經(jīng)見(jiàn)過(guò)從Parallel切換到G1時(shí),有一定比例的工作負(fù)載會(huì)引起性能的下降。對(duì)于這些應(yīng)用來(lái)說(shuō),這種性能下降是無(wú)法接受的,所以他們無(wú)法切換至G1收集器。隨著G1成為默認(rèn)的收集器,這將會(huì)影響到升級(jí)至Java 9的每個(gè)應(yīng)用。

\\\

對(duì)于大型的代碼庫(kù)是否需要重構(gòu)為模塊的形式,InfoQ詢問(wèn)了Martijn Verburg的意見(jiàn),他是JClarity的CEO,也是倫敦Java用戶組(Java User Group)的聯(lián)合組織者。

\\\

Verburg:需要這樣做,另外,我還希望你要處理的大型代碼庫(kù)已經(jīng)按照一定的模塊化結(jié)構(gòu)語(yǔ)義進(jìn)行了拆分,不管你采用的是OSGi、Maven模塊、JBoss模塊,還是采用簡(jiǎn)單的內(nèi)部規(guī)則,將包和接口的結(jié)構(gòu)劃分出清晰的邊界都可以。

\\\

Verburg給出了一些通用的模塊化建議,并且指出了開(kāi)發(fā)人員在采用Java 9模塊系統(tǒng)時(shí),需要注意的一些事情:

\\
  • 閱讀Paul和Sander的圖書(shū)“Java 9 modularity”:它是本權(quán)威指南,提到了所有需要注意的地方,闡述了模塊、包以及JAR之間如何運(yùn)行的關(guān)聯(lián)關(guān)系;\\t
  • 在模塊邊界的地方,使用定義良好的接口并且針對(duì)這些接口編程;\\t
  • 不要拆分包(split package),也就是說(shuō)一個(gè)包不要分散到兩個(gè)模塊中。Adopt OpenJDK有個(gè)探測(cè)工具,我們可以用它來(lái)探測(cè)已有的代碼;\\t
  • 確保不要存在循環(huán)依賴(Jigsaw不允許這樣);\\t
  • 模塊在源碼的布局上與我們已習(xí)慣的方式有所不同,需要確保構(gòu)建工具能夠進(jìn)行對(duì)應(yīng)的處理;\\t
  • Jigsaw不支持多版本。\

按照Verburg的說(shuō)法,核心要點(diǎn)在于處理循環(huán)依賴、拆分包的問(wèn)題,并確保針對(duì)接口進(jìn)行編碼。在嘗試使用Jigsaw模塊化重構(gòu)之前,針對(duì)已有的代碼庫(kù),這些工作需要預(yù)先完成。他還澄清了一個(gè)誤解,那就是只有模塊化的應(yīng)用才能在Java 9上運(yùn)行。

\\\

由于誤解,在這方面有一種FUD(恐懼、不確定和懷疑)情緒,有人誤認(rèn)為在Java 9上運(yùn)行的必須是模塊化的應(yīng)用。事實(shí)并非如此,我們可以將已有的基于類路徑的應(yīng)用直接在Java 9上運(yùn)行。這里會(huì)有一些新的安全限制,因此我們需要設(shè)置一些特定的運(yùn)行時(shí)標(biāo)記(除非你重構(gòu)代碼,使用更安全的方式來(lái)訪問(wèn)Java的內(nèi)部資源),即便如此,默認(rèn)的行為也只是警告,而不是完全阻止我們(Java 10的限制會(huì)更嚴(yán)格)。

\\\

Verburg認(rèn)為Jigsaw會(huì)是一個(gè)基石,會(huì)讓Java的演進(jìn)更快,這要?dú)w功于Mark Reinhold、Alan Bateman、Mandy Chung以及Jigsaw團(tuán)隊(duì)的其他成員多年來(lái)不知疲倦的工作,正是他們的努力使這一切得以實(shí)現(xiàn)。

\\

Java 9還引入了jshell工具。這個(gè)命令行環(huán)境為Java平臺(tái)帶來(lái)了讀入-求值-打印-循環(huán)(Read-Eval-Print-Loop,REPL)功能。它的目的在于以即時(shí)結(jié)果和反饋的形式,簡(jiǎn)化原型的實(shí)現(xiàn)并幫助我們探索語(yǔ)言在編碼時(shí)的可選項(xiàng)。

\\

Verburg和Evans看到Java 9中包含了jShell都非常興奮,但令他們失望的是,HTTP/2只是作為Java 9的一個(gè)孵化模塊(incubator module)提供的。鑒于社區(qū)對(duì)這項(xiàng)特性的興趣和提供的幫助,Evans認(rèn)為Oracle應(yīng)該投入足夠的工程資源,將HTTP/2交付為GA版本。

\\

JDK 9完整的變更列表可以在Oracle的站點(diǎn)上查閱。Oracle宣布會(huì)按照每六個(gè)月一次的節(jié)奏進(jìn)行發(fā)布,意味著Java 9是最后一次“keystone”特性驅(qū)動(dòng)的版本發(fā)布,這反映出了Oracle目前管理Java的特點(diǎn)。Java下一階段的演化將會(huì)按照更短的發(fā)布周期并且會(huì)按照更加面向特性的方式來(lái)發(fā)布。Java是否依然能夠在服務(wù)端技術(shù)中占據(jù)領(lǐng)導(dǎo)者地位尚有待觀察。

\\

查看英文原文:Long Awaited Java 9.0 Releasing This Week

總結(jié)

以上是生活随笔為你收集整理的期待已久的Java 9 今日发布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。