天天看點

即将改變軟體開發的5個Java9新特性

預計釋出的java 9中,最令人興奮的特性是什麼?

有關java9的消息最近顯得有些沉寂,不要被它迷惑了。jdk開發者正在努力朝着下一個版本邁進,計劃2015年12月前完成所有功能開發。之後,它會經曆嚴格測試和bug修複以準備它的全面上市,按計劃會在2016年9月釋出。

即将改變軟體開發的5個Java9新特性

今天我們已經對java 9中所期待的特性有了一個很清晰的圖景。如果java

8可以被描述為主要是lambdas表達式、streams和api變化的話,那麼java

9就是關于jigsaw、額外的實用工具和内部的變化。在這篇文章中,收集了一些我們認為是java

9中最期待的特性——除了通常的猜測之外,jigsaw項目,承擔了打破jre并對java核心元件子產品化的使命。

1.java + repl = jshell

9中準時釋出,但現在已得到了官方确認。下一版釋出的java将會有稱為jshell的新指令行工具,它會添加本地支援和以java方式對repl(互動式解釋器)進行推廣。意思是說,如果你想隻運作幾行java代碼,你不必把它包裝進一個單獨的工程或者方法。

噢,你可以忘掉那些分号了:

-> 2 + 2

| 表達式的值是4

| 将臨時變量$1的類型設為int

2、微基準測試要來了

jhm是一組用來編譯、運作和分析nano/micro/milli/macro基準的套件。當涉及到精确基準評估,對

結果産生很大影響的能力将備受關注,比如預熱時間和優化。當你以微秒或納秒計時的情況下尤其如此。是以,如果你想要更加精确的結果來幫助跟蹤基準以做出正

确的決定,jmh是你的最佳選擇——并且現在它已經成為java 9的同義詞了。

3、g1會成為新的預設垃圾收集器嗎?

4、未來是http 2.0

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 9中見到什麼?

我們以為兩個有趣的特性會作為即将到來的java釋出版本中的一部分——但現在我們知道它們将不會出現在這次釋出的版本。

1、一個标準的輕量級json api

“這個jep對于平台來說是個有益的補充,但長遠來看,考慮到資金的因素以及oracle資助的其它特性,它并不如其它特性一樣重要。我們考慮可能在jdk 10或者之後的版本再釋出這個jep。”

2、金錢和貨币api

有一條新聞,似乎看起來金錢和貨币api也缺少oracle的支援。這是我們從anatole tresch那裡得到的答案,這個api的産品推廣師:

@tkfxin 目前不會。從oracle那裡沒得到支援。取而代之的,我們将提高java ee支援并且spring也将支援它
即将改變軟體開發的5個Java9新特性
– anatole tresch (@atsticks) 2015年6月16日

來源:51cto