Introduction
Java's support for interacting with HTTP-specific features has been very primitive. The HttpURLConnection
class, available since JDK 1.1, provides APIs for interacting with URLs with HTTP-specific features. Since this API has been there even before HTTP/1.1, it lacked advanced features and was a pain to use. This is why developers mostly resorted to using third-party libraries, such as Apache HttpClient, Spring framework, and HTTP APIs.
In JDK 9, a new HTTP Client API was introduced under JEP 110 (http://openjdk.java.net/jeps/110) as an incubator module (http://openjdk.java.net/jeps/11). The same incubator module has been promoted as a standard module by the name of java.net.http
under JEP 321 (http://openjdk.java.net/jeps/321), which is part of the latest JDK 11 release.
Note
A note on incubator modules: An incubator module contains non-final APIs, which are significantly larger and not mature enough to be included in Java SE. This is a form of beta release of the API so...