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