HTTP/2 comes to Java

David Delabassee
David DelabasseeDevRel - Java Platform Group - Oracle
HTTP/2&comes&to&Java!&
David&Delabassee&
@delabassee&
Oracle
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved.*
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
About*me…
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee
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
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 7 @delabassee
Data*Never*Sleeps*3.0
www.domo.com/blog/2015/08/dataTneverTsleepsT3T0/
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*
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 9 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 10 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 11 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 12 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 13 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 14 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 15 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 16 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 17 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 18 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 19 @delabassee
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 21 @delabassee
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
.&
.&
.&
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*
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 25 @delabassee
Transfer*size
https://developers.google.com/web/fundamentals/performance/optimizingTcontentTefficiency
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
@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*
...
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 28 @delabassee
HTTP*1.1
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 30 @delabassee
File*Concatenation*and*Image*Sprites
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 31 @delabassee
HTTP*1.1
Workaround&=&Domain&Sharding
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…”"/>"
…
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&
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
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”**
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&currently&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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 37 @delabassee
Browsers*support
…&as&of&November&2015
http://caniuse.com/http2*
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
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 40 @delabassee
HTTP/2
Connections,&Streams,&Messages,&Frames
@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
@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
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
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
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>…
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 45 @delabassee
Multiplexing
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
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
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
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
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
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
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
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!
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 49 @delabassee
Header*Compression
HPack
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee51
&Demo?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. @delabassee66
&
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
Copyright*©*2016,*Oracle*and/or*its*affiliates.*All*rights*reserved. 68
1 of 79

Recommended

Java EE 8 - Work in progress by
Java EE 8 - Work in progressJava EE 8 - Work in progress
Java EE 8 - Work in progressDavid Delabassee
2.5K views80 slides
HTTP/2 comes to Java (Dec. 2015 version) by
HTTP/2 comes to Java (Dec. 2015 version)HTTP/2 comes to Java (Dec. 2015 version)
HTTP/2 comes to Java (Dec. 2015 version)David Delabassee
690 views53 slides
Java EE 7 (Lyon JUG & Alpes JUG - March 2014) by
Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)David Delabassee
4.8K views76 slides
Java EE 8 - February 2017 update by
Java EE 8 - February 2017 updateJava EE 8 - February 2017 update
Java EE 8 - February 2017 updateDavid Delabassee
6K views65 slides
Java EE Next by
Java EE NextJava EE Next
Java EE NextDavid Delabassee
2.2K views44 slides
Oracle Database features every developer should know about by
Oracle Database features every developer should know aboutOracle Database features every developer should know about
Oracle Database features every developer should know aboutgvenzl
545 views54 slides

More Related Content

What's hot

Java EE Next - BeJUG JavaOne Afterglow 2016 by
Java EE Next - BeJUG JavaOne Afterglow 2016Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016David Delabassee
433 views26 slides
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! by
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! David Delabassee
1.1K views40 slides
HTML5 based PivotViewer for Visualizing LInked Data by
HTML5 based PivotViewer for Visualizing LInked Data HTML5 based PivotViewer for Visualizing LInked Data
HTML5 based PivotViewer for Visualizing LInked Data Kingsley Uyi Idehen
6.6K views23 slides
Java EE 8 Overview (Japanese) by
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
984 views91 slides
Related OSS Projects - Peter Rowe, Flexera Software by
Related OSS Projects - Peter Rowe, Flexera SoftwareRelated OSS Projects - Peter Rowe, Flexera Software
Related OSS Projects - Peter Rowe, Flexera SoftwareOpenStack
340 views29 slides
Migrating your infrastructure to OpenStack - Avi Miller, Oracle by
Migrating your infrastructure to OpenStack - Avi Miller, OracleMigrating your infrastructure to OpenStack - Avi Miller, Oracle
Migrating your infrastructure to OpenStack - Avi Miller, OracleOpenStack
373 views28 slides

What's hot(20)

Java EE Next - BeJUG JavaOne Afterglow 2016 by David Delabassee
Java EE Next - BeJUG JavaOne Afterglow 2016Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016
David Delabassee433 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! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
David Delabassee1.1K views
HTML5 based PivotViewer for Visualizing LInked Data by Kingsley Uyi Idehen
HTML5 based PivotViewer for Visualizing LInked Data HTML5 based PivotViewer for Visualizing LInked Data
HTML5 based PivotViewer for Visualizing LInked Data
Kingsley Uyi Idehen6.6K views
Java EE 8 Overview (Japanese) by Logico
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
Logico 984 views
Related OSS Projects - Peter Rowe, Flexera Software by OpenStack
Related OSS Projects - Peter Rowe, Flexera SoftwareRelated OSS Projects - Peter Rowe, Flexera Software
Related OSS Projects - Peter Rowe, Flexera Software
OpenStack340 views
Migrating your infrastructure to OpenStack - Avi Miller, Oracle by OpenStack
Migrating your infrastructure to OpenStack - Avi Miller, OracleMigrating your infrastructure to OpenStack - Avi Miller, Oracle
Migrating your infrastructure to OpenStack - Avi Miller, Oracle
OpenStack373 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 GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Arun Gupta23K views
Another compilation method in java - AOT (Ahead of Time) compilation by Logico
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
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 DevelopersTop 10 SQL Performance tips & tricks for Java Developers
Top 10 SQL Performance tips & tricks for Java Developers
gvenzl659 views
Exploiting Linked (Open) Data via Microsoft Access by Kingsley Uyi Idehen
Exploiting Linked (Open) Data via Microsoft AccessExploiting Linked (Open) Data via Microsoft Access
Exploiting Linked (Open) Data via Microsoft Access
Kingsley Uyi Idehen3.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 ODBCUsing SAP Crystal Reports as a Linked (Open) Data Front-End via ODBC
Using SAP Crystal Reports as a Linked (Open) Data Front-End via ODBC
Kingsley Uyi Idehen3.5K views
Getting Started: Developing Tropo Applications by Cisco DevNet
Getting Started: Developing Tropo ApplicationsGetting Started: Developing Tropo Applications
Getting Started: Developing Tropo Applications
Cisco DevNet323 views
Supercharge your Code to get optimal Database Performance by gvenzl
Supercharge your Code to get optimal Database PerformanceSupercharge your Code to get optimal Database Performance
Supercharge your Code to get optimal Database Performance
gvenzl501 views
Virtuoso ODBC Driver Configuration & Usage (Windows) by Kingsley Uyi Idehen
Virtuoso ODBC Driver Configuration & Usage (Windows)Virtuoso ODBC Driver Configuration & Usage (Windows)
Virtuoso ODBC Driver Configuration & Usage (Windows)
Kingsley Uyi Idehen6.2K views
Nonblocking Database Access in Helidon SE by Dmitry Kornilov
Nonblocking Database Access in Helidon SENonblocking Database Access in Helidon SE
Nonblocking Database Access in Helidon SE
Dmitry Kornilov866 views
Adopt-a-JSR for JSON Processing 1.1, JSR 374 by Heather VanCura
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Heather VanCura6.5K views
Virtuoso ODBC Driver Configuration & Usage (Mac OS X) by Kingsley Uyi Idehen
Virtuoso ODBC Driver Configuration & Usage (Mac OS X)Virtuoso ODBC Driver Configuration & Usage (Mac OS X)
Virtuoso ODBC Driver Configuration & Usage (Mac OS X)
Kingsley Uyi Idehen34.9K views
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2) by Taewan Kim
Oracle APEX 기초 워크샵 - 실습 가이드 문서:  Part 2 (2/2)Oracle APEX 기초 워크샵 - 실습 가이드 문서:  Part 2 (2/2)
Oracle APEX 기초 워크샵 - 실습 가이드 문서: Part 2 (2/2)
Taewan Kim1.2K views
Cisco Spark & Tropo API Workshop by Cisco DevNet
Cisco Spark & Tropo API WorkshopCisco Spark & Tropo API Workshop
Cisco Spark & Tropo API Workshop
Cisco DevNet1.5K views
MySQL Tech Café #8: MySQL 8.0 for Python Developers by Frederic Descamps
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python Developers
Frederic Descamps753 views

Similar to HTTP/2 comes to Java

Oracle Keynote from JMagghreb 2014 by
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Simon Ritter
693 views39 slides
Apex day 1.0 oracle apex 5.0 patrick wolf by
Apex day 1.0 oracle apex 5.0 patrick wolfApex day 1.0 oracle apex 5.0 patrick wolf
Apex day 1.0 oracle apex 5.0 patrick wolfAPEX Solutions - Natural Intelligence
592 views22 slides
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!? by
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?Ryusuke Kajiyama
1.1K views33 slides
GTRI.com Splunk for Vmware APP by
GTRI.com Splunk for Vmware APPGTRI.com Splunk for Vmware APP
GTRI.com Splunk for Vmware APPZivaro Inc
635 views21 slides
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7 by
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7Ryusuke Kajiyama
1.3K views64 slides
Oracle RAC - A Safe Investment into the Future of Your IT by
Oracle RAC - A Safe Investment into the Future of Your ITOracle RAC - A Safe Investment into the Future of Your IT
Oracle RAC - A Safe Investment into the Future of Your ITMarkus Michalewicz
1.4K views40 slides

Similar to HTTP/2 comes to Java(20)

Oracle Keynote from JMagghreb 2014 by Simon Ritter
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014
Simon Ritter693 views
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!? by Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL as document database!?
Ryusuke Kajiyama1.1K views
GTRI.com Splunk for Vmware APP by Zivaro Inc
GTRI.com Splunk for Vmware APPGTRI.com Splunk for Vmware APP
GTRI.com Splunk for Vmware APP
Zivaro Inc635 views
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7 by Ryusuke Kajiyama
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
[db tech showcase 2015 Sapporo HOKKAIDO] MySQL 5.7
Ryusuke Kajiyama1.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 ITOracle RAC - A Safe Investment into the Future of Your IT
Oracle RAC - A Safe Investment into the Future of Your IT
Markus Michalewicz1.4K views
3° Sessione Oracle - CRUI: Mobile&Conversational Interface by Jürgen Ambrosi
3° Sessione Oracle - CRUI: Mobile&Conversational Interface3° Sessione Oracle - CRUI: Mobile&Conversational Interface
3° Sessione Oracle - CRUI: Mobile&Conversational Interface
Jürgen Ambrosi689 views
Tecnologias Oracle em Docker Containers On-premise e na Nuvem by Bruno Borges
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Bruno Borges1.6K views
9thMeetup-20190316-CI/CD 기반의 Microservice 배포 by DongHee Lee
9thMeetup-20190316-CI/CD 기반의 Microservice 배포9thMeetup-20190316-CI/CD 기반의 Microservice 배포
9thMeetup-20190316-CI/CD 기반의 Microservice 배포
DongHee Lee130 views
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート by Ryusuke Kajiyama
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート
Ryusuke Kajiyama1.1K views
Develop Oracle Virtual Box and deploy to Cloud by Inprise Group
Develop Oracle Virtual Box and deploy to CloudDevelop Oracle Virtual Box and deploy to Cloud
Develop Oracle Virtual Box and deploy to Cloud
Inprise Group1.5K views
TDC2018SP | Trilha Arq Java - Crie arquiteturas escalaveis, multi-language e ... by tdc-globalcode
TDC2018SP | Trilha Arq Java - Crie arquiteturas escalaveis, multi-language e ...TDC2018SP | Trilha Arq Java - Crie arquiteturas escalaveis, multi-language e ...
TDC2018SP | Trilha Arq Java - Crie arquiteturas escalaveis, multi-language e ...
tdc-globalcode68 views
Oracle GoldenGate on Docker by Bobby Curtis
Oracle GoldenGate on DockerOracle GoldenGate on Docker
Oracle GoldenGate on Docker
Bobby Curtis2.6K views
Hybrid mobile development with Oracle JET by Rohit Dhamija
Hybrid mobile development with Oracle JETHybrid mobile development with Oracle JET
Hybrid mobile development with Oracle JET
Rohit Dhamija706 views

More from David Delabassee

JVMs in Containers - Best Practices by
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best PracticesDavid Delabassee
726 views37 slides
JVMs in Containers by
JVMs in ContainersJVMs in Containers
JVMs in ContainersDavid Delabassee
1.3K views38 slides
Serverless Java Challenges & Triumphs by
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsDavid Delabassee
1.2K views46 slides
Serverless Java - Challenges and Triumphs by
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsDavid Delabassee
282 views41 slides
Randstad Docker meetup - Serverless by
Randstad Docker meetup - ServerlessRandstad Docker meetup - Serverless
Randstad Docker meetup - ServerlessDavid Delabassee
322 views37 slides
Java Serverless in Action - Voxxed Banff by
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffDavid Delabassee
232 views22 slides

More from David Delabassee(20)

Serverless Java Challenges & Triumphs by David Delabassee
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
David Delabassee1.2K views
Serverless Java - Challenges and Triumphs by David Delabassee
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
David Delabassee282 views
Java Serverless in Action - Voxxed Banff by David Delabassee
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed Banff
David Delabassee232 views
EJB and CDI - Alignment and Strategy by David Delabassee
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and Strategy
David Delabassee31.9K views
Java EE 8 - What’s new on the Web front by David Delabassee
Java EE 8 - What’s new on the Web frontJava EE 8 - What’s new on the Web front
Java EE 8 - What’s new on the Web front
David Delabassee960 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.0Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee1.8K views
Java EE 8 - An instant snapshot by David Delabassee
Java EE 8 - An instant snapshot Java EE 8 - An instant snapshot
Java EE 8 - An instant snapshot
David Delabassee10.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 YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
David Delabassee13.8K views

Recently uploaded

𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 by
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲Infosec train
7 views6 slides
Is Entireweb better than Google by
Is Entireweb better than GoogleIs Entireweb better than Google
Is Entireweb better than Googlesebastianthomasbejan
10 views1 slide
DU Series - Day 4.pptx by
DU Series - Day 4.pptxDU Series - Day 4.pptx
DU Series - Day 4.pptxUiPathCommunity
94 views28 slides
Serverless cloud architecture patterns by
Serverless cloud architecture patternsServerless cloud architecture patterns
Serverless cloud architecture patternsJimmy Dahlqvist
17 views52 slides
google forms survey (1).pptx by
google forms survey (1).pptxgoogle forms survey (1).pptx
google forms survey (1).pptxMollyBrown86
14 views10 slides
AI Powered event-driven translation bot by
AI Powered event-driven translation botAI Powered event-driven translation bot
AI Powered event-driven translation botJimmy Dahlqvist
16 views31 slides

Recently uploaded(20)

𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 by Infosec train
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
Infosec train7 views
Serverless cloud architecture patterns by Jimmy Dahlqvist
Serverless cloud architecture patternsServerless cloud architecture patterns
Serverless cloud architecture patterns
Jimmy Dahlqvist17 views
google forms survey (1).pptx by MollyBrown86
google forms survey (1).pptxgoogle forms survey (1).pptx
google forms survey (1).pptx
MollyBrown8614 views
AI Powered event-driven translation bot by Jimmy Dahlqvist
AI Powered event-driven translation botAI Powered event-driven translation bot
AI Powered event-driven translation bot
Jimmy Dahlqvist16 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 emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat85 views
UiPath Document Understanding_Day 3.pptx by UiPathCommunity
UiPath Document Understanding_Day 3.pptxUiPath Document Understanding_Day 3.pptx
UiPath Document Understanding_Day 3.pptx
UiPathCommunity95 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.pdfIGF UA - Dialog with I_ organisations - Alena Muavska RIPE NCC.pdf
IGF UA - Dialog with I_ organisations - Alena Muavska RIPE NCC.pdf
RIPE NCC15 views
Existing documentaries (1).docx by MollyBrown86
Existing documentaries (1).docxExisting documentaries (1).docx
Existing documentaries (1).docx
MollyBrown8613 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC124 views

HTTP/2 comes to Java