雖然Java9要等到明年才正式發布,但是現在網上已經有了各種各樣的有關Java9新特性的文章了,今天小編也將為大家分享除了通常猜測之外的一些很值得期待的5個新特性。
1.Java + REPL = jshell
之前我們猜測Kulla項目是否會在Java 9中准時發布,現在已得到官方確認,Java9中將會有稱為jshell的新命令行工具,它會添加本地支持和以Java方式對REPL(交互式解釋器)進行推廣。這就意味着,如果你想只運行幾行Java代碼,就不必把它包裝進一個單獨的工程或者方法了。
同時,你也可以忘記掉哪些分號了:
-> 2 + 2
| 表達式的值是4
| 將臨時變量$1的類型設為int
還有一些像REPL加載項一樣的替代品會增加到流行的IDE和解決方案中,就像Java REPL網頁控制台。但目前為止,還沒有官方的或者合適的方式來這么做。jshell在早期的版本中已經可以用了,等着你給它來個測試運行。
2、微基准測試要來了
由Alexey Shipilev開發的Java微基准測試套件在其進化的下一階段,將加入Java作為官方基准解決方案。從事Java開發的人,肯定都很喜歡在Takipi做基准,所以一套標准化的執行方式是很值得大家期待的。
JHM是一組用來編譯、運行和分析nano/micro/milli/macro基准的套件。當涉及到精確基准評估,對結果產生很大影響的能力將備受關注,比如預熱時間和優化。當以微秒或納秒計時的情況下尤其如此。所以,如果想要更加精確的結果來幫助跟蹤基准以做出正確的決定,JMH是最佳的選擇——並且現在它已經成為Java9的同義詞了。
3、G1會成為新的默認垃圾收集器嗎?
之前很多人對Java都存在一個誤解:Java只有一個垃圾收集器,而事實上它有4個。Java 9中,仍有一個運行提議,關於替換由Java 7引入的G1默認垃圾收集器(並行/吞吐量收集)的討論。通常來說,G1被設計來更好地支持大於4GB的堆,並且不會造成頻繁的GC暫停,但當暫停發生時,往往會處理更長時間。
4、未來是HTTP 2.0
官方的HTTP 2.0標准是幾個月之前被批准的,基於Google的SPDY算法構建。SPDY已經展示了相對HTTP 1.1巨大的速度提升,范圍在11.81%到47.7%之間,並且它已經存在於大多數現代的瀏覽器中了。Java 9將全面支持HTTP 2.0,並且為Java配備一個全新的HTTP客戶端來替代HttpURLConnection,並且同時還實現HTTP 2.0和websockets。
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("Your pid is" + Process.getCurrentPid());
這一更新將擴展Java與操作系統交互的能力:全新的直接操作PID、進程名和狀態的方法,操作JVM線程和進程等等能力。
以上就是Java9中最受期待的5個新特性,你了解么?看到這些特性是不是覺得很興奮,確實任何一款軟件新版本發布,總是會給大家帶來不一樣的體驗,你做好迎接Java9的准備了嗎?