JDK各版本的特性
JDK8新特性(2014-3长期版本)
1、Lambda表达式;
2、函数式编程;
3、接口可以添加默认方法和静态方法,也就是定义不需要实现类实现的方法;
4、方法引用;
5、重复注解;
6、引入Optional来避免空指针;
7、引入Streams相关的流式API;
8、引入新的日期与时间的相关API;
9、新增jdeps命令行,来分析类、目录、jar包的类依赖层级关系;
10、JVM使用元空间(MetaSpace)代替了永久代(PermGen Space)。
11、ConcurrentHashMap、HashMap底层结构变更
重要特性:Lambda表达式、函数式接口、方法引用、Stream流式API、采用元空间(MetaSpace)代替了方法区(PermGen Space)。
JDK9新特性(2017-9)
1、接口方法可以使用private来修饰
2、设置G1为JVM默认垃圾收集器
3、支持http2.0和websocket的API
4、优化String的存储方式,由char数组变更为byte数组。
重要特性:主要是API的优化,如支持HTTP2的Client API、JVM采用G1为默认垃圾收集器
JDK10新特性(2018-3)
1、局部变量类型推断,类似JS可以通过var来修饰局部变量,编译之后会推断出值的真实类型;
2、并行Full GC,来优化G1的延迟;
3、允许在不执行全局VM安全点的情况下执行线程回调,可以停止单个线程,而不需要停止所有线程或不停止线程。
重要特性:通过var关键字实现局部变量类型推断,使Java语言变成弱类型语言、JVM的G1垃圾回收由单线程改成多线程并行处理,降低G1的停顿时间
4、Optional类新增orElseThrow方法
5、新增几个关于集合的API,有助于创建不可变的集合
6、增强型for循环的字节码生成
JDK11新特性(2018-9长期版本)
1、ZGC,ZGC可以看做是G1之上更细粒度的内存管理策略。由于内存的不断分配回收会产生大量的内存碎片空间,因此需要整理策略防止内存空间碎片化,在整理期间需要将对于内存引用的线程逻辑暂停,这个过程被称为"Stop the world"。只有当整理完成后,线程逻辑才可以继续运行。(并行回收ÿ