Java 23 它已经正式发布了!这是非非! LTS(长期支持)版本。虽然是短版,但是 Java 23 它包含了令人兴奋的改进,错误的修复,并删除了您可能需要注意的功能和选项。
让我们深入了解新功能以及它是如何基于它的? JDK 21 和 JDK 22 等早期版本的功能构建。
范围值:基于 JDK 22 和 JDK 21 预览版构建JDK 23 最令人期待的功能之一是 功能域值(预览版)。这个功能也在 JDK 22 和 JDK 21 在预览中,它简化了在线程和子线程之间共享不可变数据的方法。在以前 Java 在版本中,处理线程本地数据可能很麻烦,需要大量内存。范围值通过提供更高效、更低成本的替代方案来改变这一点。
JDK 23 有什么区别? ScopedValue.callWhere() 该方法现在使用新的函数接口,这使得编译器更容易推断是否可能导致检查异常。这也导致了 ScopedValue.getWhere() 该方法的删除进一步简化 API。
立即学习“Java免费学习笔记(深入);
这是我们在早期版本中看到的改进的延续,很高兴看到范围值逐渐成为永久功能。
结构化并发:第三次预览Java 并发模型一直非常强大,但管理起来却非常困难。首次出现在结构化并发(预览版)中 JDK 21 中,现在已经在了 JDK 23 第三个预览版本。这里的想法是将不同线程中运行的相关任务分组到一个线程中,使并发编程更加直观。单个工作单元。这简化了错误处理,提高了取消过程的可靠性。
在 JDK 23 在中间,结构化并发仍处于预览状态,但它继续使并发代码更容易推理,不容易出错。假如你用过 JDK 21 或 JDK 22 在预览版中,您将欣赏此功能的成熟度。现在,它可以更好地处理常见的并发问题,如线程泄漏,从而更容易地编写可靠的多线程代码。
灵活的构造函数主体:自 JDK 22 以来不断发展另一种流行的补充是灵活的构造函数主体(预览)。第一次 JDK 22 中预览为“super() 此功能允许开发人员在调用超级构造函数之前编写初始化代码。这种看似小的变化可以使构造函数的逻辑更加清晰,并防止在验证或其他设置逻辑失败时创建不必要的对象。
在 JDK 22 该功能的引入是为了使开发人员更好地控制构造函数的逻辑,JDK 23 第二个预览版本继续改进该功能。在将初始逻辑转移到超级调用之前,开发人员可以避免混乱的辅助静态方法和中间结构函数。
隐式声明类:第三次很有魅力对于那些教授 Java 或者对于编写快速脚本的人来说,隐式声明的类别和实例方法 自从在 JDK 21 自引入以来,游戏规则发生了变化。这个功能允许初学者写简化 Java 程序从一开始就不需要理解复杂的语言功能。
在 JDK 23 这个功能已经得到了一些额外的升级。现在,隐式声明类可以自动导入三个简单的文本 I/O 静态方法,它们也会按需导入 java.base 所有公共顶级类别和接口的模块。这些增强功能有助于使新手的学习曲线更加光滑。
模块导入声明:新预览JDK 23 新的预览功能之一是模块导入声明。该功能允许您使用单个句子导入模块导出的所有包,以简化模块化库的重用。它对初学者特别有用,因为他们不再需要记住包在层次结构中的位置,并减少了多种按需类型导入声明造成的混乱。
虽然这是 JDK 23 一个全新的功能,但它正在使用 Java 特别是对于那些刚接触模块化编程的人来说,模块化系统更容易访问,显示出巨大的希望。
Markdown 文档评论:Javadoc 的新时代说实话,用 HTML 和 @ 标签编写 JavaDoc 可能很痛苦。在 JDK 23 中,Markdown 文档注释(预览版)功能允许开发人员使用 Markdown 编写 API 文档可以更容易地创建可读和良好格式的注释。
虽然这是 JDK 23 新功能,但应该在几年前添加。 Markdown 广泛应用于开发者社区,引入开发者社区 JavaDoc 使文档更容易编写和维护。
Z 垃圾收集器 (ZGC):默认分代模式如果您自 JDK 15 中引入 Z 垃圾收集器 (ZGC) 如果你一直在使用它,你会很高兴知道 JDK 23 中,ZGC 现在默认为 分代模式 (JEP 474)。该开关专注于频繁收集短期对象,以提高应用程序性能。虽然非分代 ZGC 这个版本已经被抛弃了,但这清楚地表明分代方法是 Java 垃圾收集的未来。
如果您在 JDK 22 或者在更早的版本中运行,然后迁移到 JDK 23 在不付出太多努力的情况下,应该会带来显著的性能改善。
Vector API:它仍在孵化,但更强大JDK 16 中引入的 Vector API 允许开发人员在运行过程中执行向量计算并编译成最佳向量指令。 API 不断发展,在 JDK 23 我们看到了第八个孵化器。这个 API 它仍在孵化,这意味着它不是最终确定的功能,但它正在逐渐接近成熟。
关键的性能应用程序,特别是那些处理大型数据集的应用程序,Vector API 它可以提供巨大的加速。如果您在以前的孵化器中使用过它(例如 JDK 22),你会发现它现在更稳定了,但它仍在等待最终部分到位(可能与 Project Valhalla 相关)。
流收集者:第二次预览JDK 22 引入了 Stream Gatherers(预览版)允许自定义中间操作添加此功能 Stream API 灵活性。在 JDK 23 第二次预览又回来了。如果您喜欢使用流量来处理数据,您将享受以前难以实现的方式转换数据管道的能力。
流收集器扩展了流的功能,使开发人员能够轻松处理更复杂的场景,特别是在使用无限流或自定义转换时。
类文件 API:第二次预览假如你正在构建操作 Java 类文件的工具,那么 JDK 23 中的 Class-File API(预览版)适合你。该 API 首次在 JDK 22 它提供了一种标准的方法来分析和生成文件,不需要使用 ASM 等待第三方库。 JDK 23 第二个预览版改进了这一点 API,使其更简洁、更容易使用。
这对工具开发者来说是一件大事。每次 JVM 当规范发生变化时,不再需要忙于更新仓库——Java 现在有了第一方解决方案。
总结:你应该升级吗?Java 23 可能不是 LTS 版本,但它包含基础 JDK 21 和 JDK 22 引入了令人兴奋的功能。这个版本促进了从作用域值和结构并发到更好的垃圾收集器以及对流和结构函数的改进 Java 开发。
以上是Java 已经到来 有哪些新功能?详情请关注图灵教育其他相关文章!