Java 9中的5个功能将改变您开发软件的方式(还有2个不会)
有望在Java 9中發(fā)布的最令人興奮的功能是什么?
不要對(duì)Java 9的相對(duì)沉默近來(lái)分散注意力。JDK提交者正在努力準(zhǔn)備下一個(gè)版本,該版本預(yù)計(jì)將在2015年12月完成,而功能將在幾個(gè)月后完成 。此后,它將通過(guò)嚴(yán)格的測(cè)試和錯(cuò)誤修復(fù)了將其計(jì)劃于2016年9月發(fā)布的一般可用性。
今天,我們對(duì)Java 9的功能有了一個(gè)清晰的了解。如果可以將Java 8描述為lambda,流和API更改的主要版本,那么Java 9完全是關(guān)于Jigsaw ,額外的實(shí)用程序和更改的內(nèi)容。 在這篇文章中,我們收集了一些我們認(rèn)為是針對(duì)Java 9的最令人興奮的功能–除了通常的懷疑之外,Jigsaw項(xiàng)目承擔(dān)了分解JRE并將Java核心組件引入模塊化的使命。 。
這里有一些Java 9必須絕對(duì)要了解的功能,其中一些已經(jīng)準(zhǔn)備好供您在早期發(fā)行版中使用 。
1. Java + REPL = jshell
是。 以前,我們對(duì)Kulla項(xiàng)目能否及時(shí)發(fā)布Java 9表示懷疑,但現(xiàn)在它是正式的。 Java的下一發(fā)行版將具有一個(gè)名為jshell的新命令行工具,該工具將添加本機(jī)支持并普及Java模式以實(shí)現(xiàn)REPL(Read-Eval-Print-Loop)。 舉例來(lái)說(shuō),這意味著如果您希望自己運(yùn)行幾行Java,則無(wú)需將其全部包裝在單獨(dú)的項(xiàng)目或方法中。 哦,分號(hào)–您可以忘記那些:
-> 2 + 2 | Expression value is: 4 | ? ? assigned to temporary variable $1 of type int有一些替代方法,例如流行的IDE的REPL插件和Java REPL Web控制臺(tái)之類的解決方案,但是到目前為止,還沒有任何官方正確的方法。 jshell已在早期發(fā)行版中提供,并等待您對(duì)其進(jìn)行測(cè)試。
2.微基準(zhǔn)測(cè)試即將到來(lái)
Alexey Shipilev的Java Microbenchmarking Harness( JMH )正在邁向其發(fā)展的下一步,并加入Java作為官方基準(zhǔn)測(cè)試解決方案 。 我們真的很喜歡在塔基皮(Takipi) 進(jìn)行 基準(zhǔn)測(cè)試 ,因此我們希望能有一種標(biāo)準(zhǔn)化的基準(zhǔn)測(cè)試方法。
JMH是用于構(gòu)建,運(yùn)行和分析nano / micro / milli / macro基準(zhǔn)測(cè)試的Java工具。 當(dāng)涉及到準(zhǔn)確的基準(zhǔn)測(cè)試時(shí),諸如預(yù)熱時(shí)間和優(yōu)化之類的因素可能會(huì)對(duì)結(jié)果產(chǎn)生重大影響。 尤其是當(dāng)您下降到微秒和納秒時(shí)。 因此,如果您想獲得最準(zhǔn)確的結(jié)果來(lái)幫助您按照基準(zhǔn)測(cè)試做出正確的決定,那么今天的JMH是您的最佳選擇–現(xiàn)在,它已成為Java 9的代名詞。
3. G1將成為新的默認(rèn)垃圾收集器嗎?
我們經(jīng)常聽到的一個(gè)常見誤解是Java只有一個(gè)垃圾收集器,而實(shí)際上只有4個(gè) 。 對(duì)于Java 9,有一個(gè)正在運(yùn)行的建議仍在爭(zhēng)論中,以Java 7中引入的G1替換默認(rèn)的垃圾收集器(并行/吞吐量收集器)。有關(guān)不同收集器之間差異的概述,您可以查看這個(gè)職位在這里 。
通常,G1旨在更好地支持大于4GB的堆,并且已知會(huì)導(dǎo)致較少的GC暫停,但是當(dāng)出現(xiàn)暫停時(shí),它往往會(huì)更長(zhǎng)。 最近,我們已經(jīng)與Outbrain的性能負(fù)責(zé)人Haim Yadid討論了GC的所有方面,以幫助您進(jìn)一步了解收集器之間的不同權(quán)衡 。 另外,如果您想深入了解這場(chǎng)辯論,那么hotspot-dev和jdk9-dev郵件列表是一個(gè)不錯(cuò)的起點(diǎn)。
4. HTTP 2.0是未來(lái)
官方的HTTP 2.0 RFC是在Google的SPDY算法的基礎(chǔ)上于幾個(gè)月前獲得批準(zhǔn)的。 SPDY在HTTP 1.1上已顯示出極大的速度改進(jìn),范圍在11.81%到47.7%之間,并且其實(shí)現(xiàn)已存在于大多數(shù)現(xiàn)代瀏覽器中。
Java 9將完全支持 HTTP 2.0,并具有一個(gè)新的Java HTTP客戶端,它將取代HttpURLConnection,并實(shí)現(xiàn)HTTP 2.0和websocket。
5.流程API有了巨大的提升
到目前為止,使用Java控制和管理操作系統(tǒng)進(jìn)程的能力有限。 例如,為了執(zhí)行與在Java早期版本中獲取過(guò)程PID一樣簡(jiǎn)單的操作,您將需要訪問本機(jī)代碼或使用某種神奇的解決方法。 此外,每個(gè)平臺(tái)都需要不同的實(shí)現(xiàn)方式,以確保獲得正確的結(jié)果。
在Java 9中,期望用于檢索Linux PID的代碼現(xiàn)在看起來(lái)像這樣:
public static void main(String[] args) throws Exception {Process proc = Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" });if (proc.waitFor() == 0){InputStream in = proc.getInputStream();int available = in.available();byte[] outputBytes = new byte[available];in.read(outputBytes);String pid = new String(outputBytes);System.out.println("Your pid is " + pid);} }要變成這樣(也支持所有操作系統(tǒng)):
System.out.println(“您的pid是” + Process.getCurrentPid());
該更新將擴(kuò)展Java與操作系統(tǒng)交互的能力:處理PID,進(jìn)程名稱和狀態(tài)的新直接方法,以及枚舉JVM和進(jìn)程等的能力。
您在Java 9中看不到什么?
我們假定有兩個(gè)有趣的功能將成為即將發(fā)布的Java版本的一部分-但現(xiàn)在我們知道這次將跳過(guò)這些功能。
1.標(biāo)準(zhǔn)化的輕量級(jí)JSON API
在我們與350位開發(fā)人員進(jìn)行的一項(xiàng)調(diào)查中,JSON API像Jigsaw一樣被大肆宣傳,但由于資金問題,它似乎沒有被削減。 Java平臺(tái)的首席架構(gòu)師Mark Reinhold在JDK 9郵件列表中:
“該JEP將是對(duì)該平臺(tái)的有用補(bǔ)充,但是,從總體上看,它不如Oracle為JDK 9資助或考慮為其資助的其他功能那么重要。我們可能會(huì)重新考慮針對(duì)JDK 10或JDK 9的JEP。更高版本。 ”
2.貨幣和貨幣API
在其他消息中,看起來(lái)還像預(yù)期的Money and Currency API缺乏Oracle支持。 這是我們從API規(guī)范負(fù)責(zé)人Anatole Tresch得到的答案:
@tkfxin當(dāng)前不是。 Oracle沒有這樣做。 相反,我們將改善對(duì)ee的支持,而spring也會(huì)對(duì)其提供支持:)
— Anatole Tresch(@atsticks) ,2015年6月16日
翻譯自: https://www.javacodegeeks.com/2015/06/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont.html
總結(jié)
以上是生活随笔為你收集整理的Java 9中的5个功能将改变您开发软件的方式(还有2个不会)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程咬金的老婆是谁 程咬金的老婆是裴翠云
- 下一篇: 带有Java 8,lambda表达式和M