写点什么

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

  • 2022-03-24
  • 本文字数:1964 字

    阅读完需:约 6 分钟

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

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



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:



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


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


原文链接:


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

2022-03-24 20:065768

评论 3 条评论

发布
用户头像
很多炒rust的
2022-03-30 22:48
回复
用户头像
微服务架构趋势下如何处理存量系统
https://xie.infoq.cn/article/3f9e2ea9e02ef60a90f7dac3d
2022-03-26 09:54
回复
用户头像
你发任你发,我用java8
2022-03-25 15:56
回复
没有更多了
发现更多内容

文心一言 VS 讯飞星火 VS chatgpt (187)-- 算法导论14.1 4题

福大大架构师每日一题

福大大架构师每日一题

语音生成、写作增强、论文辅助、英文学习,AI原生应用精彩推荐一箩筐!

飞桨PaddlePaddle

百度 开发应用 百度飞桨 文心大模型 飞桨星河社区

华秋助力戴乐体感科技:从硬创大赛优秀项目到创新企业的共荣之路

华秋电子

硬件

【豆瓣9.1】《大数据处理框架Apache Spark设计与实现(全彩)》PDF

程序员李木子

C# 面向对象编程解析:优势、类和对象、类成员详解

小万哥

C# 程序人生 编程语言 软件工程 后端开发

Atlassian 停服 Bitbucket?三步快速迁移至极狐GitLab

极狐GitLab

最强GTD时间管理工具OmniFocus Pro 3 for Mac最新激活版 附注册机 兼容M1/M2

Rose

苹果软件 OmniFocus 下载 Mac任务管理器 OmniFocus Pro 3 GTD时间管理

【豆瓣8.4】《RabbitMQ实战指南》PDF

程序员李木子

hazel mac破解版 自动化文件清理工具 含hazel激活码 兼容m1 m2

Rose

苹果软件资源 Hazel 下载 Mac自动清理工具 Hazel Mac破解版

应该如何选择轻量级低代码、重量级低代码、轻量级低代码+定制、纯定制软件开发?

天津汇柏科技有限公司

低代码开发 低代码,项目开发 定制软件开发 软件开发定制

Aiseesoft HEIC Converter mac:HEIC格式的文件转换为图片格式

Rose

Mac软件 图片格式转换 HEIC格式 HEIC Converter

视频文件损坏如何修复?QuickTime 无法打开视频文件?视频闪烁如何解决?

Rose

视频文件损坏 QuickTime 无法打开视频 视频闪烁

HDFS 小文件合并最佳实践

冰心的小屋

NameNode 海量小文件

Ableton Live如何设置中文?ableton live 11 mac中文破解版 永久可用

Rose

mac音乐制作软件 Ableton Live 11破解版 Ableton Live 11中文版

【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入Kill指令探索)

码界西柚

Linux Shell 2024年第二十二篇文章 技术指令

《数字化运维路线图》第二部分 震撼发布!

博睿数据

可观测性 运维监控

Programming Abstractions in C阅读笔记:p254-p257

codists

在线 cURL 参数对比工具,让你的开发工作更加高效

秦少卫

curl 接口工具 调试工具 请求参数对比 参数格式化

Programming Abstractions in C阅读笔记:p258-282

codists

Java 18正式发布:默认字符集UTF-8,附带简易 HTTP 服务器,弃用Finalization_语言 & 开发_Michael Redlich_InfoQ精选文章