Как я могу использовать Http Client API(начиная с Java 9) в проекте Java8

Java 9 импортирует новый клиентский API HTTP/2, который кажется полезным, но есть ли способ использовать его в Java 8?

ИЛИ ЖЕ

Есть ли shim/polyfill(из javascript) доступно, чтобы сделать его доступным в Java 8?

2 ответа

Есть ли способ использовать его в 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());
    }
}

Более того, документация четко гласит это заранее

Инкубационная особенность.Будет удален в будущем выпуске.

В принципе, источник для него доступен. Вы можете скопировать его, скомпилировать и создать jar-файл, пригодный для использования с Java 8 (возможно, с некоторыми изменениями или отсутствующими функциями, если код требует где-то Java 9), аналогично ThreeTen-Backport java.time для Java 6/7.

Но, кажется, пока нет ни одного доступного (после быстрого поиска). Если вы решили пойти в этом направлении, обязательно следуйте соответствующим лицензиям.

Другие вопросы по тегам