写点什么

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

评论 3 条评论

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

分布式系统硬件资源池原理和接入实践

HarmonyOS开发者

HarmonyOS

Java——编程语言中的王者

伤感汤姆布利柏

Java 后端 低代码

Amazon Code Whisperer 的正式使用,全新 AI 代码工具等你发现!(内附详细安装步骤图解)

亚马逊云科技 (Amazon Web Services)

Python 人工智能 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

虾皮关键词详情API接口在电商行业中的重要性及实时数据获取实现

Noah

制作古风纹理的滕王阁3D模型

3D建模设计

材质贴图 纹理贴图 材质纹理 GLTF材质编辑

SQL 数据库语句- 创建和管理数据库

秃头小帅oi

sql

为什么要少写代码?去掉代码的核心逻辑是什么?

代码生成器研究

鸿蒙开发丨设备内UIAbility的几种交互方式

华为云开发者联盟

鸿蒙 后端 开发 华为云 华为云开发者联盟

XSKY SDS V6.3 版本发布:持续强化非结构化存储和管理能力

XSKY星辰天合

软件定义存储

合约跟单交易所开发

区块链技术

Vue混淆与还原

Wireshark中的http协议包分析

小魏写代码

Python必备:Pandas中rolling方法指南

秃头小帅oi

前端 爬虫 pandas Python Monad rolling

小程序开发实战案例之二|如何实现小程序支付

盐焗代码虾

支付宝小程序 支付 小程序支付

虾皮商品详情接口在电商行业的重要性及实时数据获取实现

Noah

AI 与 Web3 数据行业融合的现状、竞争格局与未来机遇探析(下)

Footprint Analytics

区块链 web3 AI智能

强大的自动化清理推荐Hazel 激活最新版

胖墩儿不胖y

Mac软件 自动化清理工具 Mac软件清理软件

超越节点引擎临界:华为云NES颠覆游戏规则

云计算 华为云

喜报!博睿数据荣获“2023年度卓越数字创新企业”

博睿数据

可观测性 博睿数据

95所双一流高校参与,“搜索界奥林匹克”决出28个获奖团队

极客天地

制作木制纹理的黄鹤楼3D模型

3D建模设计

gltf/glb模型 材质贴图 纹理贴图 材质纹理 GLTF材质编辑

卫龙 x 赛博威 | 为民族品牌数字化建设添砖加瓦

赛博威科技

营销费用管理 赛博威 卫龙

大语言模型底层架构丨带你认识Transformer

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 大预言模型

《NGINX 完全指南》章节精选 | 流量管理和可编程性

NGINX开源社区

A/B 测试 流量管理 可编程性 限制速率 通用编程语言

提示词工程师:为AI当翻译

飞桨PaddlePaddle

人工智能

一体化IT运维管理系统选哪家?理由是什么?

行云管家

运维 IT运维 安全运维 一体化运维

淘宝商品详情页面数据接口(taobao.item_get)

tbapi

淘宝 淘宝API接口 淘宝商品详情接口 淘宝商品API接口 淘宝商品数据接口

岳阳楼3D模型纹理贴图

3D建模设计

材质贴图 纹理贴图 材质纹理 GLTF材质编辑

虚拟线程原理及性能分析

得物技术

jdk 性能优化

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