JDK新特性之 JDK9

前言

经历4次跳票,java9终于在2017年9月21日发布

模块化

java9中实现了java的模块化 ,模块化不允许在src根目录下创建类单独运行,必须都在module里
java9之前java生态暴露的问题:

模块化的目的:

模块化的使用:
新建两个模块:

如果要想使用另一个模块的类,必须使用模块声明:
模块一抛出类:

模块二引入需要的模块名,没有使用的不能引入,否则报错,必须先使用再引入:

多版本兼容jar

java9的这个功能,可以使我们自己的功能升级新的jdk,而不必强迫其他引用的人进行升级,很实用
比如:我的jar有很多用户在引用,我想用jdk新特性重写一些接口,java9中即使我重写了,别人也可以继续在jdk7环境下使用我的包,只需要使用多版本jar兼容即可
使用方法:

jshell

如果你想测试一段简单的代码,在java9中,就不必再打开编译器,再写个main方法运行了,可以直接使用jshell


常用命令:

/reset : 清空所有代码
/list: 列出之前写的代码
/history: 列出历史命令
/methods: 列出已声明的方法
/edit: 打开新面板编辑代码:

/drop: 删除,可跟行数或者方法名进行删除
保存与导入:

{}升级

trycatch升级

String底层存储结构变化

冷知识:

JDK9之前String底层使用char数组存储数据private final char value[],JDK9将String底层存储数据改为byte数组存储数据private final byte[] value。
StringBuffer和StringBuilder也同样做了变更,将以往char数组改为byte数组
对于英文占用内存更小,汉字则意义不大,所以java9之后,可以使用英文日志,节省内存开销

增强StreamApi

java9中,Stream新增了四个方法:

1 takeWhile

2 dropWhile

3 ofNullable

//允许创建一个值为null的Stream
Stream.ofNullable(null);

4 iterate重载


默认垃圾收集器G1

jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
jdk1.9 默认垃圾收集器G1

posted @ 2021-08-14 18:42  侯小厨  阅读(434)  评论(0编辑  收藏  举报
Fork me on Gitee