SlideShare a Scribd company logo
Submit Search
Upload
HTTP/2 comes to Java (Dec. 2015 version)
Report
Share
David Delabassee
DevRel - Java Platform Group - Oracle
Follow
•
2 likes
•
690 views
1
of
53
HTTP/2 comes to Java (Dec. 2015 version)
•
2 likes
•
690 views
Report
Share
Download Now
Download to read offline
Software
Latest iteration of my HTTP/2 deck, presented at JCConf (Taipei-Taiwan) end of 2015
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 by
HTTP/2 comes to Java
David Delabassee
5.9K views
•
79 slides
Java EE 8 - February 2017 update by
Java EE 8 - February 2017 update
David Delabassee
6K views
•
65 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
Oracle Database features every developer should know about by
Oracle Database features every developer should know about
gvenzl
545 views
•
54 slides
Data Management in a Microservices World by
Data Management in a Microservices World
gvenzl
1.7K views
•
111 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 Embedded у вас дома by
Java Embedded у вас дома
Diana Dymolazova
389 views
•
44 slides
DevConf.CZ 2020 @ Brno, Czech Republic : WebAuthn support for keycloak by
DevConf.CZ 2020 @ Brno, Czech Republic : WebAuthn support for keycloak
Hitachi, Ltd. OSS Solution Center.
527 views
•
23 slides
Nonblocking Database Access in Helidon SE by
Nonblocking Database Access in Helidon SE
Dmitry Kornilov
866 views
•
29 slides
Another compilation method in java - AOT (Ahead of Time) compilation by
Another compilation method in java - AOT (Ahead of Time) compilation
Logico
3.6K views
•
34 slides
Java EE 8 Overview (Japanese) by
Java EE 8 Overview (Japanese)
Logico
984 views
•
91 slides
What's hot
(7)
Java EE Next - BeJUG JavaOne Afterglow 2016 by David Delabassee
Java EE Next - BeJUG JavaOne Afterglow 2016
David Delabassee
•
433 views
Java Embedded у вас дома by Diana Dymolazova
Java Embedded у вас дома
Diana Dymolazova
•
389 views
DevConf.CZ 2020 @ Brno, Czech Republic : WebAuthn support for keycloak by Hitachi, Ltd. OSS Solution Center.
DevConf.CZ 2020 @ Brno, Czech Republic : WebAuthn support for keycloak
Hitachi, Ltd. OSS Solution Center.
•
527 views
Nonblocking Database Access in Helidon SE by Dmitry Kornilov
Nonblocking Database Access in Helidon SE
Dmitry Kornilov
•
866 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
Java EE 8 Overview (Japanese) by Logico
Java EE 8 Overview (Japanese)
Logico
•
984 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
Similar to HTTP/2 comes to Java (Dec. 2015 version)
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
Building beacon-enabled apps with Oracle MCS by
Building beacon-enabled apps with Oracle MCS
Steven Davelaar
1.8K views
•
59 slides
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes by
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes
Chris Saxon
201 views
•
27 slides
London Java Community (LJC) Open Meeting Keynote - Nov 2015 by
London Java Community (LJC) Open Meeting Keynote - Nov 2015
Steve Elliott
293 views
•
34 slides
9thMeetup-20190316-CI/CD 기반의 Microservice 배포 by
9thMeetup-20190316-CI/CD 기반의 Microservice 배포
DongHee Lee
130 views
•
22 slides
Similar to HTTP/2 comes to Java (Dec. 2015 version)
(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
Building beacon-enabled apps with Oracle MCS by Steven Davelaar
Building beacon-enabled apps with Oracle MCS
Steven Davelaar
•
1.8K views
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes by Chris Saxon
Using Edition-Based Redefinition for Zero Downtime PL/SQL Changes
Chris Saxon
•
201 views
London Java Community (LJC) Open Meeting Keynote - Nov 2015 by Steve Elliott
London Java Community (LJC) Open Meeting Keynote - Nov 2015
Steve Elliott
•
293 views
9thMeetup-20190316-CI/CD 기반의 Microservice 배포 by DongHee Lee
9thMeetup-20190316-CI/CD 기반의 Microservice 배포
DongHee Lee
•
130 views
GTRI.com Splunk for Vmware APP by Zivaro Inc
GTRI.com Splunk for Vmware APP
Zivaro Inc
•
635 views
Oracle cmg15 by Kellyn Pot'Vin-Gorman
Oracle cmg15
Kellyn Pot'Vin-Gorman
•
553 views
OOW15 - EBS Certification and Roadmap by vasuballa
OOW15 - EBS Certification and Roadmap
vasuballa
•
1.6K views
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu... by Jérôme Petazzoni
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Jérôme Petazzoni
•
10.9K views
Using Oracle Real Application Clusters (RAC) in Database as a Service by Jean-Philippe PINTE
Using Oracle Real Application Clusters (RAC) in Database as a Service
Jean-Philippe PINTE
•
760 views
DevOps - Developer Cloud Service Demo by Mee Nam Lee
DevOps - Developer Cloud Service Demo
Mee Nam Lee
•
233 views
Application Development with Oracle Database by gvenzl
Application Development with Oracle Database
gvenzl
•
3.3K views
OOW16 - Oracle E-Business Suite: Technology Certification Primer and Roadmap ... by vasuballa
OOW16 - Oracle E-Business Suite: Technology Certification Primer and Roadmap ...
vasuballa
•
820 views
CA World 2015 Using Docker and Containers to create Bespoke Systems Under Test by Ian Kelly
CA World 2015 Using Docker and Containers to create Bespoke Systems Under Test
Ian Kelly
•
214 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
Building Cloud-Native Applications with Helidon by Dmitry Kornilov
Building Cloud-Native Applications with Helidon
Dmitry Kornilov
•
961 views
Oracle WebLogic Server 12.2.1 Do More with Less by Ed Burns
Oracle WebLogic Server 12.2.1 Do More with Less
Ed Burns
•
1.5K 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
No sql from the web’s favourite relational database MySQL by Mark Swarbrick
No sql from the web’s favourite relational database MySQL
Mark Swarbrick
•
261 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
ADDO_2022_CICID_Tom_Halpin.pdf by
ADDO_2022_CICID_Tom_Halpin.pdf
TomHalpin9
5 views
•
33 slides
predicting-m3-devopsconMunich-2023-v2.pptx by
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app
11 views
•
33 slides
tecnologia18.docx by
tecnologia18.docx
nosi6702
5 views
•
5 slides
Top-5-production-devconMunich-2023.pptx by
Top-5-production-devconMunich-2023.pptx
Tier1 app
9 views
•
40 slides
Agile 101 by
Agile 101
John Valentino
10 views
•
20 slides
How to build dyanmic dashboards and ensure they always work by
How to build dyanmic dashboards and ensure they always work
Wiiisdom
14 views
•
13 slides
Recently uploaded
(20)
ADDO_2022_CICID_Tom_Halpin.pdf by TomHalpin9
ADDO_2022_CICID_Tom_Halpin.pdf
TomHalpin9
•
5 views
predicting-m3-devopsconMunich-2023-v2.pptx by Tier1 app
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app
•
11 views
tecnologia18.docx by nosi6702
tecnologia18.docx
nosi6702
•
5 views
Top-5-production-devconMunich-2023.pptx by Tier1 app
Top-5-production-devconMunich-2023.pptx
Tier1 app
•
9 views
Agile 101 by John Valentino
Agile 101
John Valentino
•
10 views
How to build dyanmic dashboards and ensure they always work by Wiiisdom
How to build dyanmic dashboards and ensure they always work
Wiiisdom
•
14 views
360 graden fabriek by info33492
360 graden fabriek
info33492
•
162 views
predicting-m3-devopsconMunich-2023.pptx by Tier1 app
predicting-m3-devopsconMunich-2023.pptx
Tier1 app
•
8 views
Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski
•
13 views
The Era of Large Language Models.pptx by AbdulVahedShaik
The Era of Large Language Models.pptx
AbdulVahedShaik
•
7 views
Introduction to Git Source Control by John Valentino
Introduction to Git Source Control
John Valentino
•
7 views
Introduction to Gradle by John Valentino
Introduction to Gradle
John Valentino
•
5 views
Programming Field by thehardtechnology
Programming Field
thehardtechnology
•
6 views
Bootstrapping vs Venture Capital.pptx by Zeljko Svedic
Bootstrapping vs Venture Capital.pptx
Zeljko Svedic
•
15 views
Electronic AWB - Electronic Air Waybill by Freightoscope
Electronic AWB - Electronic Air Waybill
Freightoscope
•
5 views
AI and Ml presentation .pptx by FayazAli87
AI and Ml presentation .pptx
FayazAli87
•
14 views
Transport Management System - Shipment & Container Tracking by Freightoscope
Transport Management System - Shipment & Container Tracking
Freightoscope
•
5 views
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... by TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin9
•
6 views
What is API by artembondar5
What is API
artembondar5
•
12 views
Automated Testing of Microsoft Power BI Reports by RTTS
Automated Testing of Microsoft Power BI Reports
RTTS
•
8 views
HTTP/2 comes to Java (Dec. 2015 version)
1.
HTTP/2&comes&to&Java!& JCConf&Taiwan&2015 David&Delabassee& @delabassee& Oracle Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* 1
2.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
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*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 3
4.
Copyright*©*2015,*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
5.
Copyright*©*2015,*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
6.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 6 @delabassee Data*Never*Sleeps*2.0 https://www.domo.com/learn/dataRneverRsleepsR2
7.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 7 @delabassee HTTP*1.x 1991*
1996* 1999* 2009* 2015* HTTP/0.9* HTTP/1.0* HTTP/1.1* SPDY* HTTP/2.0*
8.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 8 @delabassee
9.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 9 @delabassee
10.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 10 @delabassee
11.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 11 @delabassee
12.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 13 @delabassee Today index.html style1.css style2.css .& .& .& script1.js script9.js pic1.jpg pic8.jpg .& .& .& photo1.png photo2.png .& .& .&
13.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 14 @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*
14.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 15 @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/howRoneRsecondRcouldRcostRamazonR16RbillionRsales* (2)*RadView*Spring*2015*State*of*the*Union:*Ecommerce*Page*Speed*&*Web*Performance
15.
@delabasseeCopyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. HTTP*1.1 HeadCofCLine&blocking 16 Client Server index.html index.html style1.css* script.js* ... style1.css* script.js* ...
16.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 17 @delabassee HTTP*1.1
17.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 18 @delabassee File*Concatenation*and*Image*Sprites •
Modern*web*page*consists*of*+90*resources*fetched*from*15*distinct* hosts*(http://httparchive.org)* • TCP*Efficiency*Improves*with*Larger*Files* • Shoving*more*than*one*logical*file*into*one*physical*file
18.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 19 @delabassee File*Concatenation*and*Image*Sprites
19.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 20 @delabassee HTTP*1.1 Workaround&C&Domain&Sharding
20.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 21 @delabassee Asset*inlining …* <img"src="data:image/gif;base64,R0lGODlhEAAOexs3eeALMAAOazToeHh0tLS/ 7LZv0jvb29tf3Ubge8WSLrhf3kdbW1mxsjkhfkjfhGHhcjGDSHJUYgJvhgtyrHgfGfHy t56HGfGH56ge8WSLf6GGHhfkjfhhfkjfhpBREzxvt6QAA4lsjkhfkjfhdxwqBnuIoYty GhBKoOjJj6GGHvvhdsbxus38GV3pBREzxvt6QAA4lsjkhfkjfhdxwqBnuIoYtyGhBKoO jJj6GGHvvhdsbxus38GV3vvhdsbxusbasbPmfyH5BAAAjAAAALAAfhGHhcjAAAAQAA4l sjkhfkjfhGHhcjGDSHJUYgJvhgtyrHgfhfkjfhpBREzxvt6QAA4lsjkhfkjfhdxwqBnu IoYtyGhBKoOjJj6GGHvvhdsbxus38GV3GfHyt56HGfGH56ge8WsjkhfkjfhGHhcjGDSH JUYgJvhgtyrHgfGfHyt56HGfGH56gebxus38G8WSLf6GGHvvhdsbxusbaSLf6GGHvvhd sbxusbaOiQA4lsjkhfkjf4lsjkhfkjf4lsjbxus38GkhfkjfhfkjfhpBREzxvt6QAA4l sjkhfkjfhdxwqBnuIoYtyGhBKoOjJj6GGHvvhdsbxus38GV3DcPjjBceXsplojj…”"/>" …
21.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 22 @delabassee •
HTTP*uses*TCP*poorly* - HTTP:*short*and*bursty*flows*Vs.*TCP:*optimized*for*longRlived*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&
22.
Copyright*©*2015,*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
23.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee HTTP/2 • Jan*2015* •
Feb*2015* • May*2015 24 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”**
24.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 25 @delabassee Browsers*support …&as&of&November&2015 http://caniuse.com/http2*
25.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee26 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
26.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved.* @delabassee26 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
27.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 27 @delabassee HTTP/2 •
Fully*biRdirectional* – Connection A*TCP*socket* – Message* A*logical*HTTP*message,*such*as*a*request*or*a*response** – Stream A*biRdirectional*“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
28.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 28 @delabassee HTTP/2 Connections,&Streams,&Messages,&Frames
29.
@delabasseeCopyright*©*2015,*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 29 POST*/upload*HTTP/1.1* Host:*www.test.com* ContentRType:*application/json* ContentRLength:*15* {“name”:“duke”} HTTP&1.1 HTTP/2 HEADERS&frame DATA&frame
30.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 30 @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
31.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 31 @delabassee HTTP/2*Binary*Framing HTTP/1.1*200*OK ContentRLength:*84 ContentRType:*text/html <!doctype*html>* <head>* <meta*charset=utfR8>* </head>* <body>Hello*World</body>* </html> Example&2 HEADERS ****R*END_STREAM ****+*END_HEADERS ********:status:*200 ********contentRlength:*84 ********contentRtype:*text/html DATA ****+*END_STREAM <!doctype*html>…
32.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 32 @delabassee Multiplexing
33.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 33 @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
34.
Copyright*©*2015,*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!
35.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 35 @delabassee Header*Compression HPack
36.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 36 @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
37.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee37 &Demo?
38.
Copyright*©*2015,*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
39.
Copyright*©*2015,*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 39#HTTP/2
40.
Copyright*©*2015,*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…" 40
41.
Copyright*©*2015,*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();" … 41
42.
Copyright*©*2015,*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);" … 42
43.
Copyright*©*2015,*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
44.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 44 @delabassee •
Request/Response*multiplexing* • Binary*Framing* • Stream*Prioritization* • Server*Push* • Header*Compression* • Upgrade*from*HTTP*1.1* – ALPN* – 101*Switching*Protocols HTTP/2
45.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 45 @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
46.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 46 @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*R*Server*Push
47.
Copyright*©*2015,*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(); 47 Server*Push
48.
Copyright*©*2015,*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
49.
Copyright*©*2015,*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” 49 Hypertext&Transfer&Protocol&version&2&&&HPACK
50.
Copyright*©*2015,*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! 50 Plans
51.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee51 &
52.
Copyright*©*2015,*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* • https://java.net/projects/servletRspec/* • http://glassfish.org/adoptajsr* • http://openjdk.java.net/jeps/110 52
53.
Copyright*©*2015,*Oracle*and/or*its*affiliates.*All*rights*reserved. 53