В Java появится стандартный HTTP-клиент

Недавно в свет вышел новый JEP 321, целью которого является стандартизация клиента для работы с HTTP в Java. Этот клиент уже присутствует в JDK 9, однако он находится в инкубированном модуле jdk.incubator.httpclient, т.е. имеет статус экспериментального API, который может измениться в будущем. Когда JEP будет реализован, инкубированный модуль будет перенесён в стандартный модуль java.net.httpclient, а сам инкубированный модуль будет удалён.

Пример кода с использованием HttpClient:

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(new URI("http://example.org"))
    .GET()
    .build();

HttpResponse<String> response = client.send(request,
    HttpResponse.BodyHandlers.ofString());

System.out.println(response.statusCode());
System.out.println(response.body());

Новый HTTP-клиент начал разрабатываться в 2014 году, когда стало ясно, что устаревший класс HttpURLConnection, который появился ещё в JDK 1.1, более не отвечает современным требованиям: он неудобен в использовании, не поддерживает HTTP/2 и веб-сокеты, работает только в блокирующем режиме, а также его очень трудно поддерживать. Новый HTTP-клиент решает все эти проблемы и предоставляет более удобный и современный API. После введения в JDK 9 в качестве инкубированного модуля он был практически полностью переписан и значительно улучшен.

В какой релиз попадёт новый стандартный HTTP-клиент, пока ещё неизвестно. В Java 10 он попасть не успеет, поэтому, скорее всего, попадёт в Java 11.

Подписывайтесь на канал в Telegram, чтобы не пропускать новости.

Все материалы на этом сайте выложены под лицензией CC BY-SA 4.0
© Евгений Козлов, 2017-2020