At the Javaland conference in 2015, Ed Burns presented a summary of the Java EE Servlet 4.0 specification (JSR 369), which focused on the Java EE platform's support for HTTP/2. The HTTP/2 is designed to address problems in the existing HTTP specification and introduce new features including Request/response multiplexing, binary frame transfer (binary framing), data flow prioritization, server push, and header information compression.
Burns is one of Oracle's technical advisers, and he has started to talk about the fact that more than 30 kinds of resources from a typical web site are being transmitted to a browser-side slowly due to flaws inherent in http/1.1. The first problem is ' Head-of-line,hol ', because the requested resource must be queued in turn. To do this, modern browsers try to use techniques such as opening multiple socket connections, domain name fragmentation, and file concatenation as a temporary solution.
Burns says that HTTP/2 is essentially a new transport layer based on http/1.1, and is the implementation of the application layer in the OSI model. The protocol defines the same request/response model, and does not introduce new methods or header information, new usage patterns on the application layer, and no new URL usages and underlying specifications.
http/1.1 hardly touches on how TCP sockets are used, TCP packets can be treated as discarded resources. Instead, the new HTTP/2 specification recommends that sockets be treated as scarce resources, with each server opening only one TCP connection. HTTP/2 's ' stream ' is essentially a channel of TCP connections, and messages are routed through the channel. A frame is the smallest unit of HTTP/2 communication.
The HTTP/2 specification also includes:
- Request/response multiplexing-Each TCP connection is full-duplex.
- Binary frame transfer--HTTP/2 is a binary protocol that makes it easier to transfer frames. The start and end of a frame is entirely determined by a text-based protocol (such as http/1.1). Binary frame transfer will also resolve hol blocking issues.
- Data flow prioritization-each stream has a priority that determines which flows are the most important.
- Server-side push-This allows the server side to pre-populate the browser-side cache before the browser requests resources.
- Header information compression (known as Hpack)-a high-performance compression format for the presentation header information domain.
- HTTP/2 upgrade to http/1.1-includes non-secure (using 80 port and HTTP status code of 101 ' switching Protocol ') and security (using NPN or ALPN) the definition of the Transport Layer upgrade protocol.
Burns discusses existing criticisms of HTTP/2, including hol blocking may occur in header information frames, Firefox and Chrome do not support non-secure Transport Layer protocol upgrades, due to the Hpack encoding/decoding process resulting in an increase in the carbon footprint (carbon footprint), Due to the large surface area of the new software that must be written to the HTTP/2 specification implementation, the potential to increase the source of the Dos attack, as well as the HTTP/2 is actually orthogonal to websocket.
The presentation concludes with a discussion of the support that the Java EE Servlet API may contain for the HTTP/2 specification. Features that may be supported include: Request/response multiplexing, data flow prioritization, server-side push, and upgrade to HTTP1.1.
The data flow priority is implemented through the new priority class, and the existing HttpServletRequest and HttpServletResponse classes increase the method of accessing and modifying the data flow precedence. Burns also points out that server-side push is useful for frameworks such as JSF, and it also enables the ability to push resources to the client with a given URL and header information.
The Servlet 4.0 specification introduces HTTP/2 to Java EE and 100%-compliant implementation of the HTTP/2 specification. This will be supported by the JSR 369来, which was developed in September 2014, and JSR369 tentatively finalized in the fourth quarter of 2015 and is expected to be finalized in the third quarter of 2016.
Burns encourages all interested people to experience aquarium blog by participating in the creation of Servlet4.0 through the ADOPT-A-JSR program, by accessing the Java EE reference to implement the Web page glassfish the application server. For more information about the JSR369 specification, see the Java Community Process (JCP) Web site. Javaland is the annual Java Conference held in Brühl, Germany, for details on the Javaland event website.
View English text: Ed Burns discusses HTTP/2 and the Java EE Servlet 4 specification
Ed Burns talking about HTTP/2 and Java EE Servlet 4 specification