The document discusses how the Servlet 4.0 specification could expose features of HTTP/2 to Java applications. It describes key HTTP/2 features like request/response multiplexing, stream prioritization, and server push. It proposes ways these could be exposed in the Servlet API, such as new methods on HttpServletRequest and HttpServletResponse. It also provides examples of how server push could be used from JavaServer Faces and model-view-controller applications. The presentation concludes with a summary of the current status of JSR-369 to standardize Servlet 4.0 and bring HTTP/2 support to Java EE.
out additional information/disclaimers required depending on your audience.
Those are the big problems that are out there in the world.
This is important because HTTP/2 is essentially a new transport layer underneath the existing HTTP/1.1 semantics + a header compression specification.
Same request/response model
No new HTTP methods (except for PRI but that's just for the protocol)
No new headers (but new names/concepts for old headers)
No new usage pattern from application level
Same usage of URL spec and TCP ports
Another illustration of the socket angle.
what can we do at the application level to work around them?
Fully bi-directional at the protocol level, no HOL blocking.
Message, not just request and response, there are also control messages.
Headers must precede data.
Two ways to specify priority: in headers or in a separate frame. Make sure people understand that this is not just an integer. It's not just like, "a bigger integer means it is more important."
B and C depend on A. This information is included as a header in the HEADERS frame.
These numbers are weights that correspond to the priority.
If A is stuck, you can't do anything on A, you would like to do the things that are lower priority, which is B and C in this case. You would distribute the resources in the ratio of 4 to 12.
An exclusive flag allows for the insertion of a new level of dependencies. The exclusive flag causes the stream to become the sole dependency of its parent stream, causing other dependencies to become dependent on the prioritized stream.
Patterns: Foreshadow use of Server Push with JSF later
It's a facility to allow the server to pre-populate the browser's cache with data it knows the browser will need anyway.
Here is where you mention that this is not a replacement for WebSocket. It can be used in concert with SSE