O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

MVC 1.0 / JSR 371

11.818 visualizações

Publicada em

MVC 1.0 /JSR 371, presented at JavaLand 2015

Publicada em: Tecnologia

MVC 1.0 / JSR 371

  1. 1. MVC  1.0
 JavaLand  March  2015 David  Delabassee   @delabassee   Oracle Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.   1
  2. 2. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. The  following  is  intended  to  outline  our  g  eneral  product  direction.  It  is  intended  for                         i  nformation  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. Safe  Harbor  Statement 2
  3. 3. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Lorem  ipsum  dolor  sit  amet,  MVC,  consectetur  adipiscing  elit,  sed  do  eiusmod  tempor   incididunt  ut  labore  et  dolore  magna  aliqua,  Action-­‐Based  MVC.  Ut  enim  ad  minim   veniam,  quis  nostrud  exercitation  ullamco  laboris  nisi  ut  aliquip  ex  ea  commodo   consequat.  JSR  371  duis  aute  irure  dolor  in  reprehenderit  in  voluptate  velit  esse  cillum   dolore  eu  fugiat  nulla  pariatur.  Ozark  excepteur  sint  occaecat  cupidatat  non  proident. My  Own  Statement 3
  4. 4. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Agenda Context   MVC  1.0  JSR   Conclusion 1 2 3 4
  5. 5. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Agenda Context   MVC  1.0  JSR   Conclusion 1 2 3 5
  6. 6. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Java  EE  7 ENTERPRISE EDITION • Batch • Concurrency • Simplified JMS • More annotated POJOs • Less boilerplate code • Cohesive integrated platform DEVELOPER PRODUCTIVITY • WebSockets • JSON • Servlet 3.1 NIO • REST MEETING 
 ENTERPRISE DEMANDS Java EE 7 6
  7. 7. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Java  EE  8 Cloud Mobile HTTP/2 SECURITY Reactive  Programming User  Experience 7
  8. 8. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Java  EE  8  Community  Survey Should  Java  EE  provide  support  for  MVC  alongside  JSF?     Is  there  any  one  de-­‐facto  standard  technology  in  this  space  to  which  we   should  look  for  inspiration? 8
  9. 9. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. 9
  10. 10. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Community-­‐Prioritized  Features 10 http://glassfish.org/survey
  11. 11. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. What  is  MVC? • Pattern  used  to  implement  a  User  Interface   • Consists  of  3  major  components   – Model   – View   – Controller   • Each  of  the  components  has  a  distinct  responsibility 11
  12. 12. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. The  M(odel) • Interim  state  you  want  to  keep  when  you  are  building  an  UI   • Examples   – Who  is  logged  in   – What  are  they  trying  to  buy   – What  page  are  they  on  in  a  multi  page  flow 12
  13. 13. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. The  V(iew) • What  your  user  interacts  with     – In  a  web  application  that  would  be  the  web  page  or  web  pages   • your  JSP  page   • your  CSS  styles   • your  JavaScript   – In  a  thick  client  scenario  it  would  be  the  entire  UI   – In  an  embedded  scenario  it  could  be  the  touch  screen,  hardware  buttons  etc. 13
  14. 14. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. The  C(ontroller) • Work  horse  of  the  pattern:   – Executes  the  business  logic   • Run  a  credit  card  transaction   – Updates  the  model   • Mark  the  transaction  as  successful  in  the  model  object   – Ask  the  view  to  render  itself   • Shows  the  transaction  was  successful 14
  15. 15. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Different  styles  of  MVC • Component-­‐based  MVC   • Action-­‐based  MVC   • Others 15
  16. 16. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Component-­‐based  MVC • A  specific  style  of  MVC  made  popular  by  component  frameworks   • Controller  provided  by  the  framework   • Examples   – JavaServer  Faces   – Wicket     – Tapestry   – Seam  (discontinued)   – Apache  Click  (retired) 16
  17. 17. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Action-­‐based  MVC • Controller(s)  defined  by  the  application   • Examples   – Struts  1  (end  of  life),  Struts  2   – Spring  MVC   • No  standard  Java  EE  implementation   – Good  news  we  are  creating  one!   – Targeted  for  inclusion  in  Java  EE  8 17
  18. 18. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Action-­‐based  MVC   – Manual  request  parameter  processing   – No  view  kept  around   – Request  centric   – Developer  responsible  for  all  HTML  /  JS   – Limited  support  for  re-­‐usable  behavior   – No  automatic  input  conversion   – No  automatic  input  validation   Component-­‐based  MVC   – Automatic  request  parameter  processing   – View  kept  around   – Page  centric     – Components  handle  HTML  /  JS   – Component  implement  re-­‐usable  behavior   – Automatic  input  conversion   – Automatic  input  validation   Compare  and  contrast 18
  19. 19. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Agenda Context   MVC  1.0  JSR   Conclusion 1 2 3 19
  20. 20. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model-­‐View-­‐Controller  (MVC  1.0)  Specification • “Action-­‐based”  MVC  1.0  JSR   • Why?   – UI  landscape  is  not  one  size  fits  all     – Java  EE  8  Community  Survey   – Talking  to  our  customers,  etc.   • EG  formed   – Oracle,  RedHat,  innoQ,  IBM,  Caelum,  LifeRay,  and  6  individuals  members   • You  can  contribute  too! JSR  371 20
  21. 21. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model-­‐View-­‐Controller  (MVC  1.0)  Specification • Ozark   – https://ozark.java.net   • Open  Source   – git://java.net/ozark~sources   – https://github.com/spericas/ozark Reference  Implementation 21
  22. 22. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.   MVC  1.0 • Action-­‐based  MVC   • Glues  together  key  Java  EE  technologies   – Model  :  CDI,  Bean  Validation,  JPA   –  View  :  Facelets,  JSP,  more?   –  Controller  :  Invent  new  technology  Vs.  Leverage  existing  technologies 22 Principles
  23. 23. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller • Combine  data  models  and  views  to  produce  web  application  pages @Path("hello") public class HelloController { @GET @Controller public String hello() { return "hello.jsp"; } } 23
  24. 24. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller • Class/method  decorated  with  @Controller @Path(“hello") @Controller public class HelloController { @GET @View(“hello.jsp") public void hello() { } } 24
  25. 25. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller @Path(“hello") @Controller public class HelloController { @GET public Viewable hello() { return new Viewable("hello.jsp"); } } 25
  26. 26. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Controller … @GET @Controller public Response getById(@PathParam("id") String id) { if (id.length() == 0) { return Response.status(Response.Status.BAD_REQUEST) .entity(“error.jsp") .build(); } } 26
  27. 27. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model • “Refers  to  the  data”   • 2  types   – javax.mvc.Models  interface   – CDI  @Named  bean  (recommended) 27
  28. 28. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model @Named(“greeting”) @RequestScoped public class Greeting { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } 28
  29. 29. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Model @Path(“hello”) public class HelloController { @Inject private Models models; @GET @Controller public String hello() { models.set(“greeting”, new Greeting(“Hi JavaLand”)); return “hello.jsp”; } } 29
  30. 30. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View • Define  the  structure  of  the  output   • Can  refer  to  model(s)   • Rendered  by  a  View  Engine   – JSP   – Facelets   • Not  accessible  as  static  resources   – /WEB-­‐INF/views/   30
  31. 31. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View <%@ page contentType=“text/html;charset=UTF-8” language=“java” %> <html> <head> <title>Hello</title> </head> <body> <p>Hello ${user.name}</p> </body> </html> 31
  32. 32. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. View  Engine • CDI  based  extension  mechanism   • javax.mvc.engine.ViewEngine interface   boolean supports(String view); void processView(ViewEngineContext context) throws ViewEngineException; • Ozark   – JSP  &  Facelets   – FreeMarker,  Velocity,  Thymeleaf,  Mustache  &  Handlebars 32
  33. 33. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Miscellaneous • Bootstrap   – javax.ws.rs.core.Application • Validation   • Exception  Mapping  Providers   • @Produces   • CDI  Events   • Tooling 33
  34. 34. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Demos? 34 Lorem  ipsum  dolor  sit  amet,  Intial  consectetur  adipiscing  elit,  sed  do  eiusmod  tempor   incididunt  ut  labore  et  dolore  magna  aliqua,  Ozark  Ut  enim  ad  minim  veniam,  quis   nostrud  exercitation  ullamco  laboris  nisi  ut  aliquip  ex  ea  commodo  consequat.  Velit  duis   aute  irure  dolor  in  reprehenderit  in  voluptate  velit  esse  cillum  dolore  eu  fugiat  nulla   pariatur.  milestone  build  excepteur  sint  occaecat  cupidatat  non  proident.
  35. 35. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Agenda Context   MVC  1.0  JSR   Conclusion 1 2 3 35
  36. 36. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Conclusion • Doing  MVC  now  is  not  a  bad  idea,  because  we  are:   – Leveraging  CDI,  JAX-­‐RS,  Facelets,  BV   – More?  Servlet  4.0’s  ServerPush   – Delivering  an  easy  migration  path  if  you  are  using  JSPs   • Offers  more  choices   • New  annotations   – @Controller   – @View 36
  37. 37. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Java  EE  8 • Java  EE  8  Platform  (JSR  366)   • CDI  2.0  (JSR  365)   • JSON  Binding  1.0  (JSR  367)   • JMS  2.1  (JSR  368)     • Java  Servlet  4.0  (JSR  369)     • JAX-­‐RS  2.1  (JSR  370)   • MVC  1.0  (JSR  371)     • JSF  2.3  (JSR  372)   • Java  EE  Management  2.0  (JSR  373)   • JSON-­‐P  1.1  (JSR  374)   • Java  EE  Security  1.0  (JSR  375) So  far….. 37
  38. 38. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Roadmap • Q3  2014  Expert  Group  formed   • Q1  2015  Early  Draft   • Q3  2015  Public  Review   • Q1  2016  Proposed  Final  Draft   • Q3  2016  Final  Release 38
  39. 39. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Contribute! • Join  the  JCP     • “Adopt-­‐A-­‐JSR”   – http://glassfish.java.net/adoptajsr   • Get  involved   – Join  MVC  users  mailing  list   – Tweet,  blog,  socialize  to  raise  awareness  about  MVC  1.0   – Test  MVC  SNAPSHOT  and  milestone  builds  (https://ozark.java.net)   – Fill  issues! 39
  40. 40. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Links • MVC  specification   – http://mvc-­‐spec.java.net,  users@mvc-­‐spec.java.net   • MVC  implementation     – http://ozark.java.net,  users@ozark.java.net   • Spec  leads   – Santiago  (@spericas)   – Manfred  (@mnriem,  http://mvc.zeef.com/manfred.riem  )   • The  Aquarium  Blog   – https://blogs.oracle.com/theaquarium/ 40
  41. 41. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. Danke! 41
  42. 42. Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. 42

×