java 14
java 14
java 14
java 14
java 8
- interface 可以用
default static 修饰,可有方法体,被default修饰可被子类继承、重写;
- 函数式接口 有且只有一个抽象方法
- Lambda表达式
(parms) -> expression / (prams) -> { statements; }
- Stream 不存储数据,可以检索和逻辑处理集合数据(筛选、排序、统计、计数)
- Optional 解决NPE问题
Optional.ofNullable(obj).map(o -> o.getXxx()).map(x -> x.getYyy()).filter(v -> v==1).orElse(3);
- Date-Time API 补充Date类 java.time.LocalDateTime LocalDate LocalTime
java 9
- JShell
- 模块化系统 JDK被重新组织为94个模块
- G1成为默认GC
- of() 方法快速创建不可变集合
List.of("Hello", "World");
Map.of("Hello", 1, "World", 2);
- String 替换为
byte[] 数组
- 接口允许使用私有方法
- try-with-resources增强
可使用 effectively-final变量(不是final 但初始化后未改变)
final Scanner in = new Scanner(new File("1.txt"));
PrintWriter writer - new PrintWriter(new File("2.txt"));
try(in;writer) {
} catch() {
}
- Stream Optional 增强
- 响应式流
java.util.concurrent.Flow
- 变量句柄
java.lang.invoke.VarHandle 替代一部分原子类和Unsafe类的操作
java 10
- 局部变量类型推断 Var
- G1 并行Full GC
- 集合增强
- Optional增强
- Graal 基于Java的JIT编译器
java 11
- HTTP Client标准化
- String增强
- isBlank()
- repeat(int i)
- lines().count()
- lines().collect(Collectors.toList())
- Optional增强
- ZGC 可伸缩低延迟GC
- Lambda 表达式中可使用 var
java 12
- String增强
- indent() 控制缩进
- transform() 转变字符串
- Files 增强 (文件比较)mismatch()
- G1 优化
- switch 增强 类似 lambda 语法, 不需要写 break
case 1 -> System.out.println("111");
- instanceof 增强 在判断的同时进行类型转换
Object obj = "hello world"
if (obj instanceof String str) {
sout(str)
}
java 13
- ZGC 增强 释放未使用的内存
- Socket API 重构
- FileSystems 类新增方法
- newFileSystem(Path)
- newFileSystem(Path, Map<String, ?>)
- newFileSystem(Path, Map<String, ?>, ClassLoader)
- 动态CDS存档 允许在Java应用程序执行结束时动态进行类归档
- 文本块 支持两个
"""符号间的任何内容都会被解释为字符串的一部分,包括换行符
String json = """ { "name":"mkyong", "age":38 } """;
- switch 语句中引入
yield 关键字用于返回一个值跳出当前switch块而不像 return 那样结束方法
java 14
- 空指针异常精准提示 -XX:+ShowCodeDetailsInExceptionMessage
- record 关键字 简化数据类代理 class 定义的类
- 移除 CMS
- 新增 jpackage 打包为 jar deb rpm msi exe
java 15
- CharSequence 接口增加默认方法
isEmpty()
- ZGC、文本块转正
- EdDSA 数字签名算法 安全性和性能更强
- 隐藏类 不能被其他类的字节码使用,只能在运行时生成类以反射的方式间接使用
- 密封类 对继承或实现他们的类进行限制,避免使用 final 修饰
sealed non-sealed final
- 禁用和废弃偏向锁 -XX:+UseBiasedLocking
java 16
- 向量 API
- 允许启用 C++ 14 语言特性
- ZGC 并发线程堆栈处理
- 弹性元空间
- 对基于值的类发出警告
- 外部内存访问 API 安全有效的访问堆外的外部内存
java 17 LTS版本
- 增强伪随机数生成器 RandomGeneratorFactory
- 弃用 Applet API
- switch 可以使用 instanceof
- 外部函数和内存 API
- 向量 API
java 18
- 默认字符集 utf-8
- 简易 web 服务器 jwebserver 命令
- 优化 Java API 文档
- 使用方法句柄重新实现放射核心
- 向量 API
- 外部函数和内存 API
- 互联网地址解析 SPI
java 19
- 外部函数和内存 API
- 虚拟线程
- 向量 API
- 结构化并发
java 20
- 作用阈值 在线程内和线程间共享不可变数据,由于线程局部变量
- 记录模式 Record
- 外部函数和内存 API
- 虚拟线程
- 向量 API
- 结构化并发