This document discusses HTTP/2 and its current status for Java. It begins with an introduction of the presenter Simone Bordet. It then explains why HTTP/2 was needed due to the growth of the web and inefficiencies of HTTP/1.1. The document outlines how HTTP/2 works with features like being binary, requiring TLS, multiplexing, header compression, prioritization and push. It notes HTTP/2 is already implemented in major browsers and over 35 projects. For Java, it states no code changes are needed but servers require JDK 8 and Servlet 4.0 and JDK 9 will add client support. It concludes that developers need no changes but some changes may be needed for operations teams to
1 of 29
Downloaded 16 times
More Related Content
HTTP 2.0 & Java: Current Status", Part 1, jDays 2015 Speaker: "Simone Bordet
7. Simone Bordet
sbordet@intalio.com
HTTP/2: Why
The Web EXPLODED !
HTTP 1.1 is an old protocol
Extremely inefficient
No multiplexing, no resource correlation
Web developers hacking around limitations
Domain sharding, resource inlining, image spriting, etc.
Browser vendors want to make browsers FAST
Break HTTP 1.1 recommendations
12. Simone Bordet
sbordet@intalio.com
HTTP/2: How
HTTP/2: TLS everywhere
Usage of TLS (SSL) is a MUST for browsers
Very strict subset of strong ciphers
Transparent proxy problem
Caching proxies don't work anymore
Big problem for certain countries
Server-to-Server communication may be in clear
Not every server supports clear-text HTTP/2
14. Simone Bordet
sbordet@intalio.com
HTTP/2: How
HTTP/2: HTTP Headers compression
Optimized usage of network
Using Huffman coding
~600B ~90B => 85% saved on headers
HTTP/2: Request Prioritazion
Resources may have a priority
Clients may even re-prioritize
HTTP/2: Push of correlated HTTP resources
Less roundtrips to get all resources
Huge benefits in page rendering
17. Simone Bordet
sbordet@intalio.com
HTTP/2: When
HTTP/2 Specification under IESG editing
It's basically a standard, unlikely to change further
Browsers already implement HTTP/2 (TLS only)
Firefox 34
Chrome 38
Internet Explorer 11
It's already there
Twitter, Google, major websites
Our own https://webtide.com
21. Simone Bordet
sbordet@intalio.com
HTTP/2: Java
No changes required to your WARs
Existing web applications work out-of-the-box
Push functionalities provided by servers and
frameworks
Possible action: remove old HTTP/1.1 hacks
22. Simone Bordet
sbordet@intalio.com
HTTP/2: Java
HTTP/2 compliant servers require JDK 8
Due to the fact that HTTP/2 requires strong ciphers
Server-to-Server clear text may run on JDK 7
Servlet 4.0 will support HTTP/2
Backwards compatible
Few new API changes
New HTTP Push API
23. Simone Bordet
sbordet@intalio.com
HTTP/2: Java
JEP 110 (http://openjdk.java.net/jeps/110)
HTTP/2 Client proposal for JDK 9
HTTP/2 Client API proposed:
http://cr.openjdk.java.net/~michaelm/httpclient/01/
In the Java World:
Jetty (server + client) Live @ https://webtide.com
Netty
Undertow
OkHttp (Android)
24. Simone Bordet
sbordet@intalio.com
HTTP/2: Java
Jetty provides a pure HTTP/2 client
Jetty's HttpClient provides a HTTP/2 transport
Applications use HttpClient high-level API
// Standard HTTP/1.1 client
new HttpClient();
// HTTP/2 transport client
new HttpClient(new HttpClientTransportOverHTTP2());
27. Simone Bordet
sbordet@intalio.com
HTTP/2: Conclusions
No changes for Web Developers
Servlet API backward compatible
Frameworks (JSF) will be able to leverage HTTP Push
No more domain sharding / spriting hacks needed
JDK 9 possibly updated to support HTTP 2.0
Some change for Deployers (devops / sysops)
TLS everywhere
Upgrade your Servlet Container
Jetty 9.3
Upgrade network infrastructure (e.g. load balancers)