你好啊,我是大阳,本文给你介绍Java11的新特性,并提供一些代码示例。
本文主要内容
- HTTP客户端API
- 无需编译即可启动单文件程序
- 字符串API更新
- Collection.toArray
- Files.readString() 和 Files.writeString()
- Optional.isEmpty()
Java 11(2018 年 9 月发布)包含许多重要且有用的更新。让我们看看它为开发人员和架构师带来的新功能和改进。
1. HTTP客户端API
Java 使用HttpURLConnection
进行HTTP通信已经很长一段时间了。但随着时间的推移,要求变得越来越复杂,应用程序的要求也越来越高。在 Java 11 之前,开发人员不得不求助于功能丰富的库,如Apache HttpComponents或OkHttp等。
我们看到Java 9发布包含一个HttpClient
实现作为实验性功能。它随着时间的推移而发展,现在是 Java 11 的最终功能。现在 Java 应用程序可以进行 HTTP 通信,而无需任何外部依赖。
1.1 如何使用HttpClient
java.net.http
模块和典型 HTTP 交互如下所示 :
- 创建HttpClient的实例并根据需要进行配置。
- 创建一个HttpRequest实例并填充信息。
- 将请求传递给客户端,执行请求并检索HttpResponse的实例。
- 处理包含在
HttpResponse
中的信息.
HTTP API 可以处理同步和异步通信。让我们看一个简单的例子。
1.2 同步请求示例
请注意 http 客户端 API 如何使用构建器模式来创建复杂对象。
package cn.dayangshuo.http;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/**
* @author DAYANG
*/
public class HttpClientTest {
public static void main(String[] args) {
HttpClient httpClient = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
try {
String urlEndpoint = "https://www.baidu.com/s";