Java 18 正式发布:默认字符集 UTF-8,附带简易 HTTP 服务器,弃用 Finalization

2022 年 3 月 28 日 InfoQ

作者 | Michael Redlich
译者 | 刘雅梦
策划 | 丁晓昀

甲骨文(Oracle)发布了 Java 编程语言和虚拟机的第 18 版。该版本的最终特性主要集中在以下 9 个 JEP 上:

  • 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:Switch 的模式匹配(第二版预览)

  • JEP 421:弃用 Finalization 以备后继删除

Java 18 的特性节奏略低于之前的版本:Java17 中包含 14 个特性;Java 16 中包含 17 个特性;Java 15 中包含 14 个特性;Java 14 中包含 16 个特性。

这个版本的 JEP 特性为 Amber 项目、Loom 项目和 Panama 项目提供了持续的贡献,并提供了一些有用的新工具。本文介绍其中的一些新特性。

Panama 项目

JEP 417 和 JEP 419 由 Panama 项目赞助,该项目旨在改进和丰富 JVM 与定义良好的“外部”(即非 Java)API 之间的互操作性,这些 API 很可能会包括 C 语言库中常用的接口。

除了性能的改进之外,JEP 417,Vector API(第三个孵化阶段)还针对前两个孵化阶段的反馈进行了增强:JEP 414,Vector API(第二个孵化阶段)和 JEP 338,Vector API(孵化阶段)。JEP 338 作为孵化阶段模块集成在 JDK 16 中,JEP 414 被定义为 JDK 17 的最终 JEP 之一。

JEP 419,外部函数和内存 API(第二个孵化阶段)根据 Java 社区的反馈(JEP 412,外部函数和内存 API(孵化阶段),该 JEP 在 JDK 17 中交付)进行了改进。第二个孵化阶段的变化包括:在内存访问 var 句柄中支持更多载体,如booleanMemoryAddress接口;用于MemoryAddressMemorySegment接口的更通用的解引用(dereference)API;更方便获取下行调用(downcall)方法句柄的 API,这样就不再需要传递MemoryType枚举了;以及新的用于内存段之间复制 Java 数组的 API。

Loom 项目

JEP 418 由 Loom 项目赞助,该项目旨在探索、孵化并交付 Java 虚拟机(JVM)特性和 API,以支持易于使用、高吞吐量的新型轻量级并发编程模型。这将通过虚拟线程、定界延续(delimited continuations)和尾调用来实现。

JEP 418,网络地址解析 SPI,为主机名和地址解析定义了一个服务提供者接口,以便java.net.InetAddress可以利用默认的内置 OpenJDK 解析器以外的解析器。

Amber 项目

JEP 420 由 Amber 项目赞助,该项目旨在探索和孵化更小的 Java 语言特性,以提高生产率。

JEP 420,Switch 的模式匹配(第二版预览),允许针对多个模式测试目标switch表达式,每个模式都有一个特定的操作,从而可以简洁而安全地表达复杂的面向数据的查询。这是继在 JDK 17 中交付的 JEP 406,Switch 的模式匹配(预览版)之后的第二个预览版本。增强功能包括:对支配性检查(dominance checking)的改进,强制在同一类型的受保护模式之前出现一个常量的case标签;与密封的层次结构相比,现在对switch块的检查更加精确了。

Java 工具

JEP 413,支持在 Java API 文档中加入代码片段,为 Oracle 的标准 Doclet 引入了 @snippet 标记,这是一个众所周知的 Java API 文档实用程序,可生成默认的 HTML 格式的输出。其目的是简化 API 文档中包含的示例源代码。代码片段可以是内联的,也可以是外部的,下面的这两个示例将会说明这一点:

在如下内联的示例中,源代码被添加到@snippet标记前面的注释中,并用大括号括起来了:

/** * 下面的代码展示了如何使用 {@code Optional.isPresent}: * {@snippet : * if (v.isPresent()) { *     System.out.println("v: " + v.get()); *     } * } */

在如下外部的示例中,现有的源文件ShowOptional.java包含了@start @end标记。已定义的区域,即region="example",在注释和源文件中被引用:

/** * 下面的代码展示了如何使用 {@code Optional.isPresent}: * {@snippet file="ShowOptional.java" region="example"} */public class ShowOptional {    void show(Optional<String> v) {        // @start region="example"        if (v.isPresent()) {            System.out.println("v: " + v.get());            }        // @end        }    }

JEP 408,简单 Web 服务器,提供了一个简易的 HTTP 命令行 Web 服务器,它只提供静态文件。该实用程序旨在用于原型设计、临时编码和测试,特别是在教育场景中。服务器启动方式如下:

java -m jdk.httpserver [-b bind address] [-p port] [-d directory] [-h to show help message] [-o none|default|verbose]
Java 19

目前,Java 19 中只有一个 Targeted 或 Integrated 状态的 JEP:

  • JEP 422:Linux/RISC-V 移植

Java 19 的正式发布日期尚未公布,但按照 6 个月的发布周期推算,预计将于 2022 年 9 月中旬发布。开发人员预计会在 2022 年 6 月中旬进行特性冻结。

Java 18 现在可以从 Oracle 下载了,其他供应商的二进制文件预计在几天后提供。

原文链接:

https://www.infoq.com/news/2022/03/java18-released/

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

不用任何框架开发 Web 应用程序,可能吗?

腾讯回应裁员;小米辞退绩效考核分数低员工终审败诉;GitHub 频繁宕机原因:MySQL 负载过重 | Q资讯

微软、英伟达等多家企业源代码被偷,“带头大哥”居然是未成年人?

开源还有真假?Neo4j 起诉3家公司虚假宣传开源胜诉             


 活动推荐

长期征集|寻找中国卓越技术团队

优秀的产品背后,必定有优秀的团队做支撑。《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品。现在将长期开放报名通道,如果你希望 InfoQ 关注并采访你所在的技术团队,就请抓住机会吧!

点个在看少个 bug 👇

登录查看更多
0

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
专知会员服务
49+阅读 · 2021年5月24日
【干货书】Python参考手册,210页pdf
专知会员服务
63+阅读 · 2021年4月30日
【经典书】Linux UNIX系统编程手册,1554页pdf
专知会员服务
45+阅读 · 2021年2月20日
专知会员服务
81+阅读 · 2020年9月28日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
JDK 18 最新动态和 JDK 19 新特性预测
InfoQ
0+阅读 · 2022年3月24日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2022年4月20日
Building Odia Shallow Parser
Arxiv
0+阅读 · 2022年4月19日
Arxiv
0+阅读 · 2022年4月15日
Adaptive Synthetic Characters for Military Training
Arxiv
46+阅读 · 2021年1月6日
VIP会员
相关VIP内容
专知会员服务
49+阅读 · 2021年5月24日
【干货书】Python参考手册,210页pdf
专知会员服务
63+阅读 · 2021年4月30日
【经典书】Linux UNIX系统编程手册,1554页pdf
专知会员服务
45+阅读 · 2021年2月20日
专知会员服务
81+阅读 · 2020年9月28日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员