写点什么

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

评论 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 SDK,《NBA巅峰对决》实现“分钟级启动”到“秒级进场”

HarmonyOS SDK

HarmonyOS HarmonyOS NEXT HarmonyOS SDK应用服务

4S店看过来:斯科提出基于RFID技术的维修工器具智能化管理解决方案

斯科信息

RFID解决方案 RFID工具库房

懒懒笔记 | 课代表带你梳理【RAG课程 19:基于知识图谱的RAG】

商汤万象开发者

AI agent LLM rag

智源研究院26届“智星”科技人才计划正式启动

智源研究院

低代码这么火,为什么搞砸的这么多?

秃头小帅oi

商品中心—库存分桶高并发的优化文档

量贩潮汐·WholesaleTide

Java JavaScript 前端

嘉为蓝鲸亮相GOPS全球运维大会·2025北京站,彰显研运领域硬核能力!

嘉为蓝鲸

智能运维 GOPS全球运维大会 研运一体化

医用布草管理RFID解决方案

斯科信息

RFID解决方案 医院布草管理 斯科信息

MySQL 多版本并发控制

不在线第一只蜗牛

MySQL

Disk Graph|扇形图+矩形图双模式,清理磁盘空间超直观

柠檬与橘子

CAD图纸定位双神器:测坐标防偏移,测立面拒返工!

在路上

cad

Pickle 开源 AI 桌面助手 Glass:捕捉屏幕生成结构化信息;邱锡鹏团队开源对话语音模型 MOSS-TTSD丨日报

RTE开发者社区

Iridient Developer for mac RAW 图像处理与转换软件

Geek贝

Mac 软件

破局研运数据孤岛:嘉为蓝鲸CFlow实现全链路精准跟踪

嘉为蓝鲸

DevOps 智能运维 价值流管理 CFlow

TypeScript结构化类型初探

电子尖叫食人鱼

typescript

电脑卡顿反应慢的原因及解决方法

阿拉灯神丁

电脑选购 CleanMyMac 电脑运行缓慢 Mac电脑使用教程 mac电脑维护工具

1688图片搜索API,根据图片搜索相似商品

tbapi

1688API 1688图片搜索接口 1688拍立淘接口

Archicad 28 for Mac(3D建筑建模工具)

Geek贝

MySQL查询执行顺序:一张图看懂SQL是如何工作的

不在线第一只蜗牛

MySQL sql

商品中心—库存分桶高并发的优化文档(二)

量贩潮汐·WholesaleTide

Java JavaScript 前端

引迈信息6周年:数智领航,共赴新程

引迈信息

MacX Video Converter Pro视频处理软件

Geek贝

动态风险控制:嘉为蓝鲸CPack黑白名单保障制品全周期安全

嘉为蓝鲸

DevOps 智能运维 CPack 黑白名单

CAD编号如何自动递增?两种神技,效率拉满!

在路上

cad cad看图 CAD看图王

赋能AI金融:低代码平台的工程实践与未来展望

电子尖叫食人鱼

AI 低代码 金融

小程序热更新:驱动App无感迭代的“空中引擎”技术范式

xuyinyin

AI 英语口语 App 的核心功能

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

软件外包公司 AI英语学习 AI英语口语

实例解析:粮油食品仓储RFID高效管理方案

斯科信息

仓储RFID解决方案

从被动救火到主动预测!碧桂园服务以图谱技术重塑IT运维底座

智在碧得

PDF Protector for Mac(PDF加密与解密工具)

Geek贝

数据驱动决策:WeOps如何提升大型K8s集群排障效率

嘉为蓝鲸

监控 智能运维 k8s集群 #WeOps

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