主要内容
Java 8是Java自Java 5之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。
外面已经有很多资料, 我在这里仅仅做概要记录,提醒自己多使用新特性, 提高效率和性能, 详细内容参考附录。
语言的新特性
接口的默认方法和静态方法
java 8 的 接口, 不再是 老程序员 脑海中的接口了, java 8 允许在接口中有具体的实现: 默认方法
和静态方法
- 默认方法
使用关键字default
定义, 已经是具体的实现, 不需要实现类去现象, 可以被继承或者覆写
Lambda表达式和函数式接口
java 的 Lambda 表达式借助函数接口
实现,可以替换以前的匿名内部类。
函数接口
@FunctionalInterface
注解函数接口
, 函数接口指的是只有一个函数的接口,这样的接口可以隐式转换为Lambda表达式。
默认方法和静态方法不会破坏函数式接口的定义。Lambda
有了 Lambda, 你就可以把一段代码(函数) 当做参数 传给 另一个函数。
可以去掉以前大量的匿名内部类。
重复注解
同一个地方多次使用同一个注解。
注解几乎可以使用在任何元素上:局部变量、接口类型、超类和接口实现类,甚至可以用在函数的异常定义上。
编译器
参数名称
默认关闭, 需要带 -parameters
参数编译
Maven 的使用
1 | <plugin> |
官方库
Optional
Optional是一个容器:存放T类型的值或者null。它提供了一些有用的接口来避免显式的null检查
Streams
Stream API(java.util.stream)将函数式编程引入了Java库中。
这是目前为止最大的一次对Java库的完善!!!!
极大得简化了集合操作
简要API
java.util.stream
使用Stream API处理集合
Date/Time API(JSR 310)
新的时间和日期管理API
java.time
Nashorn JavaScript引擎
Base64
java.util.Base64
1 | Base64.getEncoder().encodeXxxxx() |
并行数组
parallelSort()
parallexXxx系列的方法
新的Java工具
Nashorn引擎:jjs
jjs是一个基于标准Nashorn引擎的命令行工具,可以接受js源码并执行。
类依赖分析器:jdeps
1 | jdeps org.springframework.core-3.0.5.RELEASE.jar |
JVM的新特性
使用Metaspace(JEP 122)代替持久代(PermGen space)。
在JVM参数方面,使用 -XX:MetaSpaceSize和-XX:MaxMetaspaceSize代替原来的-XX:PermSize和-XX:MaxPermSize