Java 9 导入了一个新的 HTTP/2 客户端 API,它看起来很好用,但有没有办法在 Java 8 中使用它?
或者
是否有任何shim
/ polyfill
(来自 javascript)可用于使其在 Java 8 中可用?
Java 9 导入了一个新的 HTTP/2 客户端 API,它看起来很好用,但有没有办法在 Java 8 中使用它?
或者
是否有任何shim
/ polyfill
(来自 javascript)可用于使其在 Java 8 中可用?
有没有办法在 java 8 中使用它?
不,因为该jdk.incubator.http
模块是从 Java 9开始添加的。
因此,不可能--release 8
使用 Java8 的编译器选项来编译它。您最终会收到以下错误:
$ javac --release 8 .../src/com/HttpGet.java $ .../src/com/HttpGet.java:3: error: package jdk.incubator.http does not exist import jdk.incubator.http.HttpClient; ^
用最少的代码将其重现为:-
import jdk.incubator.http.HttpClient;
public class HttpGet {
public static void main(String[] args) {
HttpClient httpClient = HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build();
System.out.println(httpClient.version());
}
}
此外,文档清楚地预先阅读了这一点
孵化功能。将在未来的版本中删除。
原则上,它的来源是可用的。您可以复制、编译它并创建一个可用于 Java 8 的 jar(如果代码在任何地方需要 Java 9,可能会进行一些更改或缺少功能),类似于为 Java 6/7提供的 ThreeTen-Backportjava.time
。
但似乎还没有可用的(快速搜索后)。如果您决定朝这个方向发展,请确保遵循相关许可。