JDK8以后3个LTS 版本的新特性的变化

Java 8 是一个里程碑式的版本,但在此之后,Java 改变了发布节奏,每六个月发布一个版本,这使得新特性来得更快、更密集。 每三年会指定一个版本为长期支持版,企业级应用通常选择 LTS 版本。JDK 8, 111721 是主要的 LTS 版本。

一、JDK11 

  1. HTTP Client (标准)

    • 在 JDK 9 中引入的孵化器模块,现在正式成为标准 API (java.net.http)。

    • 支持 HTTP/2 和 WebSocket,性能更好,替代古老的 HttpURLConnection

  2. 用于 Lambda 参数的局部变量语法

    • 允许在 Lambda 表达式中使用 var

    • (var x, var y) -> x.process(y)

  3. 直接运行单个 Java 文件

    • 无需先编译 .java 文件,可以直接使用 java HelloWorld.java 来运行,简化了脚本和小程序的学习与测试。

  4. String API 增强

    • 新增了一系列非常实用的方法,如:

      • isBlank(): 判断字符串是否为空白(空格、制表符等)。

      • lines(): 将字符串按行分割成流。

      • repeat(int count): 重复字符串。

      • strip(): 去除首尾空白(比 trim() 更智能,能识别 Unicode 空白字符)。

  5. Epsilon: 低开销垃圾收集器

    • 一个无操作的 GC,用于性能测试、内存压力测试等不需要垃圾回收的场景。

  6. ZGC (实验性)

    • 一个可扩展的低延迟垃圾收集器,目标是将停顿时间控制在 10ms 以下,即使处理 TB 级堆内存。

  7. 移除模块

    • 移除了 Java EE 和 CORBA 模块,如 javax.xml.ws 等。

二、JDK17

  1. 密封类 (Sealed Classes) (标准): 从预览版转正。

  2. 移除实验性 AOT 和 JIT 编译器: 移除了不成熟的 GraalVM 相关功能。

  3. 恢复始终严格浮点语义: 使浮点运算始终保持一致。

  4. 新的 macOS 渲染管道增强的伪随机数生成器等。

三、JDK21

  1. 虚拟线程 (标准): 正式引入虚拟线程,用于大规模并发应用。

  2. Record Patterns (标准): 模式匹配功能进一步增强。

  3. Switch 模式匹配 (标准): 模式匹配在 switch 中正式可用。

  4. 序列化集合: 为集合创建不可变的序列化视图。

  5. 分代 ZGC: 通过分代管理,提高了 ZGC 的吞吐量。

版本类型关键特性
JDK 8LTSLambda表达式,Stream API,新的日期时间API,Optional
JDK 9非LTS模块化(JPMS),集合工厂方法,JShell
JDK 11LTSHTTP Client API, var in Lambda, 直接运行.java, String API增强
JDK 17LTS密封类,文本块,Records,模式匹配instanceof
JDK 21LTS虚拟线程,Record Patterns,Switch模式匹配
  • 新项目: 强烈推荐直接从 JDK 17 或 JDK 21 开始。JDK 21 的虚拟线程等特性代表了未来的方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值