前言
了解jdk新特性
一、jdk5.0新特性
- 泛型:允许类型或方法对各种类型的对象进行操作,同时提供编译时类型安全性。它为集合框架增加了编译时类型安全性,并消除了转换的繁琐工作
- 增强for循环:消除了迭代器和索引变量在迭代集合和数组时的繁琐和容易出错的弊端
- 自动装箱和自动拆箱:包装类包括
Integer
、Double
、Float
、Long
、Short
、Character
、Boolean
- 枚举:允许您使用任意方法和字段创建枚举类型,提供了 Typesafe 枚举模式的所有优点,而没有冗长和容易出错
- 可变长度参数
- 静态导入:
import static
- 注解:
Annotation ->@interface
- 线程并发库:
java.util.concurrent
二、jdk7新特性
- switch支持String字符串类型
- 泛型实例化类型自动推断
<>
- catch捕获多个异常类型,用 | 分隔
- JVM本身对动态语言的支持,新的
invokedynamic
字节码指令,多语言虚拟机(Multi Language Virtual Machine)原型 - 新的文件I/O程序库增加多重文件的支持、文件原始资料和符号链接,新包:
java.nio.file
、java.nio.file.attribute
、java.nio.file.spi
三、jdk8新特性
- lambda表达式:Lambda项目中提供的语言级匿名函数支持(官方称为Lambda表达式,非官方亦称为闭包)
- 重复注解:相同的注解可以再同一地方注解多次
- 接口中可以定义默认方法和类方法
- 方法引用
- 函数式接口:接口中只有一个方法
Optional
解决NullPointerException
- 1.8以后如果内部类访问变量,则默认给变量加一个
final
四、jdk11新特性
- 针对嵌套成员的访问控制
- Epsilon,无操作垃圾收集器
- 移除Java EE和CORBA模块
- Lambda参数的局部变量语法
- 增加一些字符串处理方法
- 新增Http客户端
- JDK11新增Http客户端提交post请求和异步请求
- 新增Http客户端提交http2请求
五、jdk17新特性
- 恢复始终执行严格模式的浮点定义,修复25年前英特尔的浮点指令存在的一些问
- 引入
RandomGenerator
及RandomGeneratorFactory
提供更好的随机数生成 - 对JDK内部的API进行更强的封装
- 引入switch模式匹配的preview版本,
instanceof
的模式匹配在JDK14作为preview,在JDK15作为第二轮的preview,在JDK16转正 - 移除Remote Method Invocation(RMI),它在JDK15的JEP 385被废弃
- 废弃Java1.0引入的Security Manager方便后续移除
- JDK 16引入了Vector API(Incubator)提供了
jdk.incubator.vector
来用于矢量计算,JDK17进行改进并作为第二轮incubator - 允许应用去配置指定上下文及动态选择的deserialization filters