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/

Reply via email to