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