RFR 8191494: Refresh the incubating Http Client

Chris Hegarty chris.hegarty at oracle.com
Fri Nov 17 18:31:31 UTC 2017


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/


More information about the net-dev mailing list