Java8揭秘(一)综述
2014-04-21 01:25
232 查看
Java8揭秘(一)
——Lambda表达式、Default方法和批量数据操作(英文原文:Java
8 Revealed: Lambdas, Default Methods and BulkData Operations)
译者:为了更好的阅读本篇译文,先插入下面几个Java8中的新概念介绍: 函数接口(Functional Interface):只包含一个抽象方法的接口,所以也称为SAM(Single Abstract Method)类型的接口。例如我们比较熟悉的Runnable接口,只定义了唯一的一个抽象方法run(),就是函数接口。Java8中新增了许多函数接口,如果想进一步了解新增了哪些函数接口,以及为什么要新增如此众多的函数接口,可以从文章中找到答案。 Lambda表达式:实现函数接口,并返回该接口的一个匿名实现类对象的一种简明表达方式。特别强调两点: Lambda表达式返回值是一个对象(至少目前还是); 该返回对象往往是某个函数接口的匿名实现。 Lambda工程:其目标是通过增加闭包等相关特性,使JAVA更好支持多核环境下的并行编程。 方法引用(Method Reference): Lambda表达式的一种特殊形式。当一个lambda表达式body中仅仅是调用某个方法,这种情况下,使用方法引用替代lambda表达式,从形式上直接引用这个方法,这就比在lambda表达式body中引用在形式上更简洁一些。 |
前言:
关于本篇文章,我一直零零散散写了几个月,目前已经把所有内容整合到一起,形成这份文档(可以在这里下载美观的PDF版本)。在本文中,我会讲讲大家期待已久的Java 8。虽然Java8在开发过程中出现了一些进度延迟,但是很多人认为即使多等些时间也是值得的,这么说完全是冲着java8中新增的三个特性:Lambda表达式,default方法(或称之为defender方法)和批量数据操作(bulkdataoperations)。
Lambda表达式项目,或许你之前没有听说过它,它是将要发布的Java 8的“主角”,也大概是Java工程师最期待的特性。Lambda表达式是一种语言特性,无法脱离JDK独立发布:你只有升级JDK才能使用Lambda表达式编写程序。
之所以产生如Lambda表达式等等这些新特性,背后的驱动力是硬件的多核化发展趋势。在此趋势下,芯片设计者只能采用多核并行的设计思路,而软件开发者必须能够更好地利用底层硬件的并发特性。对于应用开发者-在我们的案例中就是java程序员,需要能快速上手并行类库,提高工作效率。启动这样一种技术变革的最佳切入点是集合(collection)内部操作并行化。实践表明,Lambda表达式显著地增加代了码可读性和提升了Java语言的表现力。
越来越多的语言需要支持并行语法了,新的并行语法应该简明、直观和易用。
我们现今写的代码逻辑本质是串行执行的。如下面的例子:
List persons=asList(new Person("Joe"),new Person("Jim"),new Person("John")); for(Person person: persons){ doSomething(person); } |
List persons=asList(new Person("Joe"),new Person("Jim"),new Person("John")); persons.forEach(this::doSomething); |
我们在这篇调研文章中,概述Java8中诸如Lambda表达式和default方法这样的语言新特性。因为这些新特性是来优化Java集合类库的使用,所以我们也会讲到一些集合范畴的新东西。
阅读这篇文章,你会了解到如下内容:
Java8中的Lambda表达式:包括Lambda表达式语法,SAM类型,函数接口;
Default方法:Why,What,How;
Java集合的批量数据操作:新型的数据处理方式。
尽管Java8尚未发布,但是仍然可以从http://jdk8.java.net下载各目标平台的试用版本,进行体验。(译者按:java8已经在2014年4月初发布了GA版本)
相关文章推荐
- JAVA和JVM运行原理揭秘
- JAVA和JVM运行原理揭秘
- 揭秘java对象真正占用的内存空间 - Java Objects Memory Structure
- 2004开发技术年度综述之Java世界
- Java数据类型综述
- Java 9 揭秘(18. Streams API 更新)
- 初级 Java I/O 综述(一)
- Java设计模式之综述篇
- Java文件映射[Mmap]揭秘
- Java8揭秘(二)Java 8中的 Lambda表达式
- Java内存管理(一)综述
- Java学习—泛型综述
- Java各大基本类型包装类的字面量揭秘
- Java 9 揭秘(20. JDK 9中API层次的改变)
- Java 容器综述
- 性能分析之-- JAVA Thread Dump 分析综述
- 谷歌掐架甲骨文:揭秘Java侵权案始末
- Java 线程实例讲解综述
- 一张图揭秘Java自学和培训的区别
- Java Colletion框架 - 综述