4

Java 9 导入了一个新的 HTTP/2 客户端 API,它看起来很好用,但有没有办法在 Java 8 中使用它?

或者

是否有任何shim/ polyfill(来自 javascript)可用于使其在 Java 8 中可用?

4

2 回答 2

6

有没有办法在 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());
    }
}

此外,文档清楚地预先阅读了这一点

孵化功能。将在未来的版本中删除。

于 2017-09-24T08:07:12.550 回答
2

原则上,它的来源是可用的。您可以复制、编译它并创建一个可用于 Java 8 的 jar(如果代码在任何地方需要 Java 9,可能会进行一些更改或缺少功能),类似于为 Java 6/7提供的 ThreeTen-Backportjava.time

但似乎还没有可用的(快速搜索后)。如果您决定朝这个方向发展,请确保遵循相关许可。

于 2017-09-24T08:27:00.560 回答