Java历史版本新特性(JDK5~JDK13)
嗯,啊,额,只要是收集整理资源,当然很多不了解的东西和功能,我是很自然的就忽略掉了。改进毕竟很多,我只是列出了相对比较直观的改进
版本演进
Java 5
- 引入
泛型
功能(伪泛型) - 增强循环,可以使用
迭代循环
,Iterator - 支持
自动装箱
和自动拆箱
- 支持类型安全的
枚举
- 支持
可变参数
- 支持
静态引入
- 支持元数据(
注解
)功能 - 引入Java Instrumentation
Java 6
- 支持脚本语言
- 引入JDBC 4.0 API
- 引入Java Compiler API
- 支持可插拔注解
Java 7
- 支持了
switch语句
以String作为条件,至此已支持4中基本类型(byte, char , short ,int
),2种对象类型(枚举,String
) - 优化增强了泛型对象
类型推断
- 支持了在一个语句块中捕获多种异常,既一个catch,可以
|
多个异常 - 支持
try-with-resources
语法,自动为资源类进行关闭,而无需finally进行 - 引入Java NIO2开发包,支持了
AIO
- 支持了数值的二进制表示方式,比如
0b1010000
, 以前只能8,10,16进制的表示 钻石型语法
,省略类型参数的声明- 支持了
动态语言
Java 8
- 支持
lambda
表达式 - 支持集合的
Stream流
处理 - 支持
Functional
函数式接口 - 对各个类支持了很多对应的lambda增强方法
- 增强接口,支持了接口的默认和静态的
具体方法
- 支持
LocalDate
等时间包,以改进原有Date - 支持
Optional
来改进Null值的处理 - 优化了
HashMap
和ConcurrentHashMap
Java 9
- 支持Java平台级模块系统,既
模块化
- 支持了
JShell
,既类似node.js, python一样的命令行工具,对待简单的东西,可以直接命令测试 - 改进
Javadoc
, 使得Javadoc可以搜索 - 支持了
List.of()
,Set.of()
,Map.of()
的方式初始化不可变集合
,省略了大量代码,语法糖 - 改进的Stream API,比如ofNullable(),dropWhile(),takeWhile()等
- 增强接口,支持了
私有接口具体方法
,补充了Java8默认和静态方法的支持 - 把
G1垃圾收集器
作为默认的垃圾收集器,并标注CMS为过时收集器 - 引入了响应式流Reactive Streams API, 支持了
响应式编程
- 支持了
HTTP/2
客户端
Java 10
- 支持了局部变量的类型推导,支持了局部变量的
var
声明 - 优化改进了G1垃圾回收器,采用并行化mark-sweep-compact算法
Java 11
- 简化了启动单个源代码文件的方法,使得小白命令式编译运行Java文件变成更加简单,
java Helloworld.java
即可 - 增加支持了一个叫
Epsilon
的低开销垃圾收集器 - 增加支持了一个叫ZGC(
Z Garbage Collector
)的可伸缩低延迟垃圾收集器, 相比G1,停顿时间有了很大的改进,稳定在10ms以下 - 重写了HttpClient,提供了新的标准化
HttpClient API
, 以后不再需要引入apache包的HttpClient或是okhttp就能支持高性能的网络编程 - 增加了对
TLS 1.3
的支持 - 允许了
飞行记录器
进行商用下的使用 - 更好的支持了动态语言,在JVM层面增加了
invokedynamic
指令 - 支持了在
lambda
内部使用var
声明局部变量
Java 12
- 引入了一个叫
Shenandoah
低停顿的实验性垃圾收集器 - 改进了
G1
垃圾收集器 - 引入了实验性的预览版
Switch
语句优化,可以省略break语句,合并多个case - 引入了
JVM的常量API
, 有助于一些分析的实现
Java 13
- 增强优化了
ZGC
垃圾收集器, 归还未使用的堆内存给操作系统 - 将Java12引入的预览版
Switch语法
提为正式版,使得Switch的使用更加的顺滑和流畅 - 支持了
"""
字符串块功能