一、语法层面新特性
1、文本块
文本块指多行的字符串,使用连续的三个双引号来包围一段带换行的文字,它避免了换行转义的需要,并支持String.format。
同时添加了两个新的转义字符:
-
: , 置于行尾,用来将两行连接为一行
-
\s: 单个空白字符
2、Switch 表达式增强
支持表达式,增加yield关键字,跳出switch并返回结果
3、instanceof的模式匹配
4、var 局部变量推导
二、模块化及类封装
1、记录类 record
特殊的class类,内部参数不可修改,只能用来描述一种简单的不可变的数据结构
可以通过读取base64字符串来反编译类,可以提高代码的安全性
3、密封类 Sealed Classes
增加关键字sealed,增加代码的安全性,允许该类可以被哪些子类继承
4、模块化 Module System
将代码模块化,很多时候jdk的很多功能我们不需要使用,就可以自定义jre包,减少内存空间的消耗。自己的代码也可以模块化,类似于微服务一样,把用到的接口暴露出去,不关心底层实现
类加载器的变更
extClassLoader变更为platformClassLoader,主要应对模块化的jar包加载