JDK18体验版已出,你还在用哪个版本?

关注微信公众号可以查看面试经验: 为了offer

d135864a77fc06eea28fb6269334e53.jpg

qrcode_for_gh_5dab503ac197_258.jpg

​2021年11月11日jdk18体验版本已经可以下载,下载地址:jdk.java.net/18/

此次体验版的更新如下:

  • 默认为 UTF-8

jdk18之前的字符集取决于你的环境,jdk18指定 UTF-8 作为标准 Java API 的默认字符集。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、区域设置和配置中保持一致。

  • 简单的网络服务器

提供一个命令行工具来启动一个只提供静态文件的最小网络服务器。没有 CGI 或类似 servlet 的功能可用。该工具对于原型设计、临时编码和测试目的非常有用。

  1. 描述
Simple Web Server 是一个命令行工具,用于为单个目录层次结构提供服务。它基于com.sun.net.httpserver自 2006 年以来包含在 JDK中的包中的 Web 服务器实现。该包得到官方支持,我们使用 API 对其进行了扩展,以简化服务器创建并增强请求处理。
  1. 命令行工具
以下命令通过运行jdk.httpserver模块的主类来启动 Simple Web Server :





$ java -m jdk.httpserver


如果启动成功,那么服务器会向 System.out 打印一条消息,列出本地地址和所服务目录的绝对路径。例如:





$ java -m jdk.httpserver


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/>


默认情况下,服务器在前台运行并绑定到环回地址和端口 8000。这可以通过-b和-p选项进行更改。例如,要在端口 9000 上运行,请使用:





$ java -m jdk.httpserver -p 9000


例如,将 Simple Web Server 绑定到所有接口:





$ java -m jdk.httpserver -b 0.0.0.0


Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000


URL: <http://123.456.7.891:8000/>


默认情况下,文件从当前目录提供。可以使用该-d选项指定不同的目录。





仅提供幂等 HEAD 和 GET 请求。任何其他请求都会收到501 - Not Implemented或405 - Not Allowed响应。GET 请求被映射到所服务的目录,如下所示:





如果请求的资源是文件,则提供其内容。


如果请求的资源是包含索引文件的目录,则提供索引文件的内容。


否则,列出目录的所有文件和子目录的名称。未列出或提供符号链接和隐藏文件。


服务器仅支持 HTTP。不支持 HTTPS。
  • Java API 文档中的代码片段

引入了一个新的内联标记 ,{@snippet …}来声明要出现在生成的文档中的代码片段。它可用于声明内联片段(其中代码片段包含在标签本身中)和 外部片段(其中代码片段从单独的源文件中读取

  1. 内联
1
2
3
4
5
6
7
8
markdown复制代码/**
* The following code shows how to use {@code Optional.isPresent}:
* {@snippet :
* if (v.isPresent()) {
* System.out.println("v: " + v.get());
* }
* }
*/
2. 外联
1
2
3
4
perl复制代码/**
* The following code shows how to use {@code Optional.isPresent}:
* {@snippet file="ShowOptional.java" region="example"}
*/

ShowOptional.java包含以下内容的文件在哪里:

1
2
3
4
5
6
7
8
9
csharp复制代码public class ShowOptional {
void show(Optional<String> v) {
// @start region="example"
if (v.isPresent()) {
System.out.println("v: " + v.get());
}
// @end
}
}

**

**

  • 使用方法句柄重新实现核心反射

这个就是重新实现了底层的反射,API还是没有变

  • Vector API(第三孵化器)

引入 API 来表达向量计算,这些计算在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能

  • 互联网地址解析 SPI

定义用于主机名和地址解析的服务提供者接口 (SPI),以便java.net.InetAddress可以使用平台内置解析器以外的解析器

描述

该InetAddressAPI定义了查找操作多种方法:

InetAddress::getAllByName执行正向查找,将主机名映射到一组 IP 地址。

InetAddress::getByName 还执行前向查找,将主机名映射到其地址集中的第一个地址。

InetAddress::getCanonicalHostName执行反向查找,将 IP 地址映射到完全限定的域名。例如:

var addressBytes = new byte[] { (byte) 192, 0, 43, 7};

var resolvedHostName = InetAddress.getByAddress(addressBytes)

.getCanonicalHostName();

InetAddress::getHostName 如果需要,还会执行反向查找。

默认情况下,InetAddress使用操作系统的本机解析器来执行查找。可以缓存该查找的结果,无论是正的还是负的,以避免对同一主机的进一步查找。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%