初识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语言)的支持也愈来愈好,在符合摩尔定律的硬件性能提高的年代,更能匹配大型企业项目的技术选型。

相关文章
相关标签/搜索