51

CON5898 What Servlet 4.0 Means To You

Embed Size (px)

DESCRIPTION

Shing Wai Chan and Ed Burns present their vision for Servlet 4.0, which brings HTTP 2.0 to the Java EE platform

Citation preview

Page 1: CON5898 What Servlet 4.0 Means To You
Page 2: CON5898 What Servlet 4.0 Means To You

HTTP  2  Comes  to  Java  What  Servlet  4.0  Means  to  You  

Ed  Burns  and  Shing  Wai  Chan  Java  EE  Specifica=on  Team  Oracle  

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Page 3: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Safe  Harbor  Statement  The  following  is  intended  to  outline  our  general  product  direc=on.  It  is  intended  for  informa=on  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver  any  material,  code,  or  func=onality,  and  should  not  be  relied  upon  in  making  purchasing  decisions.  The  development,  release,  and  =ming  of  any  features  or  func=onality  described  for  Oracle’s  products  remains  at  the  sole  discre=on  of  Oracle.  

3  

Page 4: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Our  Plan  for  Your  Time  Investment  

Why  HTTP  2?  

HTTP  2  Big  Features  

How  Servlet  Might  Expose  These  Features  

Java  SE  9  Support  for  HTTP  2  

Summary  and  Current  Status  

1  

2  

3  

4  

5  

S  4  

Page 5: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Our  Plan  for  Your  Time  Investment  

Why  HTTP  2?  

HTTP  2  Big  Features  

How  Servlet  Might  Expose  These  Features  

Java  SE  9  Support  for  HTTP  2  

Summary  and  Current  Status  

1  

2  

3  

4  

5  

S  5  

Page 6: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Why  HTTP  2?  

   

A  Real  Life  Example  

S  

index.html  

style1.css  

style2.css  .  .  .    

script1.js  

script9.js  

pic1.jpg  

pic8.jpg  

.  

.  

.    

photo1.png  

photo2.png  

.  

.  

.    

Page 7: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Why  HTTP  2?  

• HTTP  Pipelining  • Head-­‐of-­‐Line  blocking  

Problems  in  HTTP  1.1  

S  

style1.css  style2.css  

Client   Server  

index.html  

index.html  

style1.css  style2.css  script1.js  

.  

.  

.  

script2.js  

.  

.  

.  

script1.js  script2.js  

Page 8: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Why  HTTP  2?  

•  Inefficient  use  of  TCP  sockets    

Problems  in  HTTP  1.1  

S  

Client   Server  Client   Server  

Client   Server  

Client   Server  

Client   Server  

Client   Server  

Page 9: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Why  HTTP  2?  

• Much  of  what  we  do  in  web-­‐apps  is  a  hack  to  work  around  shortcomings  in  HTTP  1.1  – File  concatena=on  and  image  sprites  – Domain  sharding  – Inlined  assets  

 

What  is  an  opEmizaEon?  

E  9  

Page 10: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

File  Concatena=on  and  Image  Sprites  TCP  Efficiency  Improves  with  Larger  Files  

E  10  

Page 11: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

File  Concatena=on  and  Image  Sprites  TCP  Efficiency  Improves  with  Larger  Files  

E  11  

• Modern  web  page  now  consists  of  more  than  90  resources  fetched  from  15  dis=nct  hosts  

•  Solu=on:  – Just  work  around  it  by  shoving  more  than  one  logical  file  into  one  physical  file.  – Seminal  ar=cle:  A  List  Apart  hPp://alistapart.com/arEcle/sprites  – Useful  tool:  SpritePad  hPp://spritepad.wearekiss.com/  

Page 12: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

File  Concatena=on  and  Image  Sprites  TCP  Efficiency  Improves  with  Larger  Files  

E  12  

.ic-AerospaceAndDefense-wht-on-gray, .ic-AerospaceAndDefense-wht-on-red, .ic-Airline-wht-on-gray, .ic-Airline-wht-on-red{

background: url(sprites.png) no-repeat; } .ic-AerospaceAndDefense-wht-on-gray{

background-position: 0 0; width: 80px; height: 80px;

} .ic-AerospaceAndDefense-wht-on-red{

background-position: -81px 0; width: 80px; height: 80px;

} .ic-Airline-wht-on-gray{

background-position: 0 -80px ; width: 80px; height: 80px;

} .ic-Airline-wht-on-red{

background-position: -81px -79px ; width: 80px; height: 80px;

}

Page 13: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Domain  Sharding  Split  page  resources  across  several  hosts  to  work  around  browser  limits  

13  

Page 14: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Inlined  Assets  

• data  URLs  •  <img  src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/  /ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4…"  />  

 

Base64  Encoding  Will  Never  Die  

E  14  

Page 15: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Our  Plan  for  Your  Time  Investment  

Why  HTTP  2?  

HTTP  2  Big  Features  

How  Servlet  Might  Expose  These  Features  

Java  SE  9  Support  for  HTTP  2  

Summary  and  Current  Status  

1  

2  

3  

4  

5  

E  15  

Page 16: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  Request/Response  mul=plexing  

•  Binary  Framing  

•  Stream  Priori=za=on  

•  Server  Push  

•  Header  Compression  

•  Upgrade  from  HTTP  1.1  •  ALPN  (or  NPN)  •  101  Switching  Protocols  

16  

HTTP/2  Big  Ticket  Feature  Review  

E  

Page 17: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Request  Response  Mul=plexing  

•  Fully  bi-­‐direc=onal  •  Enabled  by  defining  some  terms  

– Connec&on  A  TCP  socket  

– Stream  A  “channel”  within  a  connec=on  

– Message    A  logical  message,  such  as  a  request  or  a  response  

– Frame  The  smallest  unit  of  communica=on  in  HTTP/2.  

17  

Lets  you  do  more  things  with  a  single  TCP  connecEon    

S  

Page 18: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Request  Response  Mul=plexing  

18  

ConnecEons,  Streams,  Messages,  Frames    

S  

Page 19: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Request  Response  Mul=plexing  

• Once  you  break  the  communica=on  down  into  frames,  you  can  interweave  the  logical  streams  over  a  single  TCP  connec=on.  

•  Yet  another  idea  from  the  1960s  is  new  again.  

19  

ConnecEons,  Streams,  Messages,  Frames    

S  

Page 20: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Binary  Framing  

•  Solves  Head-­‐Of-­‐Line  (HOL)  blocking  problem            

 •  Type  field  can  be  DATA,  HEADERS,  PRIORITY,  RST_STREAM,  SETTINGS,  PUSH_PROMISE,  PING,  GOAWAY,  WINDOW_UPDATE,  CONTINUATION  

20  

Enabled  by  dumping  newline  delimited  ASCII    

S  

Length  (24)  

Type  (8)   Flags  (8)  

R Stream  IdenEfier  (31)  

Frame  Payload  (0  …)  

Page 21: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Binary  Framing  

GET  /index.html  HTTP/1.1  Host:  example.com  Accept:  text/html  

21  

Example  1    

S  

HEADERS          +  END_STREAM          +  END_HEADERS                  :method:  GET                  :scheme:  htp                  :path:  /index.html                  :authority:  example.org                  accept:  text/html  

Page 22: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Binary  Framing  

HTTP/1.1  200  OK  Content-­‐Length:  11  Content-­‐Type:  text/html    Hello  World  

22  

Example  2    

S  

HEADERS          -­‐  END_STREAM          +  END_HEADERS                  :status:  200                  content-­‐length:  11                  content-­‐type:  text/html    DATA          +  END_STREAM  Hello  World  

Page 23: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Stream  Priori=za=on  

•  Stream  Dependency  in  HEADERS  Frame  • PRIORITY  frame  type  • An  addi=onal  40  bytes  

– Stream  id  (31)  – Weight  (8):  [1,  256]    – Exclusive  bit  (1)  

• Only  an  advice    

23  S  

A  

B   C  

4   12  

A  

B   C  D  

4   16   12  

exclusive  =  0  

A  

B   C  

D  

4   12  

16  

exclusive  =  1  

Page 24: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Server  Push  

•  Eliminates  the  need  for  resource  inlining.  •  Lets  the  server  populate  the  browser’s  cache  in  advance  of  the  browser  asking  for  the  resource  to  put  in  the  cache.  

• No  corresponding  JavaScript  API,  but  can  be  combined  with  SSE  – Server  pushes  stuff  into  the  browser’s  cache.  – Server  uses  SSE  to  tell  the  browser  to  go  fetch  it  (but  we  know  it’s  already  in  the  browser’s  cache).  

24  E  

Page 25: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Header  Compression  

• Observa=on:  most  of  the  headers  are  the  same  in  a  given  stream  – Host:  Accept:  user-­‐agent:  etc.  

• Why  send  them  every  =me?  • Have  the  server  and  the  client  keep  tables  of  headers,  then  just  send  references  and  updates  to  the  tables.  

25  

Known  as  HPACK  

E  

Page 26: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP/2  Upgrade  from  HTTP  1.1  

• Not  secure  – We  have  to  use  port  80  – Use  exis=ng  101  Switching  Protocols    from  HTTP  1.1  

•  Secure  – Next  Protocol  Nego=a=on  (NPN)  – Applica=on  Layer  Protocol  Nego=a=on  

26  

Secure  or  not-­‐secure?    

E  

Page 27: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Our  Plan  for  Your  Time  Investment  

Why  HTTP  2?  

HTTP  2  Big  Features  

How  Servlet  Might  Expose  These  Features  

Java  SE  9  Support  for  HTTP  2  

Summary  and  Current  Status  

1  

2  

3  

4  

5  

E  27  

Page 28: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  Exis=ng  API  is  designed  for  One  Request  ==  One  Response.  • HTTP/2  destroys  this  assump=on.  •  It  will  be  challenging  to  do  jus=ce  to  the  new  reality  of  One  Request  ==  One  or  More  Responses.      

• We  must  not  simply  bolt  the  “One  or  More  Responses”  concept  onto  some  convenient  part  of  the  exis=ng  API.  

28  

Challenges  in  Exposing  HTTP/2  Features  in  Servlet  API    

Servlet  4.0  Big  Ticket  New  Features  

S  

Page 29: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

• Request/Response  mul=plexing  • Binary  Framing  •  Stream  Priori=za=on  •  Server  Push  • Header  Compression  • Upgrade  from  HTTP  1.1  

– ALPN  or  (NPN)  – 101  Switching  Protocols  

29  

HTTP/2  Features  PotenEally  Exposed  in  Servlet  API    

Servlet  4.0  Big  Ticket  New  Features  

S  

Page 30: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

• Add  method    HttpServletRequest  and  HttpServletResponse  – int  getStreamId()  

30  

HTTP/2  Features  PotenEally  Exposed  in  Servlet  API    

Servlet  4.0  Big  Ticket  New  Features  

S  

Page 31: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

• Add  a  new  class  Priority  – boolean  exclusive  – int  streamId  – int  weight  

• Add  method  to  HttpServletRequest  – Priority  getPriority()  

• Add  methods  to  HttpServletResponse  – Priority  getPriority()  – void  setPriority(Priority  p)  

31  

Stream  PrioriEzaEon    

Servlet  4.0  Big  Ticket  New  Features  

S  

Page 32: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

• Push  resource  to  client  for  a  given  url  and  headers  • May  add  callback  for  comple=on  or  error  of  a  push  • Not  at  all  a  replacement  for  WebSocket  • Really  useful  for  frameworks  that  build  on  Servlet,  such  as  JSF  

32  

Server  Push    

Servlet  4.0  Big  Ticket  New  Features  

E  

Page 33: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   33  

Server  Push    

Servlet  4.0  Big  Ticket  New  Features  

Browser Server Thread Aservlet.service()

GET /index.htmlServer

discovers browser will

need style.css and script.js

request.dispatchPushRequest("style.css")

request.dispatchPushRequest("script.js")

Server Thread Bservlet.service()

synthetic GET /style.css

synthetic GET /script.js

Server Thread Cservlet.service()

style.css

script.js

index.html

E  

Page 34: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Server  Push  

public  class  FacesServlet  implements  Servlet  {  public  void  service(ServletRequest  req,                                          ServletResponse  resp)  throws  IOException,  ServletException  {          //..          HttpServletRequest  request  =  (HttpServletRequest)  req;          try  {                  ResourceHandler  handler  =                          context.getApplication().getResourceHandler();                  if  (handler.isResourceRequest(context)  ||  request.isPushRequest())  {                          handler.handleResourceRequest(context);                  }  else  {                          lifecycle.attachWindow(context);                          lifecycle.execute(context);                          lifecycle.render(context);                  }          }          }  

Example  of  PotenEal  Use  from  JSF  

E  34  

Page 35: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Server  Push  

public  class  ExternalContextImpl  extends  ExternalContext  {          //…          public  String  encodeResourceURL(String  url)  {                  if  (null  ==  url)  {                          String  message  =  MessageUtils.getExceptionMessageString                                  (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID,  "url");                          throw  new  NullPointerException(message);                  }                  Map  attrs  =  getResourceAttrs();                  ((HttpServletRequest)  request).dispatchPushRequest(url,  attrs);                  return  ((HttpServletResponse)  response).encodeURL(url);          }          //…    }  

Example  of  PotenEal  Use  from  JSF  

E  35  

Page 36: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Reac=ve  Programming  

36  S  

Responsive  

Message  Driven  

Resilient  Elas=c  

image  credit:  reac=vemanifesto.org  

Page 37: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Servlet  4.0  and  Reac=ve  Programming  

• Non-­‐blocking  IO  in  Servlet  3.1  – ServletInputStream  

•  #setReadListener,  #isReady  – ServletOutputStream  

•  #setWriteListener,  #isReady  – ReadListener  

•  #onDataAvailable,  #onAllDataRead,  #onError  – WriteListener  

•  #onWritePossible,  #onError  

S  37  

Page 38: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Servlet  4.0  and  Reac=ve  Programming  

• Asynchronous  in  Servlet  3.0  – ServletRequest#startAsync  – AsyncContext  

•  #addListener,  #dispatch,  #complete  – AsyncListener  

•  #onComplete,  #onError,  #onStartAsync,  #onTimeout  

•  Event-­‐driven  – Server-­‐Sent  Events  

S  38  

Page 39: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Our  Plan  for  Your  Time  Investment  

Why  HTTP  2?  

HTTP  2  Big  Features  

How  Servlet  Might  Expose  These  Features  

Java  SE  9  Support  for  HTTP  2  

Summary  and  Current  Status  

1  

2  

3  

4  

5  

E  39  

Page 40: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  •  JEP  110  htp://openjdk.java.net/jeps/110  •  Easy  to  use  API  • Covers  only  the  most  common  use  cases  •  Supports  both  HTTP  1.1  and  2  

E  40  

Page 41: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  

•  Two  classes  (working  =tles)  – HtpRequestGroup  

•  configura=on  for  mul=ple  requests  

– HtpRequest  •  one  request/response  interac=on  

Small  footprint  

E  41  

Page 42: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  

• Blocking  mode:  one  thread  per  request/response  – send  request  – get  response  

• Non-­‐blocking  mode:  handle  mul=ple  request/response  interac=ons  in  single  thread  using  non-­‐blocking  API  – analogous  to  NIO  selectors  

Small  footprint  

E  42  

Page 43: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  

• Responses  handled  through  lambda  style  callback  handlers  – invoked  on  the  calling  thread  – Must  allocate  threads  to  responses  manually  

• Request/Response  bodies  handled  as  InputStream/OutputStream  

Callback  handlers  

E  43  

Page 44: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  HttpRequestGroup  group  =  HttpRequestGroup.create();  

HttpRequest  req  =  group.createRequest()  

   .setRequestMethod("POST")  

   .setRequestURI(new  URI("http://www.foo.com/a/b")  

   .setRequestBody("Param1=1,Param2=2")  

   .onResponseHeader("X-­‐Foo",  (request,  name,  value)  -­‐>  {  

           System.out.printf("  received  an  X-­‐Foo  header");  

       })  

   .sendRequest()  

   .waitForCompletion();  

E  44  

Page 45: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  HttpRequestGroup  group  =  HttpRequestGroup.create();  

HttpRequest  req  =  group.createRequest()  …  

   .onResponseBody((HttpRequest  request,  InputStream  in)  -­‐>  {  

       if  (request.getResponseCode()  ==  200)  {  

           Path  out  =  Paths.get("/tmp/out");  

           try  {  Files.copy(in,  out);  }  finally  {  in.close();  }  

       }  

     })  

   .sendRequest()  

   .waitForCompletion();  

E  45  

Page 46: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Java  SE  9  Support  for  HTTP/2  

• Nego=a=on  of  HTTP/2  from  1.1  – ALPN  or  plaintext  

•  Server  Push  – Support  for  PUSH_PROMISE  frames  

• HPACK  parameters  

HTTP/2  features  

E  46  

Page 47: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Our  Plan  for  Your  Time  Investment  

Why  HTTP  2?  

HTTP  2  Big  Features  

How  Servlet  Might  Expose  These  Features  

Java  SE  9  Support  for  HTTP  2  

Summary  and  Current  Status  

1  

2  

3  

4  

5  

S  47  

Page 48: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Summary  and  Current  Status  •  Servlet  4.0  brings  HTTP  2  to  Java  EE  

– 100%  compliant  implementa=on  of  HTTP  2  – Expose  key  features  to  the  API  

•  Server  Push  •  Stream  Priori=za=on  •  Request/Response  mul=plexing  

S  48  

Page 49: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Summary  and  Current  Status  •  JSR-­‐369  just  formed  on  22  September  •  Tenta=ve  Delivery  Schedule  

– Q3  2014:  expert  group  formed  – Q1  2015:  early  dra{  – Q3  2015:  public  review  – Q4  2015:  proposed  final  dra{  – Q3  2016:  final  release  

S  49  

Page 50: CON5898 What Servlet 4.0 Means To You

Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Safe  Harbor  Statement  The  preceding  is  intended  to  outline  our  general  product  direc=on.  It  is  intended  for  informa=on  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver  any  material,  code,  or  func=onality,  and  should  not  be  relied  upon  in  making  purchasing  decisions.  The  development,  release,  and  =ming  of  any  features  or  func=onality  described  for  Oracle’s  products  remains  at  the  sole  discre=on  of  Oracle.  

50  

Page 51: CON5898 What Servlet 4.0 Means To You