Work on the incubating HTTP Client has been ongoing in the
`http-client-branch` of the JDK sandbox [1] ( and previously in the JDK
10 sandbox [2] ). This issue proposes to take a snapshot of that work so
as to refresh the version in the JDK mainline. As of now the mainline
that corresponds to JDK 10.
While incubating in JDK 9, the implementation has been almost completely
rewritten over in the sandbox. The implementation is now complete
asynchronous ( previously HTTP/1.1 has a blocking implementation ). Use
of the RX Flow concept been pushed down into the implementation. This
eliminates much of the original custom concepts to support HTTP/2. The
"flow" of data can now be more easily traced from the user-level request
publishers and response subscribers, all the way down to the underlying
socket. This significantly reduces the number of concepts and complexity
in the code, and maximizes the possibility of reuse between HTTP/1.1 and
HTTP/2.
As the API is still incubating, there have been some API tweaks. Mainly
renaming ( request & response body processors are now request publisher
and response subscriber ), minor spec clarifications around exceptions,
a general tidy up and changes to address a number of external feedback
items. Additionally, much work has been done on increasing test coverage
and stabilization of the tests themselves.
http://cr.openjdk.java.net/~chegar/http_client_sandbox_8191494/
The webrev contains contributions from Chris Hegarty, Daniel Fuchs
Michael McMahon, and Pavel Rappo. As can be seen from the sandbox
history, review of the code has been effectively ongoing as the code has
evolved, but nonetheless I'm sure it will benefit from further review.
-Chris.
[1] hg clone http://hg.openjdk.java.net/jdk/sandbox; cd sandbox; hg
update http-client-branch
[2] http://hg.openjdk.java.net/jdk10/sandbox/