初識Java 8

      此次版本升級,從根源上講,就是爲了改進Java現有的生態系統。你們都知道,java相比於.net性能差了不少,運行時間也大大超出了一些計算密集項目的預算。因此Java如今主要應用在Web上,優點比較明顯,在於他的靈活和模塊強大,學習曲線不是很陡峭。可是對於服務器衍生產品或者對於安全性很高的金融系統,java就顯得有點不夠用。java

       經過函數式編程和併發特性的引入,使得java的運行效率和安全性更高。其中要提到的就是Lambda表達式和Closure特性。express

      一般,在數學和計算機科學領域,一個Lambda表達式就是一個函數:對於部分或所有的輸入組合值,它都指定一個輸出值。而在java 8中的Lambda表達式是將函數的思想引入語言。函數能夠做爲方法的參數經過某種方式傳入參數列表中。編程

Lambda的語法通常爲:安全

    (parameters) -> expression
服務器

or多線程

    (parameters) -> { statements; }
閉包

典型的例子:併發

1. (int x, int y) -> x + y                          // 傳入兩個整數,返回他們的和
2. (x, y) -> x - y                                  // 傳入兩個整數,返回他們的差
3. () -> 42                                         // 不傳參,返回42 
4. (String s) -> System.out.println(s)              // 傳入一個字符串,在控制檯打印出他的值,方法自己無返回值 
5. x -> 2 * x                                       // 傳入一個整數,返回他的2倍數值
6. c -> { int s = c.size(); c.clear(); return s; }  // 傳入一個集合,清空他,而後返回他(清空以前)的長度


Lambda更像js中的閉包特性。使得遍歷集合時更加簡潔。
函數式編程

public void anonymousTest() {
    String isFinalVariable = "最終返回值";
    String variable = "外部變量";
    new Thread(new Runnable() {
        String variable = "多線程類成員";
        public void run() {
            String variable = "這是局部變量";
            System.out.println("->" + variable);
            System.out.println("->" + this.variable);
        }
    }).start();
}

運行結果:函數

這是局部變量
多線程類成員

      

      總的來講,新版的JDK將更多之前函數式語言才具有的特性(表明:Haskell語言)融入到java中,使得java在高數值計算密度的項目中應用的可能性大大加強。同時,對於併發編程(表明:Erlang語言)的支持也愈來愈好,在符合摩爾定律的硬件性能提高的年代,更能匹配大型企業項目的技術選型。

相關文章
相關標籤/搜索