Java企业教程系列

Java8五个新特性

新的Java8引入了五个新特性,分别是Lambda表达式、并行操作、Javascript新引擎和新的并发累计器。

1. Lambda表达式

从开发人员的角度来看,Java的8最显着特征是Lambda表达式。这给Java带来了函数式编程,这是在过去十年中迄今为止Java语言最大的改动。建议你必须熟悉lambda语法,特别是当涉及到数组和集合操作时,其中lambda表达式已经紧密集成到核心语言库。代码案例:

Map<Person.Sex, List<Person>> byGender =
roster.stream().collect(Collectors.groupingBy(Person::getGender));

 

2.并行操作

伴随着Lambda表达式对数组的操作,引入Java另外一个关键概念是内部迭代。作为开发人员,我们已经习惯了对数组或集合Collection使用循环操作,过去这已经是最基本的编程风格之一,也就是那些if和else语句 。

Lambda表达式的推出开启了新的范式,使用lambda对集合进行迭代已经融入核心库本身。这种设计模式打开了对长数组进行操作一个令人兴奋的并行可能性,如排序,筛选和映射等并行操作。这可能会导致重大的吞吐量改进。

如下代码案例:

ConcurrentMap<Person.Sex, List<Person>> byGender =
roster.parallelStream().collect( Collectors.groupingByConcurrent(Person::getGender));

 

3.Java + JavaScript = ❤

Java的8可能范了最大的历史错误 - Java和JavaScript之间距离不断增长,Java在过去几年只有所增加。

有了这个新的发布,Java8推出了一个完全新的JVM的JavaScript引擎 - 犀牛。这台引擎使用了一些在Java 7中引入了诸如invokedynamic提供JVM级别的速度,这意味着让你的Java和JavaScript代码之间实现无缝互操作性,不必使用不同的IPC / RPC方法来弥补通讯缺口的能力。

 

4. 新的日期/时间 APIs

原来Java类库API的复杂性一直是Java开发人员多年疼痛的问题。java8从头开始重新实施自己的新的日期/时间API。不像以前Calendar.getInstance(),新的API设计简单 清晰和可读。

 

5. 并发累计器

在并发编程中最常见的情况是多个线程访问更新数字计数器。多年来已经有许多范式来做到这一点,总是从同步块(引入读写锁到AtomicInteger)开始。这种并发是依赖处理器的CAS才会有效,我们需要一种高阶实现。

Java8使用新的并发accumulator在框架级别解决了这个问题,使您能够以线程安全的方式非常有效地增加/减少一个计数器的值。

 

 

Java 8的Lambda表达式的阴暗面

Nashorn将Javascript带入企业软件

Closure Lambda和Monad

使用Java8的Lambda实现Monda

Java 8教程

函数编程