硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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:065836

评论 3 条评论

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

企业AI落地实践(三):使用 AI 网关解决 AI Agent 与 LLM 的交互挑战

阿里巴巴云原生

阿里云 云原生 LLM AI Agent

阿里云 API 网关 x OKG:游戏连接治理的「最后一公里」

阿里巴巴云原生

阿里云 云原生 API OKG

TEM on Cloud 试用指南:值得 DBA 花时间吗?

TiDB 社区干货传送门

社区活动 版本测评 安装 & 部署 TiDB第四届征文-运维开发之旅 TEM 试用

TEM试用分享-监控自建TiDB集群

TiDB 社区干货传送门

安装 & 部署 8.x 实践 TEM 试用

Mac M1 部署 TiDB

TiDB 社区干货传送门

安装 & 部署 TiDB第四届征文-运维开发之旅

医疗AI安全:基于可解释性的伪相关检测与缓解框架

qife122

人工智能 模型可解释性

TiDB 集群运维管控平台 TEM on Cloud(腾讯云)试用体验

TiDB 社区干货传送门

集群管理 版本测评 8.x 实践 TEM 试用

灵活分库分表,面试的时候这么说,加分!

王中阳Go

数据库 后端

「迁移急救包」全云平台无缝迁移云效实操手册

阿里云云效

阿里云 云原生 云效

TEM on 腾讯云试用

TiDB 社区干货传送门

TEM 试用

超强的运维管理平台,TEM on 腾讯云安装 + TiDB 集群实践

TiDB 社区干货传送门

安装 & 部署 TiDB第四届征文-运维开发之旅 TEM 试用

TEM on 腾讯云安装实践实录

TiDB 社区干货传送门

版本测评 新版本/特性发布 8.x 实践 敏捷模式 TEM 试用

中烟创新BI数据大屏赋能烟草专卖和营销,激活烟草企业数据生产力

中烟创新

TEM安装与功能测试

TiDB 社区干货传送门

安装 & 部署 性能测评 TEM 试用

TEM on 腾讯云使用体验

TiDB 社区干货传送门

集群管理 新版本/特性发布 安装 & 部署 TEM 试用

漏洞赏金猎人指南:Web应用安全测试与内网资产发现实战

qife122

渗透测试 漏洞挖掘

中烟创新灯塔大模型应用开发平台入选工信部“政务大模型应用典型案例”

中烟创新

ToDesk云电脑 vs 顺网云 vs 海马云:谁才是5090显卡云电脑的真王者?

袁袁袁袁满

「迁移急救包」全云平台无缝迁移云效实操手册

阿里巴巴云原生

阿里云 云原生 云效

2025大语言模型部署实战指南:个人笔记本到企业级服务的全栈方案

测试人

前瞻与回顾:长期个性化对话代理的反射式记忆管理技术

qife122

强化学习 对话系统

小公司管理:警惕大厂的“成功方程式”

禅道项目管理

数新智能 CTO 原攀峰:DataCyber 面向 AI 时代的多模态数据湖设计与实践

数新网络官方账号

a+b=c,处理器一步搞定,Java虚拟机为啥要四步?

poemyang

Java虚拟机

汽车抬头显示的智能化旅程

脑洞汽车

AI

四步破解日志平台数据孤岛困局,核心驱动企业高效运营

日志易

日志管理 日志易

亚马逊商品详情API开发指南

tbapi

亚马逊API 亚马逊商品详情API 亚马逊数据接口

Web3 项目外包开发成本估算方法

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

民航领域数据分类分级怎么做?|《民航领域数据分类分级要求》标准解读

原点安全

扣子可以发布到小米搞钱了!手把手教程来了丨coze开发者瓜分亿级流量池指南

阿星AI工作室

开发者 产品经理 小米 扣子

区块链U卡APP外包开发成本

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

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