同步操作将从 SnailClimb/JavaGuide 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
title | category | tag | |
---|---|---|---|
Java 19 新特性概览 |
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),感兴趣的可以看看,这里就不重复讲了。
相关阅读:
JDK 终于将 UTF-8 设置为默认字符集。
在 Java 17 及更早版本中,默认字符集是在 Java 虚拟机运行时才确定的,取决于不同的操作系统、区域设置等因素,因此存在潜在的风险。就比如说你在 Mac 上运行正常的一段打印文字到控制台的 Java 程序到了 Windows 上就会出现乱码,如果你不手动更改字符集的话。
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,只限于静态文件。
在 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
这种方式生成的效果更好且使用起来更方便一些。
Java 18 改进了 java.lang.reflect.Method
、Constructor
的实现逻辑,使之性能更好,速度更快。这项改动不会改动相关 API ,这意味着开发中不需要改动反射相关代码,就可以体验到性能更好反射。
OpenJDK 官方给出了新老实现的反射性能基准测试结果。
Java 18 定义了一个全新的 SPI(service-provider interface),用于主要名称和地址的解析,以便 java.net.InetAddress
可以使用平台之外的第三方解析器。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。