Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
85 lines (59 loc) · 4.02 KB

File metadata and controls

85 lines (59 loc) · 4.02 KB
Copy raw file
Download raw file
Outline
Edit and raw actions
title category tag
Java 19 新特性概览
Java
Java新特性

Java 18 在 2022 年 3 月 22 日正式发布,非长期支持版本。Java 18 带来了 9 个新特性:

Java 17 中包含 14 个特性,Java 16 中包含 17 个特性,Java 15 中包含 14 个特性,Java 14 中包含 16 个特性。相比于前面发布的版本来说,Java 18 的新特性少了很多。

这里只对 400、408、413、416、418 这 5 个我觉得比较重要的新特性进行详细介绍。在 Java 19 新特性概览这篇文章中,我详细介绍了 Vector(向量) API 和 Foreign Function & Memory API(外部函数和内存 API),感兴趣的可以看看,这里就不重复讲了。

相关阅读:

JEP 400:默认字符集为 UTF-8

JDK 终于将 UTF-8 设置为默认字符集。

在 Java 17 及更早版本中,默认字符集是在 Java 虚拟机运行时才确定的,取决于不同的操作系统、区域设置等因素,因此存在潜在的风险。就比如说你在 Mac 上运行正常的一段打印文字到控制台的 Java 程序到了 Windows 上就会出现乱码,如果你不手动更改字符集的话。

JEP 408:简易的 Web 服务器

Java 18 之后,你可以使用 jwebserver 命令启动一个简易的静态 Web 服务器。

$ jwebserver
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
Serving /cwd and subdirectories on 127.0.0.1 port 8000
URL: http://127.0.0.1:8000/

这个服务器不支持 CGI 和 Servlet,只限于静态文件。

JEP 413:优化 Java API 文档中的代码片段

在 Java 18 之前,如果我们想要在 Javadoc 中引入代码片段可以使用 <pre>{@code ...}</pre>

<pre>{@code
    lines of source code
}</pre>

<pre>{@code ...}</pre> 这种方式生成的效果比较一般。

在 Java 18 之后,可以通过 @snippet 标签来做这件事情。

/**
 * The following code shows how to use {@code Optional.isPresent}:
 * {@snippet :
 * if (v.isPresent()) {
 *     System.out.println("v: " + v.get());
 * }
 * }
 */

@snippet 这种方式生成的效果更好且使用起来更方便一些。

JEP 416:使用方法句柄重新实现反射核心

Java 18 改进了 java.lang.reflect.MethodConstructor 的实现逻辑,使之性能更好,速度更快。这项改动不会改动相关 API ,这意味着开发中不需要改动反射相关代码,就可以体验到性能更好反射。

OpenJDK 官方给出了新老实现的反射性能基准测试结果。

新老实现的反射性能基准测试结果

JEP 418:互联网地址解析 SPI

Java 18 定义了一个全新的 SPI(service-provider interface),用于主要名称和地址的解析,以便 java.net.InetAddress 可以使用平台之外的第三方解析器。

Morty Proxy This is a proxified and sanitized view of the page, visit original site.