con5898 what servlet 4.0 means to you

51

Upload: edward-burns

Post on 01-Dec-2014

365 views

Category:

Software


0 download

DESCRIPTION

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

TRANSCRIPT

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