2. Evolution of HTTP
1991: HTTP/0.9 The One-Line Protocol
1996: HTTP/1.0 RFC 1945 Rapid Growth and Informational
1999: HTTP/1.1 RFC 2616 Internet Standard
2007: HTTPbis started to refresh HTTP/1.1
2009: Google announced SPDY
2011: Chrome and all Google services run SPDY
2012: HTTP/2 work began, based on SPDY
2014: HTTP/1.1 updated, RFC 7230 series
2015: HTTP/2 finalized RFC 7540 New Internet Standard
2016: Chrome removes SPDY to support HTTP/2 Adoption
3. How New is HTTP 2.0?
A rhetoric Question of Course
***It is BRAND NEW as of 2016***
SPDY initiative started by Google on 2009 to investigate and improve HTTP.
In 2012, HTTP 2.0 proposals started and its specification finalized on May, 2015 by
Internet Engineering Task Force (IETF).
Now its Usage is at 6.5% (http://w3techs.com/technologies/details/ce-http2/all/all)
As usual, all supporting developments happen in Parallel
All Major Browser already Support HTTP 2 (http://caniuse.com/#feat=http2)
4. In Short HTTP/2 - Key differences to
HTTP/1.x
HTTP/2:
is binary, instead of textual
is fully multiplexed, instead of ordered and blocking
can therefore use one connection for parallelism
uses header compression to reduce overhead
allows servers to “push” responses proactively into client caches
5. Problems of Internet Application
8 Fallacies of Distributed/Networked Computing
1. Network is Reliable
2. Latency is Zero
3. Bandwidth is infinite
4. Network is Secure
5. Topology does not change
6. There is one Administrator
7. Transport Cost is Zero
8. Network is Homogeneous
Essentially everyone when they first build a Distributed/Networked
Application makes the following assumptions, all prove to be false in Long
Run, all causes Big trouble and painful learning Experiences
Which one of this is a big Problem that HTTP can address Appropriately?
6. Here is more to analyse
HTTP usage Trends
Visit - http://httparchive.org/
http://www.internetlivestats.com/internet-users/
You can check for the problems that should be
addressed based on statistics.
10. The Big Problem is Latency
Bandwidth
In computing, bandwidth is the bit-rate of available or
consumed information capacity expressed typically in
metric multiples of bits per second. Variously, bandwidth
may be characterized as network bandwidth, data
bandwidth, or digital bandwidth.
Latency
Latency is a time interval between the stimulation and
response, or, from a more general point of view, as a time
delay between the cause and the effect of some physical
change in the system being observed.
34. Proper Multiplexing
• Allows interleaving of different requests and
responses
• Bidirectional
• Each frame has a unique identifier
• Eliminates head-of-line blocking
• Single connection for parallel processing
36. Header Compression
• Uses HPACK
• Huffman code for encoding headers
• An index table is maintained between client
and server
• CRIME prevented use of zlib
38. Server Push
• Replaces in lining of resources
• Allows for caching
• Allows for cancellation of client
39. 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
• 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
• JEP 110 (http://openjdk.java.net/jeps/110)
– HTTP/2 Client proposal for JDK 9
– HTTP/2 Client API proposed
• In the Java World:
– Jetty (server + client) – Live @ https://webtide.com
– Netty
– Undertow
– Ok Http (Android)