MVC 1.0 / JSR 371

Preview:

Citation preview

MVC  1.0JavaLand  March  2015

David  Delabassee  @delabassee  Oracle

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

1

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

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

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

Agenda

Context  

MVC  1.0  JSR  

Conclusion

1

2

3

4

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

Agenda

Context  

MVC  1.0  JSR  

Conclusion

1

2

3

5

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

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

Java  EE  8

Clou

d

Mobile

HTTP/2

SECURITYReactive  Programming

User  Experience

7

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

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. 9

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

Community-­‐Prioritized  Features

10

http://glassfish.org/survey

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

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

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

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

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

Different  styles  of  MVC• Component-­‐based  MVC  • Action-­‐based  MVC  • Others

15

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

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

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

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

Agenda

Context  

MVC  1.0  JSR  

Conclusion

1

2

3

19

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

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

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

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@Controllerpublic String hello() {

return "hello.jsp";}

}

23

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

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

Controller

@Path(“hello") @Controller public class HelloController {

@GETpublic Viewable hello() {

return new Viewable("hello.jsp"); } }

25

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

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

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

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

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

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

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

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

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.

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

Agenda

Context  

MVC  1.0  JSR  

Conclusion

1

2

3

35

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

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

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

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

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

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

Danke!

41

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved. 42

Recommended