编程导航教程

首页

Java 新特性大纲

2025-09-02 16:55
阅读 6.1k
评论
问答
笔记
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
大纲
    0

    Java 8 ~ Java 24 特性讲解视频:https://bilibili.com/video/BV1haamzUE8m Java 25 特性讲解视频:https://bilibili.com/video/BV1b5pCzGEPx

    • ⭐️:表示重点关注的版本或特性
    • 正式特性:已经稳定,可以在生产环境中使用
    • 预览特性 (Preview):基本稳定,但可能还会有小的调整,需要开启预览模式
    • 孵化器特性 (Incubator):实验性质,API 可能会有较大变化,需要特殊模块导入
    • 实验特性 (Experimental):高度实验性,主要用于测试和反馈

    ⭐️ Java 8(2014年3月 - LTS)

    正式特性

    • ⭐️ Lambda 表达式
    • ⭐️ 函数式接口
    • ⭐️ Stream API
    • ⭐️ 接口中的默认方法和静态方法
    • ⭐️ Optional 类
    • ⭐️ 新的日期时间 API
    • 方法引用
    • 重复注解
    • 类型注解

    其他特性

    • Nashorn JavaScript 引擎
    • 并行数组操作
    • Base64 编码解码支持
    • 紧凑配置文件

    Java 9(2017年9月)

    正式特性(关键特性)

    • ⭐️ JEP 261:模块系统
    • ⭐️ JEP 269:集合工厂方法
    • ⭐️ JEP 222:jshell(Java Shell)
    • JEP 224:HTML5 Javadoc
    • JEP 225:Javadoc 搜索
    • JEP 254:紧凑字符串
    • JEP 259:Stack-Walking API
    • JEP 266:更多并发更新

    Java 10(2018年3月)

    正式特性

    • ⭐️ JEP 286:局部变量类型推断(var)
    • ⭐️ JEP 310:应用程序类数据共享
    • JEP 304:垃圾收集器接口
    • JEP 307:G1 的并行完整 GC
    • JEP 312:线程局部握手
    • JEP 316:在备用内存设备上进行堆分配
    • JEP 319:根证书
    • JEP 322:基于时间的版本发布

    ⭐️ Java 11(2018年9月 - LTS)

    正式特性

    • JEP 181:基于嵌套的访问控制
    • JEP 309:动态类文件常量
    • JEP 318:Epsilon 无操作垃圾收集器
    • ⭐️ JEP 321:HTTP 客户端(标准版)
    • JEP 323:Lambda 参数的局部变量语法
    • JEP 327:Unicode 10
    • JEP 328:Flight Recorder
    • JEP 330:启动单文件源代码程序
    • JEP 331:低开销堆分析
    • JEP 332:TLS 1.3

    实验特性

    • JEP 333:ZGC 可扩展低延迟垃圾收集器(实验性)

    Java 12(2019年3月)

    正式特性

    • JEP 230:微基准测试套件
    • JEP 334:JVM 常量 API
    • JEP 340:一个 AArch64 端口,而不是两个
    • JEP 341:默认 CDS 归档
    • JEP 344:G1 的可中止混合收集
    • JEP 346:从 G1 及时返回未使用的已提交内存

    预览特性

    • JEP 325:Switch 表达式(预览)

    实验特性

    • JEP 189:Shenandoah:低暂停时间垃圾收集器(实验性)

    Java 13(2019年9月)

    正式特性

    • JEP 350:动态 CDS 归档
    • JEP 351:ZGC 取消提交未使用的内存
    • JEP 353:重新实现传统套接字 API

    预览特性

    • JEP 354:Switch 表达式(预览)
    • JEP 355:文本块(预览)

    Java 14(2020年3月)

    正式特性

    • JEP 345:G1 的 NUMA 感知内存分配
    • JEP 349:JFR 事件流
    • JEP 352:非易失性映射字节缓冲区
    • ⭐️ JEP 358:有用的 NullPointerExceptions
    • ⭐️ JEP 361:Switch 表达式
    • JEP 362:弃用 Solaris 和 SPARC 端口
    • JEP 363:删除并发标记扫描(CMS) 垃圾收集器
    • JEP 364:macOS 上的 ZGC
    • JEP 365:Windows 上的 ZGC
    • JEP 367:删除 Pack200 工具和 API

    预览特性

    • JEP 305:instanceof 的模式匹配(预览)
    • JEP 359:Records(预览)
    • JEP 368:文本块(第二次预览)

    孵化器特性

    • JEP 343:打包工具(孵化器)
    • JEP 370:外部内存访问 API(孵化器)

    Java 15(2020年9月)

    正式特性

    • JEP 339:Edwards 曲线数字签名算法(EdDSA)
    • ⭐️ JEP 371:隐藏类
    • JEP 372:删除 Nashorn JavaScript 引擎
    • JEP 373:重新实现传统 DatagramSocket API
    • JEP 374:禁用和弃用偏向锁定
    • JEP 377:ZGC 可扩展低延迟垃圾收集器
    • ⭐️ JEP 378:文本块
    • JEP 379:Shenandoah 低暂停时间垃圾收集器
    • JEP 381:删除 Solaris 和 SPARC 端口
    • JEP 385:弃用 RMI 激活以供删除

    预览特性

    • JEP 360:密封类(预览)
    • JEP 375:instanceof 的模式匹配(第二次预览)
    • JEP 384:Records(第二次预览)

    孵化器特性

    • JEP 383:外部内存访问 API(第二次孵化器)

    Java 16(2021年3月)

    正式特性

    • 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 390:基于值的类的警告
    • JEP 392:打包工具
    • ⭐️ JEP 394:instanceof 的模式匹配
    • ⭐️ JEP 395:Records
    • JEP 396:默认强封装 JDK 内部

    预览特性

    • JEP 397:密封类(第二次预览)

    孵化器特性

    • JEP 338:向量 API(孵化器)
    • JEP 389:外部链接器 API(孵化器)
    • JEP 393:外部内存访问 API(第三次孵化器)

    ⭐️ Java 17(2021年9月 - LTS)

    正式特性

    • JEP 306:恢复始终严格的浮点语义
    • ⭐️ JEP 356:增强的伪随机数生成器
    • JEP 382:新的 macOS 渲染管道
    • JEP 391:macOS/AArch64 端口
    • JEP 398:弃用 Applet API 以供删除
    • ⭐️ JEP 403:强封装 JDK 内部
    • JEP 407:删除 RMI 激活
    • ⭐️ JEP 409:Sealed 密封类
    • JEP 410:删除实验性 AOT 和 JIT 编译器
    • JEP 411:弃用安全管理器以供删除
    • JEP 415:上下文特定的反序列化过滤器

    预览特性

    • JEP 406:switch 的模式匹配(预览)

    孵化器特性

    • JEP 412:外部函数和内存 API(孵化器)
    • JEP 414:向量 API(第二次孵化器)

    Java 18(2022年3月)

    正式特性

    • ⭐️ JEP 400:字符集默认为 UTF-8
    • ⭐️ JEP 408:简单 Web 服务器
    • ⭐️ JEP 413:Java API 文档中的代码片段
    • JEP 416:使用方法句柄重新实现核心反射
    • JEP 418:互联网地址解析 SPI
    • JEP 421:弃用完成以供删除

    预览特性

    • JEP 420:switch 的模式匹配(第二次预览)

    孵化器特性

    • JEP 417:向量 API(第三次孵化器)
    • JEP 419:外部函数和内存 API(第二次孵化器)

    Java 19(2022年9月)

    正式特性

    • JEP 422:Linux/RISC-V 端口

    预览特性

    • JEP 405:Record 模式(预览)
    • JEP 424:外部函数和内存 API(预览)
    • JEP 425:虚拟线程(预览)
    • JEP 427:switch 的模式匹配(第三次预览)

    孵化器特性

    • JEP 426:向量 API(第四次孵化器)
    • JEP 428:结构化并发(孵化器)

    Java 20(2023年3月)

    预览特性

    • JEP 432:Record 模式(第二次预览)
    • JEP 433:switch 的模式匹配(第四次预览)
    • JEP 434:外部函数和内存 API(第二次预览)
    • JEP 436:虚拟线程(第二次预览)

    孵化器特性

    • JEP 429:作用域值(孵化器)
    • JEP 437:结构化并发(第二次孵化器)
    • JEP 438:向量 API(第五次孵化器)

    ⭐️ Java 21(2023年9月 - LTS)

    正式特性

    • ⭐️ JEP 431:有序集合
    • ⭐️ JEP 439:分代 ZGC
    • ⭐️ JEP 440:Record 模式
    • ⭐️ JEP 441:switch 的模式匹配
    • ⭐️ JEP 444:虚拟线程
    • JEP 449:弃用 Windows 32 位 x86 端口以供删除
    • JEP 451:准备禁止代理的动态加载
    • JEP 452:密钥封装机制 API

    预览特性

    • JEP 430:字符串模板(预览)
    • JEP 442:外部函数和内存 API(第三次预览)
    • JEP 443:未命名模式和变量(预览)
    • JEP 445:未命名类和实例主方法(预览)
    • JEP 446:作用域值(预览)
    • JEP 453:结构化并发(预览)

    孵化器特性

    • JEP 448:向量 API(第六次孵化器)

    Java 22(2024年3月)

    正式特性

    • JEP 423:G1 的区域固定
    • ⭐️ JEP 454:外部函数和内存 API
    • ⭐️ JEP 456:未命名变量和模式
    • JEP 458:启动多文件源代码程序

    预览特性

    • JEP 447:super(...) 之前的语句(预览)
    • JEP 457:类文件 API(预览)
    • JEP 459:字符串模板(第二次预览)
    • JEP 461:Stream Gatherers(预览)
    • JEP 462:结构化并发(第二次预览)
    • JEP 463:隐式声明类和实例主方法(第二次预览)
    • JEP 464:作用域值(第二次预览)

    孵化器特性

    • JEP 460:向量 API(第七次孵化器)

    Java 23(2024年9月)

    正式特性

    • JEP 467:Markdown 文档注释
    • JEP 471:弃用 sun.misc.Unsafe 中的内存访问方法以供删除
    • ⭐️ JEP 474:ZGC 默认分代模式

    预览特性

    • JEP 455:模式、instanceof 和 switch 中的原始类型(预览)
    • JEP 466:类文件 API(第二次预览)
    • JEP 473:Stream Gatherers(第二次预览)
    • JEP 476:模块导入声明(预览)
    • JEP 477:隐式声明类和实例主方法(第三次预览)
    • JEP 480:结构化并发(第三次预览)
    • JEP 481:作用域值(第三次预览)
    • JEP 482:灵活的构造函数体(第二次预览)

    孵化器特性

    • JEP 469:向量 API(第八次孵化器)

    Java 24(2025年3月)

    正式特性

    • JEP 479:删除 Windows 32 位 x86 端口
    • JEP 483:提前类加载和链接
    • ⭐️ JEP 484:类文件 API
    • ⭐️ JEP 485:Stream Gatherers 流收集器
    • JEP 486:永久禁用安全管理器
    • JEP 490:ZGC 删除非分代模式
    • JEP 491:同步虚拟线程而不固定
    • JEP 493:链接运行时镜像而不使用 JMODs
    • JEP 496:量子抗性模块格基密钥封装机制
    • JEP 497:量子抗性模块格基数字签名算法
    • JEP 498:警告使用 sun.misc.Unsafe 中的内存访问方法
    • JEP 501:弃用 32 位 x86 端口以供删除

    预览特性

    • JEP 478:密钥派生函数 API(预览)
    • JEP 487:作用域值(第四次预览)
    • JEP 488:模式、instanceof 和 switch 中的原始类型(第二次预览)
    • JEP 492:灵活的构造函数体(第三次预览)
    • JEP 494:模块导入声明(第二次预览)
    • JEP 495:简单源文件和实例主方法(第四次预览)
    • JEP 499:结构化并发(第四次预览)

    实验特性

    • JEP 404:分代 Shenandoah(实验性)
    • JEP 450:紧凑对象头(实验性)

    孵化器特性

    • JEP 489:向量 API(第九次孵化器)

    其他特性

    • JEP 472:准备限制 JNI 的使用
    • JEP 475:G1 的延迟屏障扩展

    ⭐️ Java 25(2025年9月 - LTS)

    正式特性

    • JEP 503:移除 32 位 x86 支持 正式停止对 32 位 x86 架构的支持,简化 JVM 维护并专注于现代 64 位平台。
    • ⭐️ JEP 506:作用域值 提供比 ThreadLocal 更安全、更高效的线程本地变量替代方案,特别适合虚拟线程环境。
    • JEP 510:密钥派生函数 API 引入标准的密钥派生函数 API,支持 HKDF 等现代加密算法,为后量子密码学做准备。
    • JEP 511:模块导入声明 允许一次性导入整个模块的所有包,简化 import 语句的编写。
    • ⭐️ JEP 512:紧凑源文件和实例主方法 简化小程序的编写,支持不需要 public static 的 main 方法和紧凑的源文件格式。
    • JEP 513:灵活的构造函数体 允许在构造函数调用(super/this)之前执行语句,提供更灵活的初始化控制。
    • JEP 519:紧凑对象头 将对象头从 16 字节减少到 8 字节,显著降低内存使用并提升性能。
    • JEP 521:分代 Shenandoah Shenandoah 垃圾收集器的分代模式正式可用,提供更好的性能和更低的延迟。

    预览特性

    • JEP 470:加密对象的 PEM 编码(预览) 支持以 PEM 格式编码和解码加密对象,简化证书和密钥的处理。
    • JEP 502:稳定值(预览) 提供延迟不可变性,结合了 final 字段的性能优势和灵活的初始化时机。
    • JEP 505:结构化并发(第五次预览) 将相关的并发任务作为单一工作单元管理,简化错误处理和取消操作。
    • JEP 507:模式匹配中的基本类型(第三次预览) 扩展模式匹配以支持基本类型,提供安全的类型转换检查。

    孵化特性

    • JEP 508:向量 API(第十次孵化) 提供向量计算 API,利用现代 CPU 的 SIMD 指令提升数值计算性能。

    实验性特性

    • JEP 509:JFR CPU 时间分析(实验性) Java Flight Recorder 新增 CPU 时间分析功能,提供更精确的性能分析。
    • JEP 514:提前编译命令行人体工学 改进 AOT 编译的命令行接口,使其更易于使用。
    • JEP 515:提前编译方法分析 增强 AOT 编译的方法分析能力,提升应用启动性能。

    JFR 增强特性

    • JEP 518:JFR 协作式采样 改进 Java Flight Recorder 的采样机制,减少对应用性能的影响。
    • JEP 520:JFR 方法时间和追踪 为 JFR 添加详细的方法级时间测量和追踪功能。