SlideShare a Scribd company logo
Submit Search
Upload
HTTP/2 comes to Java
Report
Share
David Delabassee
DevRel - Java Platform Group - Oracle
Follow
•
13 likes
•
5,887 views
1
of
79
HTTP/2 comes to Java
•
13 likes
•
5,887 views
Report
Share
Download Now
Download to read offline
Internet
Presented at the Ch'ti JUG IUT A Lille1 - February 2014
Read more
David Delabassee
DevRel - Java Platform Group - Oracle
Follow
Recommended
Java EE 8 - Work in progress by
Java EE 8 - Work in progress
David Delabassee
2.5K views
•
80 slides
HTTP/2 comes to Java (Dec. 2015 version) by
HTTP/2 comes to Java (Dec. 2015 version)
David Delabassee
690 views
•
53 slides
Java EE 7 (Lyon JUG & Alpes JUG - March 2014) by
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
David Delabassee
4.8K views
•
76 slides
Java EE 8 - February 2017 update by
Java EE 8 - February 2017 update
David Delabassee
6K views
•
65 slides
Java EE Next by
Java EE Next
David Delabassee
2.2K views
•
44 slides
Oracle Database features every developer should know about by
Oracle Database features every developer should know about
gvenzl
545 views
•
54 slides
More Related Content
What's hot
Java EE Next - BeJUG JavaOne Afterglow 2016 by
Java EE Next - BeJUG JavaOne Afterglow 2016
David Delabassee
433 views
•
26 slides
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! by
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
David Delabassee
1.1K views
•
40 slides
HTML5 based PivotViewer for Visualizing LInked Data by
HTML5 based PivotViewer for Visualizing LInked Data
Kingsley Uyi Idehen
6.6K views
•
23 slides
Java EE 8 Overview (Japanese) by
Java EE 8 Overview (Japanese)
Logico
984 views
•
91 slides
Related OSS Projects - Peter Rowe, Flexera Software by
Related OSS Projects - Peter Rowe, Flexera Software
OpenStack
340 views
•
29 slides
Migrating your infrastructure to OpenStack - Avi Miller, Oracle by
Migrating your infrastructure to OpenStack - Avi Miller, Oracle
OpenStack
373 views
•
28 slides
What's hot
(20)
Java EE Next - BeJUG JavaOne Afterglow 2016 by David Delabassee
Java EE Next - BeJUG JavaOne Afterglow 2016
David Delabassee
•
433 views
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! by David Delabassee
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
David Delabassee
•
1.1K views
HTML5 based PivotViewer for Visualizing LInked Data by Kingsley Uyi Idehen
HTML5 based PivotViewer for Visualizing LInked Data
Kingsley Uyi Idehen
•
6.6K views
Java EE 8 Overview (Japanese) by Logico
Java EE 8 Overview (Japanese)
Logico
•
984 views
Related OSS Projects - Peter Rowe, Flexera Software by OpenStack
Related OSS Projects - Peter Rowe, Flexera Software
OpenStack
•
340 views
Migrating your infrastructure to OpenStack - Avi Miller, Oracle by OpenStack
Migrating your infrastructure to OpenStack - Avi Miller, Oracle
OpenStack
•
373 views
Java API for WebSocket 1.0: Java EE 7 and GlassFish by Arun Gupta
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Arun Gupta
•
23K views
Another compilation method in java - AOT (Ahead of Time) compilation by Logico
Another compilation method in java - AOT (Ahead of Time) compilation
Logico
•
3.6K views
Top 10 SQL Performance tips & tricks for Java Developers by gvenzl
Top 10 SQL Performance tips & tricks for Java Developers
gvenzl
•
659 views
Exploiting Linked (Open) Data via Microsoft Access by Kingsley Uyi Idehen
Exploiting Linked (Open) Data via Microsoft Access
Kingsley Uyi Idehen
•
3.4K views
Using SAP Crystal Reports as a Linked (Open) Data Front-End via ODBC by Kingsley Uyi Idehen
Using SAP Crystal Reports as a Linked (Open) Data Front-End via ODBC
Kingsley Uyi Idehen
•
3.5K views
Getting Started: Developing Tropo Applications by Cisco DevNet
Getting Started: Developing Tropo Applications
Cisco DevNet
•
323 views
Supercharge your Code to get optimal Database Performance by gvenzl
Supercharge your Code to get optimal Database Performance
gvenzl
•
501 views
Virtuoso ODBC Driver Configuration & Usage (Windows) by Kingsley Uyi Idehen
Virtuoso ODBC Driver Configuration & Usage (Windows)
Kingsley Uyi Idehen
•
6.2K views
Nonblocking Database Access in Helidon SE by Dmitry Kornilov
Nonblocking Database Access in Helidon SE
Dmitry Kornilov
•
866 views
Adopt-a-JSR for JSON Processing 1.1, JSR 374 by Heather VanCura
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Heather VanCura
•
6.5K views
Virtuoso ODBC Driver Configuration & Usage (Mac OS X) by Kingsley Uyi Idehen
Virtuoso ODBC Driver Configuration & Usage (Mac OS X)
Kingsley Uyi Idehen
•
34.9K views
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2) by Taewan Kim
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2)
Taewan Kim
•
1.2K views
Cisco Spark & Tropo API Workshop by Cisco DevNet
Cisco Spark & Tropo API Workshop
Cisco DevNet
•
1.5K views
MySQL Tech Café #8: MySQL 8.0 for Python Developers by Frederic Descamps
MySQL Tech Café #8: MySQL 8.0 for Python Developers
Frederic Descamps
•
753 views
Similar to HTTP/2 comes to Java
Oracle Keynote from JMagghreb 2014 by
Oracle Keynote from JMagghreb 2014
Simon Ritter
693 views
•
39 slides
Apex day 1.0 oracle apex 5.0 patrick wolf by
Apex day 1.0 oracle apex 5.0 patrick wolf
APEX Solutions - Natural Intelligence
592 views
•
22 slides
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!? by
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
Ryusuke Kajiyama
1.1K views
•
33 slides
GTRI.com Splunk for Vmware APP by
GTRI.com Splunk for Vmware APP
Zivaro Inc
635 views
•
21 slides
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7 by
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
Ryusuke Kajiyama
1.3K views
•
64 slides
Oracle RAC - A Safe Investment into the Future of Your IT by
Oracle RAC - A Safe Investment into the Future of Your IT
Markus Michalewicz
1.4K views
•
40 slides
Similar to HTTP/2 comes to Java
(20)
Oracle Keynote from JMagghreb 2014 by Simon Ritter
Oracle Keynote from JMagghreb 2014
Simon Ritter
•
693 views
Apex day 1.0 oracle apex 5.0 patrick wolf by APEX Solutions - Natural Intelligence
Apex day 1.0 oracle apex 5.0 patrick wolf
APEX Solutions - Natural Intelligence
•
592 views
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!? by Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
Ryusuke Kajiyama
•
1.1K views
GTRI.com Splunk for Vmware APP by Zivaro Inc
GTRI.com Splunk for Vmware APP
Zivaro Inc
•
635 views
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7 by Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
Ryusuke Kajiyama
•
1.3K views
Oracle RAC - A Safe Investment into the Future of Your IT by Markus Michalewicz
Oracle RAC - A Safe Investment into the Future of Your IT
Markus Michalewicz
•
1.4K views
Oracle cmg15 by Kellyn Pot'Vin-Gorman
Oracle cmg15
Kellyn Pot'Vin-Gorman
•
553 views
3° Sessione Oracle - CRUI: Mobile&Conversational Interface by Jürgen Ambrosi
3° Sessione Oracle - CRUI: Mobile&Conversational Interface
Jürgen Ambrosi
•
689 views
Oracle SQLcl by Barry McGillin
Oracle SQLcl
Barry McGillin
•
1.6K views
Hello worldswing.java by Subhash Kumar
Hello worldswing.java
Subhash Kumar
•
31 views
Tecnologias Oracle em Docker Containers On-premise e na Nuvem by Bruno Borges
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Bruno Borges
•
1.6K views
9thMeetup-20190316-CI/CD 기반의 Microservice 배포 by DongHee Lee
9thMeetup-20190316-CI/CD 기반의 Microservice 배포
DongHee Lee
•
130 views
Sitecore loves containers by Bart Plasmeijer
Sitecore loves containers
Bart Plasmeijer
•
215 views
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート by Ryusuke Kajiyama
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
Ryusuke Kajiyama
•
1.1K views
Develop Oracle Virtual Box and deploy to Cloud by Inprise Group
Develop Oracle Virtual Box and deploy to Cloud
Inprise Group
•
1.5K views
MySQL Clusters by Mark Swarbrick
MySQL Clusters
Mark Swarbrick
•
594 views
MySQL HA by Mark Swarbrick
MySQL HA
Mark Swarbrick
•
384 views
TDC2018SP | Trilha Arq Java - Crie arquiteturas escalaveis, multi-language e ... by tdc-globalcode
TDC2018SP | Trilha Arq Java - Crie arquiteturas escalaveis, multi-language e ...
tdc-globalcode
•
68 views
Oracle GoldenGate on Docker by Bobby Curtis
Oracle GoldenGate on Docker
Bobby Curtis
•
2.6K views
Hybrid mobile development with Oracle JET by Rohit Dhamija
Hybrid mobile development with Oracle JET
Rohit Dhamija
•
706 views
More from David Delabassee
JVMs in Containers - Best Practices by
JVMs in Containers - Best Practices
David Delabassee
726 views
•
37 slides
JVMs in Containers by
JVMs in Containers
David Delabassee
1.3K views
•
38 slides
Serverless Java Challenges & Triumphs by
Serverless Java Challenges & Triumphs
David Delabassee
1.2K views
•
46 slides
Serverless Java - Challenges and Triumphs by
Serverless Java - Challenges and Triumphs
David Delabassee
282 views
•
41 slides
Randstad Docker meetup - Serverless by
Randstad Docker meetup - Serverless
David Delabassee
322 views
•
37 slides
Java Serverless in Action - Voxxed Banff by
Java Serverless in Action - Voxxed Banff
David Delabassee
232 views
•
22 slides
More from David Delabassee
(20)
JVMs in Containers - Best Practices by David Delabassee
JVMs in Containers - Best Practices
David Delabassee
•
726 views
JVMs in Containers by David Delabassee
JVMs in Containers
David Delabassee
•
1.3K views
Serverless Java Challenges & Triumphs by David Delabassee
Serverless Java Challenges & Triumphs
David Delabassee
•
1.2K views
Serverless Java - Challenges and Triumphs by David Delabassee
Serverless Java - Challenges and Triumphs
David Delabassee
•
282 views
Randstad Docker meetup - Serverless by David Delabassee
Randstad Docker meetup - Serverless
David Delabassee
•
322 views
Java Serverless in Action - Voxxed Banff by David Delabassee
Java Serverless in Action - Voxxed Banff
David Delabassee
•
232 views
Serverless Kotlin by David Delabassee
Serverless Kotlin
David Delabassee
•
251 views
REST in an Async World by David Delabassee
REST in an Async World
David Delabassee
•
2.3K views
JAX-RS 2.1 Reloaded by David Delabassee
JAX-RS 2.1 Reloaded
David Delabassee
•
1.7K views
EJB and CDI - Alignment and Strategy by David Delabassee
EJB and CDI - Alignment and Strategy
David Delabassee
•
31.9K views
HTTP/2 Comes to Java by David Delabassee
HTTP/2 Comes to Java
David Delabassee
•
2.9K views
Java EE 8 - What’s new on the Web front by David Delabassee
Java EE 8 - What’s new on the Web front
David Delabassee
•
960 views
HTTP/2 Comes to Java by David Delabassee
HTTP/2 Comes to Java
David Delabassee
•
10.8K views
What's coming in Java EE 8 by David Delabassee
What's coming in Java EE 8
David Delabassee
•
2.3K views
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0 by David Delabassee
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee
•
1.8K views
MVC 1.0 / JSR 371 by David Delabassee
MVC 1.0 / JSR 371
David Delabassee
•
12.7K views
Java EE 8 - An instant snapshot by David Delabassee
Java EE 8 - An instant snapshot
David Delabassee
•
10.7K views
Avatar 2.0 by David Delabassee
Avatar 2.0
David Delabassee
•
1.9K views
Java EE 8 - An instant snapshot by David Delabassee
Java EE 8 - An instant snapshot
David Delabassee
•
1.7K views
HTTP/2 Comes to Java - What Servlet 4.0 Means to You by David Delabassee
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
David Delabassee
•
13.8K views
Recently uploaded
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 by
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
Infosec train
7 views
•
6 slides
Is Entireweb better than Google by
Is Entireweb better than Google
sebastianthomasbejan
10 views
•
1 slide
DU Series - Day 4.pptx by
DU Series - Day 4.pptx
UiPathCommunity
94 views
•
28 slides
Serverless cloud architecture patterns by
Serverless cloud architecture patterns
Jimmy Dahlqvist
17 views
•
52 slides
google forms survey (1).pptx by
google forms survey (1).pptx
MollyBrown86
14 views
•
10 slides
AI Powered event-driven translation bot by
AI Powered event-driven translation bot
Jimmy Dahlqvist
16 views
•
31 slides
Recently uploaded
(20)
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 by Infosec train
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
Infosec train
•
7 views
Is Entireweb better than Google by sebastianthomasbejan
Is Entireweb better than Google
sebastianthomasbejan
•
10 views
DU Series - Day 4.pptx by UiPathCommunity
DU Series - Day 4.pptx
UiPathCommunity
•
94 views
Serverless cloud architecture patterns by Jimmy Dahlqvist
Serverless cloud architecture patterns
Jimmy Dahlqvist
•
17 views
google forms survey (1).pptx by MollyBrown86
google forms survey (1).pptx
MollyBrown86
•
14 views
AI Powered event-driven translation bot by Jimmy Dahlqvist
AI Powered event-driven translation bot
Jimmy Dahlqvist
•
16 views
Sustainable Marketing by Theo van der Zee
Sustainable Marketing
Theo van der Zee
•
9 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat
•
85 views
WEB 2.O TOOLS: Empowering education.pptx by narmadhamanohar21
WEB 2.O TOOLS: Empowering education.pptx
narmadhamanohar21
•
15 views
information by khelgishekhar
information
khelgishekhar
•
7 views
UiPath Document Understanding_Day 3.pptx by UiPathCommunity
UiPath Document Understanding_Day 3.pptx
UiPathCommunity
•
95 views
IGF UA - Dialog with I_ organisations - Alena Muavska RIPE NCC.pdf by RIPE NCC
IGF UA - Dialog with I_ organisations - Alena Muavska RIPE NCC.pdf
RIPE NCC
•
15 views
UiPath Document Understanding_Day 2.pptx by RohitRadhakrishnan8
UiPath Document Understanding_Day 2.pptx
RohitRadhakrishnan8
•
282 views
Audience profile.pptx by MollyBrown86
Audience profile.pptx
MollyBrown86
•
12 views
Existing documentaries (1).docx by MollyBrown86
Existing documentaries (1).docx
MollyBrown86
•
13 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol Performance
APNIC
•
124 views
childcare.pdf by fatma alnaqbi
childcare.pdf
fatma alnaqbi
•
14 views
informing ideas.docx by MollyBrown86
informing ideas.docx
MollyBrown86
•
12 views
OMS: Diretrizes para um controle da promoção comercial dos ditos substitutos ... by Prof. Marcus Renato de Carvalho
OMS: Diretrizes para um controle da promoção comercial dos ditos substitutos ...
Prof. Marcus Renato de Carvalho
•
88 views
zotabet.pdf by zotabetcasino
zotabet.pdf
zotabetcasino
•
6 views
HTTP/2 comes to Java
1.
HTTP/2&comes&to&Java!& David&Delabassee& @delabassee& Oracle Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved.*
2.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee About*me…
3.
Safe*Harbor*Statement The* following* is*
intended* to* outline* our* general* product* direction.* It* is* intended* for* information* purposes* only,* and* may* not* be* incorporated* into* any* contract.* It* is* not* a* commitment*to*deliver*any*material,*code,*or*functionality,*and*should*not*be*relied*upon* in*making*purchasing*decisions.*The*development,*release,*and*timing*of*any*features*or* functionality*described*for*Oracle’s*products*remains*at*the*sole*discretion*of*Oracle. Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 3
4.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
5.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Agenda Why*HTTP/2?* HTTP/2* HTTP/2*and*Java*EE* HTTP/2*and*Java*SE* Summary
6.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Agenda Why*HTTP/2?* HTTP/2* HTTP/2*and*Java*SE* HTTP/2*and*Java*EE* Summary
7.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 7 @delabassee Data*Never*Sleeps*3.0 www.domo.com/blog/2015/08/dataTneverTsleepsT3T0/
8.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 8 @delabassee HTTP*1.x 1991*
1996* 1999* 2009* 2015* HTTP/0.9* HTTP/1.0* HTTP/1.1* SPDY* HTTP/2.0*
9.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 9 @delabassee
10.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 10 @delabassee
11.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 11 @delabassee
12.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 12 @delabassee
13.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 13 @delabassee
14.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 14 @delabassee
15.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 15 @delabassee
16.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 16 @delabassee
17.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 17 @delabassee
18.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 18 @delabassee
19.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 19 @delabassee
20.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 21 @delabassee
21.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 22 @delabassee Today index.html style1.css style2.css .& .& .& script1.js script9.js pic1.jpg pic8.jpg .& .& .& photo1.png photo2.png .& .& .&
22.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 23 @delabassee google.fr*(1st)* •
3*HTTP*Requests* • 21.355*bytes* - 1*HTML* - 1*image* - 1*.js Top*.FR*examples lefigaro.fr*(15th)* • 140*HTTP*Requests* • 2.736.562*bytes* - 1*HTML* - 130*images* - 6*.js* - 2*.css*
23.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 24 @delabassee Requests**vs.*Connections http://httparchive.org/ Connections*per*Page Total*Requests*per*Page
24.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 25 @delabassee Transfer*size https://developers.google.com/web/fundamentals/performance/optimizingTcontentTefficiency
25.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 26 @delabassee •
If*a*page*takes*longer*than*4*sec*to*load,*1/4*people*abandons*that*page*(1)* • 57%*of*consumers*will*abandon*a*page*that*takes*longer*than*3*sec*to*load*(2)* • Page*load*slowdown*of*1*sec*could*cost*Amazon*$1.6*billion*in*sales*a*year*(1)* • Slowing*search*results*by*0.4*sec,*Google*could*lose*8*million*searches*per*day*(1) Latency*Vs.*Conversion*Rate Time&is&Money! (1)*http://www.fastcompany.com/1825005/howToneTsecondTcouldTcostTamazonT16TbillionTsales* (2)*RadView*Spring*2015*State*of*the*Union:*Ecommerce*Page*Speed*&*Web*Performance
26.
@delabasseeCopyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. HTTP*1.1 Head=of=Line&blocking 27 Client Server index.html index.html style1.css* script.js* ... style1.css* script.js* ...
27.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 28 @delabassee HTTP*1.1
28.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 29 @delabassee File*Concatenation*and*Image*Sprites •
Modern*web*page*consists*of*+90*resources*fetched*from*15*distinct* hosts*(*)* • TCP*Efficiency*Improves*with*Larger*Files* • Shoving*more*than*one*logical*file*into*one*physical*file (*)*http://httparchive.org
29.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 30 @delabassee File*Concatenation*and*Image*Sprites
30.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 31 @delabassee HTTP*1.1 Workaround&=&Domain&Sharding
31.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 32 @delabassee Asset*inlining …* <img"src="data:image/gif;base64,R0lGODlhEAAOexs3eeALMAAOazToeHh0tLS/ 7LZv0jvb29tf3Ubge8WSLrhf3kdbW1mxsjkhfkjfhGHhcjGDSHJUYgJvhgtyrHgfGfHy t56HGfGH56ge8WSLf6GGHhfkjfhhfkjfhpBREzxvt6QAA4lsjkhfkjfhdxwqBnuIoYty GhBKoOjJj6GGHvvhdsbxus38GV3pBREzxvt6QAA4lsjkhfkjfhdxwqBnuIoYtyGhBKoO jJj6GGHvvhdsbxus38GV3vvhdsbxusbasbPmfyH5BAAAjAAAALAAfhGHhcjAAAAQAA4l sjkhfkjfhGHhcjGDSHJUYgJvhgtyrHgfhfkjfhpBREzxvt6QAA4lsjkhfkjfhdxwqBnu IoYtyGhBKoOjJj6GGHvvhdsbxus38GV3GfHyt56HGfGH56ge8WsjkhfkjfhGHhcjGDSH JUYgJvhgtyrHgfGfHyt56HGfGH56gebxus38G8WSLf6GGHvvhdsbxusbaSLf6GGHvvhd sbxusbaOiQA4lsjkhfkjf4lsjkhfkjf4lsjbxus38GkhfkjfhfkjfhpBREzxvt6QAA4l sjkhfkjfhdxwqBnuIoYtyGhBKoOjJj6GGHvvhdsbxus38GV3DcPjjBceXsplojj…”"/>" …
32.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 33 @delabassee •
HTTP*uses*TCP*poorly* - HTTP:*short*and*bursty*flows*Vs.*TCP:*optimized*for*longTlived*flows* • Solutions* - Sprites* - Domain*sharding* - Assets*Inlining* - File*concatenations* - … HTTP/1.1*circa*1999 Problems&Vs&Solutions 1991& 1996& 1999& 2009& 2015& HTTP/0.9& HTTP/1.0& HTTP/1.1& SPDY& HTTP/2.0&
33.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Agenda Why*HTTP/2?* HTTP/2* HTTP/2*and*Java*SE* HTTP/2*and*Java*EE* Summary
34.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee HTTP/2 • Jan*2015* •
Feb*2015* • May*2015 35 Enabled*by*default*in*FireFox*(35)*and*Chrome*(40)* IESG*approved*HTTP/2* HTTP/2*in*10%*of*all*HTTP*responses*(FireFox)* HTTP/2*used*in*18%*of*global*traffic*(Google)* RFC*7540**“Hypertext*Transfer*Protocol*Version*2”* RFC*7541**“HPACK:*Header*Compression*for*HTTP/2”**
35.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Adoption 36 Last*year*we*announced*our*intent*to*end*support*for*the*experimental* protocol*SPDY*in*favor*of*the*standardized*version,*HTTP/2.*HTTP/2*is*the* nextTgeneration*protocol*for*transferring*information*on*the*web,*improving* upon*HTTP/1.1*with*more*features*leading*to*better*performance.** Since&then&we've&seen&huge&adoption&of&HTTP/2&from&both&web&servers& and&browsers,*with*most*now*supporting*HTTP/2.*Over&25%&of&resources&in& Chrome&are¤tly&served&over&HTTP/2,*compared*to*less*than*5%*over* SPDY.*Based*on*such*strong*adoption,*starting*on*May*15th*—*the* anniversary*of*the*HTTP/2*RFC*—*Chrome*will*no*longer*support*SPDY.*… http://blog.chromium.org/2016/02/transitioningTfromTspdyTtoThttp2.html
36.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 37 @delabassee Browsers*support …&as&of&November&2015 http://caniuse.com/http2*
37.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee38 HTTP/2*Features • Binary*Framing*over*single*TCP*connection* •
Request/Response*multiplexing* • Stream*Prioritization* • Server*Push* • Upgrade*from*HTTP*1.1* • Header*Compression* • Preserve*HTTP*semantic* • Flow*Control
38.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 39 @delabassee HTTP/2 •
Fully*biTdirectional* – Connection A*TCP*socket* – Message* A*logical*HTTP*message,*such*as*a*request*or*a*response** – Stream A*biTdirectional*“channel”*within*a*connection,*carry*one*or*more*message* – Frame The*smallest*unit*of*communication*in*HTTP/2 Lets&you&do&more&things&with&a&single&TCP&connection
39.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 40 @delabassee HTTP/2 Connections,&Streams,&Messages,&Frames
40.
@delabasseeCopyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. Binary*Frames • Frames* - HEADERS,*DATA,*PRIORITY,*RST_STREAM,*SETTINGS,*PUSH_PROMISE,*PING,* GOAWAY,*WINDOW_UPDATE,*CONTINUATION* -
Prioritisation,*Flow*Control,*Server*Push,*…** • Single*TCP*Connection 41 POST*/upload*HTTP/1.1* Host:*www.test.com* ContentTType:*application/json* ContentTLength:*15* {“name”:“duke”} HTTP&1.1
41.
@delabasseeCopyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. Binary*Frames • Frames* - HEADERS,*DATA,*PRIORITY,*RST_STREAM,*SETTINGS,*PUSH_PROMISE,*PING,* GOAWAY,*WINDOW_UPDATE,*CONTINUATION* -
Prioritisation,*Flow*Control,*Server*Push,*…** • Single*TCP*Connection 41 POST*/upload*HTTP/1.1* Host:*www.test.com* ContentTType:*application/json* ContentTLength:*15* {“name”:“duke”} HTTP&1.1 HTTP/2 HEADERS&frame DATA&frame
42.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 42 @delabassee Length&(24) Type&(8)
Flags&(8) R Stream&Identifier&(31) Frame&Payload&(0&…) Binary*Frames
43.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 43 @delabassee HTTP/2*Binary*Framing GET*/index.html*HTTP/1.1 Host:*example.com Accept:*text/html Example&1 HEADERS ****+*END_STREAM ****+*END_HEADERS ********:method:*GET ********:scheme:*http ********:path:*/index.html ********:authority:*example.org ********accept:*text/html
44.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 44 @delabassee HTTP/2*Binary*Framing HTTP/1.1*200*OK ContentTLength:*84 ContentTType:*text/html <!doctype*html>* <head>* <meta*charset=utfT8>* </head>* <body>Hello*World</body>* </html> Example&2 HEADERS ****T*END_STREAM ****+*END_HEADERS ********:status:*200 ********contentTlength:*84 ********contentTtype:*text/html DATA ****+*END_STREAM <!doctype*html>…
45.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 45 @delabassee Multiplexing
46.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 46 @delabassee Stream*Prioritization •
Stream*Dependency*in*HEADERS*Frame* • PRIORITY*frame*type* • An*additional*40*bytes* - Stream*id*(31)* - Weight*(8):*[1,*256]** - Exclusive*bit*(1)* • Only*an*advice A B C 4 12 A B CD 4 16 12 exclusive*=*0 A B C D 4 12 16 exclusive*=*1
47.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 47 @delabassee Flow*Control •
Mechanism*to*prevent*the*Sender*from*overwhelming*the*Receiver* • Allow*the*client*and*server*to*implement*own*streamT*and*connectionTlevel*flow* control* • SETTINGS*&*WINDOW_UPDATE*frames* • Similar*to*TCP*Flow*Control* - For*HTTP/2*multiplexed*streams* • HopTbyThop,*not*endTtoTend
48.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee#HTTP/2 Server*Push /index.html***stream*1* /style.css********stream*2* /logo.gif*********stream*4 Client Server stream&1& HEADERS
49.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee#HTTP/2 Server*Push /index.html***stream*1* /style.css********stream*2* /logo.gif*********stream*4 Client Server stream&1& HEADERS
50.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee#HTTP/2 Server*Push /index.html***stream*1* /style.css********stream*2* /logo.gif*********stream*4 Client Server stream&1& HEADERS stream&2&&&& PROMISE
51.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee#HTTP/2 Server*Push /index.html***stream*1* /style.css********stream*2* /logo.gif*********stream*4 Client Server stream&1& HEADERS stream&2&&&& PROMISE stream&4& PROMISE
52.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee#HTTP/2 Server*Push /index.html***stream*1* /style.css********stream*2* /logo.gif*********stream*4 Client Server stream&1& HEADERS stream&1& DATA stream&2&&&& PROMISE stream&4& PROMISE
53.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee#HTTP/2 Server*Push /index.html***stream*1* /style.css********stream*2* /logo.gif*********stream*4 Client Server stream&1& HEADERS stream&1& DATA stream&2&&&& PROMISE stream&4& PROMISE •
No*JavaScript*API!
54.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 49 @delabassee Header*Compression HPack
55.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 50 @delabassee Upgrade*from*HTTP*1.1 •
HTTP* - Port*80* - HTTP*Upgrade*to*“h2c”*(101*Switching*Protocol)* • HTTPS*(*)* - Application*Layer*Protocol*Negotiation*(ALPN)* - Next*Protocol*Negotiation*(NPN)* (*)*TLS*is*not*mandatory
56.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee51 &Demo?
57.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Agenda Why*HTTP/2?* HTTP/2* HTTP/2*and*Java*SE* HTTP/2*and*Java*EE* Summary
58.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9*Support*for*HTTP/2 • JEP*110* -
http://openjdk.java.net/jeps/110* • Supports*both*HTTP*1.1*and*2* • Easy*to*use*API* • Covers*only*the*most*common*use*cases* • Synchronous*&*Asynchronous 53#HTTP/2
59.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 HttpClient"client"="HttpClient.create()" " """"""""""""""""""""""""""".sslContext(ctx)" "
""""""""""""""""""""""""""".followRedirects(HttpRedirect.ALWAYS)" """""""""""""""""""""""""""""".executorService(…)" " """"""""""""""""""""""""""".build();" HttpRequest.Builder"builder"="client.request(new"URI(target))" """""""""""""""""""""""""""""""""""".body(noBody());" HttpResponse"response"="builder.GET().send();" //"do"something"with"the"response…" 54
60.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 HttpClient"client"="HttpClient.create()" " """"""""""""""""""""""""""".sslContext(ctx)" "
""""""""""""""""""""""""""".followRedirects(HttpRedirect.ALWAYS)" """""""""""""""""""""""""""""".executorService(…)" " """"""""""""""""""""""""""".build();" HttpRequest.Builder"builder"="client.request(new"URI(target))" """""""""""""""""""""""""""""""""""".body(noBody());" HttpResponse"response"="builder.GET().send();" //"do"something"with"the"response…" 54
61.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 HttpClient"client"="HttpClient.create()" " """"""""""""""""""""""""""".sslContext(ctx)" "
""""""""""""""""""""""""""".followRedirects(HttpRedirect.ALWAYS)" """""""""""""""""""""""""""""".executorService(…)" " """"""""""""""""""""""""""".build();" HttpRequest.Builder"builder"="client.request(new"URI(target))" """""""""""""""""""""""""""""""""""".body(noBody());" HttpResponse"response"="builder.GET().send();" //"do"something"with"the"response…" 54
62.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 //"HttpRequest"builder"from"the"default"HttpClient" HttpResponse"response"="HttpRequest.create(new"URI("http://www.abc.be"))" """"""""""""""""""""""""""""""""""".send(HttpRequest.noBody());" String"responseBody"="response.body(HttpResponse.asString());" response"="HttpRequest.create(new"URI("http://www.abc.be"))" """""""""""""""""""""".body(fromString("param1=Abc"))" """""""""""""""""""""".post()A AAAAAAAAAAAAAAAAAAAAAA.send();" … 55
63.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 //"HttpRequest"builder"from"the"default"HttpClient" HttpResponse"response"="HttpRequest.create(new"URI("http://www.abc.be"))" """"""""""""""""""""""""""""""""""".send(HttpRequest.noBody());" String"responseBody"="response.body(HttpResponse.asString());" response"="HttpRequest.create(new"URI("http://www.abc.be"))" """""""""""""""""""""".body(fromString("param1=Abc"))" """""""""""""""""""""".post()A AAAAAAAAAAAAAAAAAAAAAA.send();" … 55
64.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 HttpClient"cl"="HttpClient.create()" """""""""""""""""""""""""".proxy("http",proxAd).proxy("https","proxAd)" """""""""""""""""""""""""".sslContext(ctx)" """""""""""""""""""""""""".build();" CompletableFuture<String>"compFut"="cl.request(uri)" " "
" " " " " " "".body(noBody())" " """"""""""""""""""""""".GET()" " """"""""""""""""""""""".sendAsync()" """""""""""""""""""""""""".thenCompose((HttpResponse"response)"l>"{" """"""""""""""""""""""""""""""""""return"response.bodyAsync(asString());" """"""""""""""""""""""""""});" String"body"="compFut.get(5,"TimeUnit.SECONDS);" … 56
65.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 HttpClient"cl"="HttpClient.create()" """""""""""""""""""""""""".proxy("http",proxAd).proxy("https","proxAd)" """""""""""""""""""""""""".sslContext(ctx)" """""""""""""""""""""""""".build();" CompletableFuture<String>"compFut"="cl.request(uri)" " "
" " " " " " "".body(noBody())" " """"""""""""""""""""""".GET()" " """"""""""""""""""""""".sendAsync()" """""""""""""""""""""""""".thenCompose((HttpResponse"response)"l>"{" """"""""""""""""""""""""""""""""""return"response.bodyAsync(asString());" """"""""""""""""""""""""""});" String"body"="compFut.get(5,"TimeUnit.SECONDS);" … 56
66.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Java*9 HttpClient"cl"="HttpClient.create()" """""""""""""""""""""""""".proxy("http",proxAd).proxy("https","proxAd)" """""""""""""""""""""""""".sslContext(ctx)" """""""""""""""""""""""""".build();" CompletableFuture<String>"compFut"="cl.request(uri)" " "
" " " " " " "".body(noBody())" " """"""""""""""""""""""".GET()" " """"""""""""""""""""""".sendAsync()" """""""""""""""""""""""""".thenCompose((HttpResponse"response)"l>"{" """"""""""""""""""""""""""""""""""return"response.bodyAsync(asString());" """"""""""""""""""""""""""});" String"body"="compFut.get(5,"TimeUnit.SECONDS);" … 56
67.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Agenda Why*HTTP/2?* HTTP/2* HTTP/2*and*Java*SE* HTTP/2*and*Java*EE* Summary
68.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 58 @delabassee •
Request/Response*multiplexing* • Binary*Framing* • Stream*Prioritization* • Server*Push* • Header*Compression* • Upgrade*from*HTTP*1.1* – ALPN* – 101*Switching*Protocols HTTP/2
69.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 59 @delabassee •
Request/Response*Multiplexing* • Binary*Framing* • Stream*Prioritization* • Server*Push* • Header*Compression* • Upgrade*from*HTTP*1.1* – ALPN* – 101*Switching*Protocols Features&to&be&Exposed&in&the&Servlet&API Servlet*4
70.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 60 @delabassee •
Push*resource*to*client*for*a*given*url*and*headers* • May*add*callback*for*completion*or*error*of*a*push* • Not*a*replacement*for*WebSocket Servlet*4.0*T*Server*Push
71.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. PushBuilderAbuilder = baseRequest.getPushBuilder(); builder.addHeader(“X-Pusher",
…); builder.path(aResource) .etag(associated._etag) .lastModified(associated._lastModified) .push(); 61 Server*Push
72.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Agenda Why*HTTP/2?* HTTP/2* HTTP/2*and*Java*SE* HTTP/2*and*Java*EE* Summary
73.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee63 HTTP/2*Features • Binary*Framing*over*single*TCP*connection* •
Request/Response*multiplexing* • Stream*Prioritization* • Server*Push* • Upgrade*from*HTTP*1.1* • Header*Compression* • Preserve*HTTP*semantic* • Flow*Control
74.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee HTTP/2 • Address*the*Limitations*of*HTTP*1.x* -
Improve*ressources*utilization,*performance,*reduce*latency* • “Compatible”*with*HTTP*1.1* - Retain*HTTP*1.1*semantics* - Define*interaction*with*HTTP*1.1* - Undo*your*HTTP*1.1*tricks!!* • “TLS0not0mandatory” 64 Hypertext&Transfer&Protocol&version&2&&&HPACK
75.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee HTTP/2*and*Java • JEP*110*brings*HTTP/2*to*Java*SE* •
Servlet*4.0*brings*HTTP/2*to*Java*EE* - Expose*key*features*to*the*API* • Server*Push* • HTTP*1.1*upgrade* • Timing*TBC! 65 Plans
76.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee HTTP/2*and*Java • JEP*110*brings*HTTP/2*to*Java*SE* •
Servlet*4.0*brings*HTTP/2*to*Java*EE* - Expose*key*features*to*the*API* • Server*Push* • HTTP*1.1*upgrade* • Timing*TBC! 65 Plans
77.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee66 &
78.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee Resources*(and*credits) • http://http2.github.io* •
http://chimera.labs.oreilly.com/books/1230000000545/ch12.html* • http://openjdk.java.net/jeps/110* • https://java.net/projects/servletTspec/ 67
79.
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 68