0
点赞
收藏
分享

微信扫一扫

Java 版本变更列表 (Java SE 8 ~ Java SE 18 )

沪钢木子 2022-04-13 阅读 51
java

java 版本变更列表

参考资料: Wiki :java 版本历史

Java SE 8

Java 8 于 2014 年 3 月 18 日发布

  • JSR 335,JEP 126 :lambda 表达式支持
  • JSR 223,JEP 174 :Nashorn项目,一个 JavaScript 运行时,它允许开发人员在应用程序中嵌入 JavaScript 代码
  • JSR 308,JEP 104 :在 Java 类型上的注解
  • JSR 337 JEP 120 :重复注解
  • JSR 310 JEP 150 :日期和时间 API,基于Joda-Time日期时间处理库的实现
  • JEP 178 :静态链接 JNI 程序库
  • JEP 153 :执行 JavaFX 应用程序(直接执行 JavaFX 的应用程序的 JAR 包)
  • JEP 122 :删除永久代
  • 无符号整数算术

Java SE 9

Java SE 9 于 2017 年 9 月 21 日发布

  • JSR 376 :在Jigsaw项目中将JDK模块化
  • JavaDB被移出JDK
  • JEP 222 :jshell:Java Shell(一个 Java 交互式顶层构件)
  • JEP 193 :变量句柄:定义一个标准方法来调用java.util.concurrent.atomic和sun.misc.Unsafe操作的等价物
  • JEP 213 :Milling Project Coin,允许在私有实例方法上使用@SafeVarargs;允许在 try-with-resources 语句中使用有效最终变量作为资源;如果推断类型的参数类型是可表示的,则允许具有匿名类的菱形;完成从 Java SE 8 开始从合法标识符名称集中删除下划线;支持接口中的私有方法
  • JEP 254 :紧凑字符串
  • JEP 268 :XML 目录
  • JEP 295 :AOT编译(通过 Graal VM 实现)
  • JEP 263 :HiDPI 图形:自动缩放和调整大小
  • JEP 266 :更多的并发更新。包含响应式流的Java实现,及其部分替代品java.util.concurrent.Flow。
  • JEP 282 :jlink:Java链接器。该工具可以为模块生成一个包含了其所有依赖项的自定义运行时映像,同时允许生成一个包括运行它的JVM的可执行文件。

Java SE 10

OpenJDK 10 于2018年3月20日发布

  • JEP 286 :局部变量类型推断
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); 
  • JEP 296 :将所有JDK分支集成到同一个版本库中
  • JEP 304 :垃圾回收器接口
  • JEP 307 :G1 的并行 Full GC
  • JEP 310 :应用程序类级别数据共享
  • JEP 312 :线程本地握手
  • JEP 313 :删除本地代码头文件生成器javah
  • JEP 314 :更多的Unicode语言标签扩展
  • JEP 316 :在可选的内存设备上申请堆内存空间
  • JEP 317:实验性的基于Java的JIT编译器。这是 Linux x64 下 Graal 动态编译器的集成
  • JEP 319 :内置根证书
  • JEP 322 :基于时间的版本命名

Java SE 11

JDK 11 于 2018 年 9 月 25 日发布,它提供 LTS 长期支持

  • JEP 181 :针对嵌套成员的访问控制
  • JEP 309 :动态类文件常量
  • JEP 315 :利用 Aarch64 的特有架构改进其上的性能
  • JEP 318 :Epsilon:无操作垃圾收集器
  • JEP 320 :移除 Java EE 和 CORBA 模块
  • JEP 321 :HTTP Client
  • JEP 323 :lambda参数的局部变量语法
  • JEP 324 :支持 Curve25519 和 Curve 448 密钥协议
  • JEP 327 :Unicode 10
  • JEP 328 :添加Java飞行记录器(JFR),其用于创建性能分析记录
  • JEP 329 :ChaCha20 和 Poly1305 加密算法
  • JEP 330 :运行单文件源码程序
  • JEP 331 :低开销堆分析
  • JEP 332 :支持 TLS 1.3
  • JEP 333 :添加ZGC(一个可扩展的低延迟垃圾收集器)
  • JEP 335 :弃用 Nashorn JavaScript 引擎
  • JEP 336 :弃用 Pack200 相关的工具及 API

Java SE 12

JDK 12 于2019年3月19日发布

  • JEP 189 :Shenandoah:一个实验性的低延迟垃圾收集器
  • JEP 230 :细粒度性能评审包
  • JEP 325 :Switch 表达式(预览阶段)
int ndays = switch(month) {
    case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31;
    case APR, JUN, SEP, NOV -> 30;
    case FEB -> {
        if (year % 400 == 0) yield 29;
        else if (year % 100 == 0) yield 28;
        else if (year % 4 == 0) yield 29;
        else yield 28; }
};
  • JEP 334 :JVM Constants API
  • JEP 340 :仅保留一个 AArch64 平台的移植
  • JEP 341 :默认类数据共享归档
  • JEP 344 :针对G1,提供可中止的混合垃圾收集
  • JEP 346 :针对G1,及时释放已申请但未使用的内存

Java SE 13

JDK 13 于2019年9月17日发布

  • JEP-350 : 动态 CDS 归档
  • JEP-351 : ZGC: 取消提交未使用存储器
  • JEP-353 : 重新实现旧版 Socket API
  • JEP-354 : Switch 表达式(预览阶段)
  • JEP-355 : 文本块(预览阶段)
String html = """
              <html lang="en">
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;

Java SE 14

JDK 14 于 2020 年 3 月 17 日发布

  • JEP-305 :使用 instanceof 的模式匹配(预览)

if (obj instanceof String) {
    String s = (String) obj;
    System.out.println( s.length() );
}

if (obj instanceof String s) {
    System.out.println( s.length() );
}

  • JEP-343 :打包工具(孵化中)
  • JEP-345 :在 G1 中,对不均匀的内存访问(NUMA)情况下的内存申请优化
  • JEP-349 :JFR Event Streaming
  • JEP-352 :使字节缓冲区能够映射到非易失性存储器上
  • JEP-358 :有帮助的 NullPointerExceptions
  • JEP-359 :记录类(预览)
record Point(int x, int y) { }
Point p = new Point(3,4);
System.out.println( p.x() );
  • JEP-361 :Switch 表达式(标准)
  • JEP-362 :弃用 Solaris 和 SPARC 平台上的移植版本
  • JEP-363 :移除 Concurrent Mark Sweep (CMS) 垃圾收集器
  • JEP-364 :适用于 macOS 的 ZGC
  • JEP-365 :适用于 Windows 的 ZGC
  • JEP-366 :弃用 ParallelScavenge + SerialOld 的垃圾收集器组合
  • JEP-367 :移除 Pack200 相关的工具及 API
  • JEP-368 :文本块(第二预览版本)
  • JEP-370 :外部内存访问 API(孵化中)

Java SE 15

JDK 15 于 2020 年 9 月 15 日发布

  • JEP 339 :爱德华兹曲线数字签名算法 (EdDSA)
  • JEP 360 :密封类(预览版)
package com.example.geometry;

public abstract sealed class Shape
    permits Circle, Rectangle, Square {...}
  • JEP 371 :隐藏类
  • JEP 372 :移除 Nashorn JavaScript 引擎
  • JEP 373 :重新实现旧的 DatagramSocket API
  • JEP 374 :禁用和弃用偏向锁
  • JEP 375 :instanceof 的模式匹配(第二次预览)
  • JEP 377 :ZGC:可扩展的低延迟垃圾收集器
  • JEP 378 :文本块
  • JEP 379 :Shenandoah:一种低暂停时间的垃圾收集器
  • JEP 381 :删除 Solaris 和 SPARC 端口
  • JEP 383 :外部内存访问 API(第二个孵化器)
  • JEP 384 :记录(第二次预览)
  • JEP 385 :弃用 RMI 激活以进行删除

Java SE 16

DK 16 于 2021 年 3 月 16 日发布

  • JEP 338 :矢量 API(孵化中)
  • JEP 347 :启用 C++14 语言功能
  • JEP 357 :从 Mercurial 迁移到 Git
  • JEP 369 :迁移到 GitHub
  • JEP 376 :ZGC:并发线程堆栈处理
  • JEP 380 :Unix 域套接字通道
  • JEP 386 :Alpine Linux 端口 (还不稳定)
  • JEP 387 :弹性元空间
  • JEP 388 :Windows/AArch64 端口
  • JEP 389 :外部链接器 API(孵化中)
  • JEP 390 :基于值的类的警告
  • JEP 392 :打包工具
  • JEP 393 :外部内存访问 API(第三个孵化器)
  • JEP 394 :instanceof 的模式匹配
  • JEP 395 :记录
  • JEP 396 :默认情况下强封装 JDK 内部
  • JEP 397 :密封类(第二次预览)

Java SE 17

DK 17 是自 2021 年 9 月以来的当前长期支持(LTS) 版本

  • JEP 306 :恢复始终严格的浮点语义
  • JEP 356 :增强的伪随机数生成器
  • JEP 382 :新的 macOS 渲染管道
  • JEP 391 :macOS/AArch64 端口
  • JEP 398 :弃用 Applet API 以进行删除
  • JEP 403 :强烈封装 JDK 内部
  • JEP 406 :开关的模式匹配(预览版)
  • JEP 407 :删除 RMI 激活
  • JEP 409 :密封类
  • JEP 410 :删除实验性 AOT 和 JIT 编译器
  • JEP 411 :弃用安全管理器以进行删除
  • JEP 412 :外部函数和内存 API(孵化中)
  • JEP 414 :Vector API(第二个孵化器)
  • JEP 415 :特定于上下文的反序列化过滤器

Java SE 18

JDK 18 于 2022 年 3 月 22 日发布。

  • JEP 400 :默认为 UTF-8
  • JEP 408 :简单的 Web 服务器
  • JEP 413 :Java API 文档中的代码片段
  • JEP 416 :使用方法句柄重新实现核心反射
  • JEP 417 :Vector API(第三个孵化器)
  • JEP 418 :互联网地址解析 SPI
  • JEP 419 :外部函数和内存 API(第二次预览版)
  • JEP 420 :开关的模式匹配(第二次预览)
  • JEP 421 :弃用 Finalization 并删除
举报

相关推荐

JAVA SE

初始Java SE

Java SE 线程

java se试题

Java SE 集合

JAVA SE 11

【Java SE】多态

Java SE --- 内部类

0 条评论