jdk8带来了哪些新特性


jdk8距离发布已经有些时间了,集团内部也在大力推广,恰值新项目也选用了jdk8做开发,查阅下资料做个小结。
较之与前几个版本,jdk8最大的改变莫过于引入了lambda表达式以及stream机制。
新特性如下:
1. 语言层面
1)lambda表达式与函数接口
lambda表达式(闭包)允许将一个函数当作方法的数据(传递函数)或者说把代码当作数据。代码更加简洁紧凑。 详细示例后文描述。
函数接口:为兼容现有功能,使其可转换为lambda表达式,提出函数接口概念。函数接口只有一个抽象方法的接口(可以有多个默认方法或者静态方法),可转换为lambda表示式。通过注解@FunctionalInterface说明。
2)方法引用
他人的示例
第一种方法引用是构造方法引用,语法是:Class::new ,对于泛型来说语法是:Class::new,请注意构造方法没有参数: 

final Car car = Car.create( Car::new );
final List< Car > cars = Arrays.asList( car );

第二种方法引用是静态方法引用,语法是:Class::static_method请注意这个静态方法只支持一个类型为Car的参数。

cars.forEach( Car::collide );

第三种方法引用是类实例的方法引用,语法是:Class::method请注意方法没有参数。

cars.forEach( Car::repair );

最后一种方法引用是引用特殊类的方法,语法是:instance::method,请注意只接受Car类型的一个参数。

final Car police = Car.create( Car::new );
cars.forEach( police::follow );

3)接口中支持默认方法与静态方法
默认方法不同于抽象方法,可保证原应用的兼用型(抽象方法必须后实现类去实现;默认方法实现类可以继承,也可以override)。关键字 default,static

public interface DefaultableFactory { 

static Defaultable create(Supplier<Defaultable> supplier) {
    return supplier.get();
}

default String defaultFunction() {
    return "it's defaultFunction";
}

void abstractFunction(); 
}

4)同一个声明处支持重复注解;注解支持类型更加广泛
5)方法参数反射
2. 集合库
1)引入stream机制以支持函数编程,允许集合对象中的大量操作,如串行或者并行的map-reduce转换 

roster
.stream()
.filter(
    p -> p.getGender() == Person.Sex.MALE
        && p.getAge() >= 18
        && p.getAge() <= 25)
.map(p -> p.getEmailAddress())
.forEach(email -> System.out.println(email));  

2)hashmap性能优化
3. 安全性
4. 工具
jdeps: 用于包或者类级别文件依赖关系分析
5. 时间与日期
新的java.time包包含了所有关于日期、时间、日期时间、时区、Instant(跟日期类似但精确到纳秒)、duration(持续时间)和时钟操作的类。
6. Nashorn Javascript 引擎
7. io,nio
8. 并发
1)java.util.concurrent.ConcurrentHashMap包使用stream机制以及lambda表达式支持聚合操作
2)新增java.util.concurrent.locks.StampedLock 做读写锁
9. hotSpot
移除永生代,使用metaspace
JVM参数 -XX:PermSize 和 –XX:MaxPermSize被XX:MetaSpaceSize 和 -XX:MaxMetaspaceSize代替 

其他特性及示例后续补上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值