Servlet 4.0

Written on July 24, 2014

The Servlet API is one of the most used API, if not the most used API of the Java EE Platform! It was revised for Java EE 7, Servlet 3.1 (JSR 340) added quite some new capabilities such as support for the HTTP 1.1 upgrade mechanism (required for supporting WebSocket for example), non-blocking asynchronous IO, various security related improvements and so on. Shing Wai Chan (Spec Lead of Servlet 3.1) has just posted a draft proposal for the Servlet 4.0 JSR.

Moving from 3.1 to 4.0 clearly means that this will be a major revision of the Servlet specification and it has a key theme, i.e. HTTP/2. It will be the first new version of the HTTP protocol since the current version (HTTP 1.1) which was standardized … end of the last century (RFC 2616)! HTTP/2 will bring many improvements over HTTP/1.x. In his draft proposal, Shing Wai lists the HTPP/2 features that he expects to be exposed by the Servlet 4.0 API:

  • Request/Response multiplexing

  • Stream Prioritization

  • Server Push

  • Upgrade from HTTP 1.1

HTTP 1.x is a fairly simple request/response protocol. Things will probably change with HTTP/2 multiplexing capabilities, so some of the paradigms we know since years will have to evolve too! And since it is not a small task to drive a major evolution of such an important API, Ed Burns will help Shing Wai and will co-lead this JSR with him.

HTTP/2 will be the key theme of Servlet 4.0 but the Expert Group will probably tackle additional capabilities.

In terms of timing, we expect Java EE 8 to support Servlet 4.0 but there is a constraint: HTTP/2 itself! At this stage, HTTP/2 is still in active development. It is however expected to be completed well in advance of the completion date of Java EE 8. In his proposal Shing Way explains why it is now relatively safe to consider adding HTTP/2 support to the Servlet API.

So make sure to check the Servlet 4.0 draft JSR proposal and give your feedback before the proposal is submitted to the JCP.

Originaly posted on The Aquarium blog.