際際滷

際際滷Share a Scribd company logo
Simone Bordet
sbordet@intalio.com
HTTP/2 & Java
Current Status
Simone Bordet
sbordet@intalio.com
Who Am I
Simone Bordet
 sbordet@intalio.com - @simonebordet
Lead Architect at Intalio/Webtide
 Jetty's HTTP/2, SPDY and HTTP client maintainer
Open Source Contributor
 Jetty, CometD, MX4J, Foxtrot, LiveTribe, JBoss, Larex
CometD project leader
 Web messaging framework
JVM tuning expert
Simone Bordet
sbordet@intalio.com
HTTP/2: Why
Simone Bordet
sbordet@intalio.com
HTTP/2: Why
http://w3c.org ~ 1996
 1 HTML file, 600 bytes
Simone Bordet
sbordet@intalio.com
HTTP/2: Why
http://w3c.org ~ 2015
 41 resources, 366 KiB ~ 1 HTML, 4 CSS, 2 JS, 34 images
Simone Bordet
sbordet@intalio.com
HTTP/2: Why
http://cnn.com ~ 2015
 95 resources, 6.7 MiB ~ 3 HTML, 4 CSS, 30 JS, 58 imgs
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
Simone Bordet
sbordet@intalio.com
HTTP/2: Why
Servers
want to
BE
REALLY
FAST
Simone Bordet
sbordet@intalio.com
HTTP/2: Why
Better HTTP
means
MORE MONEY
Simone Bordet
sbordet@intalio.com
HTTP/2: How
Simone Bordet
sbordet@intalio.com
HTTP/2: How
HTTP/2: Binary protocol
 Based on the SPDY protocol (Google's experiment)
 Efficient to parse and generate
 Based on frames
HEADERS
HEADERS DATA DATA
DATA
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
Simone Bordet
sbordet@intalio.com
HTTP/2: Multiplexed
 No more domain sharding and spriting hacks needed
HEADERS
HEADERS
HEADERS
HEADERS
HEADERS
HEADERS DATA
DATA
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
Simone Bordet
sbordet@intalio.com
HTTP/2: How
index.html
style.css
application.js
image1.png
Push
Cache
index.html
application.js
style.css
image1.png
HTTP/1.1
HTTP/2 + PUSH
Simone Bordet
sbordet@intalio.com
HTTP/2: When
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
Simone Bordet
sbordet@intalio.com
HTTP/2: Who
Simone Bordet
sbordet@intalio.com
HTTP/2: Who
cURL & Wireshark
 Unix tools support for HTTP/2
35+ Implementations
 https://github.com/http2/http2-spec/wiki/Implementations
Java, C, C++, Go, NodeJS, Erlang, Haskell, etc.
Simone Bordet
sbordet@intalio.com
HTTP/2: Java
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
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
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)
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());
Simone Bordet
sbordet@intalio.com
Simone Bordet
sbordet@intalio.com
HTTP/2: Conclusions
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)
Simone Bordet
sbordet@intalio.com
HTTP/2: Conclusions
HTTP/2 Makes
You Money
Upgrade
To Jetty :)
Simone Bordet
sbordet@intalio.com
Questions
&
Answers

More Related Content

HTTP 2.0 & Java: Current Status", Part 1, jDays 2015 Speaker: "Simone Bordet