java新特性

109 阅读3分钟

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增强
    • empty()
    • isEmpty()
  • 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
  • 结构化并发