Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Todo lo que querías saber sobre MVC en Jakarta EE y te avergonzaba preguntar - ES

Todo lo que querías saber sobre MVC en Jakarta EE y te avergonzaba preguntar - ES

La nueva especificación JSR-371 MVC (Eclipse Krazo) está por llegar.

Esta especificación nos dará una forma alternativa de aplicar MVC al ecosistema Jakarta EE de manera basada en la acción.

En esta presentación, veremos los conceptos básicos de la especificación junto con una simple demostración con Apache TomEE.

Codigo:

https://github.com/soujava/mvc-cxf-tomee

Video :

https://www.youtube.com/watch?v=dUrP9C0iXqE

D190fa393f4e57128bcfdc6459f6d982?s=128

Daniel Dias

August 24, 2019
Tweet

Transcript

  1. Todo lo que querías saber sobre MVC en Jakarta EE

    y te avergonzaba preguntar Daniel Dias Java EE Developer - SouJava daniel.dias@soujava.org.br - @danieldiasjava
  2. 2 / 32 Agenda MVC 1.0 Demo Q&A

  3. 3 / 32 MVC 1.0

  4. 4 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. MVC 1.0
  5. 5 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. MVC 1.0
  6. 6 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • integración con CDI y Bean Validation MVC 1.0
  7. 7 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • integración con CDI y Bean Validation. • Proporciona soporte interno para JSP y Facelets. MVC 1.0
  8. 8 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • Integración con CDI y Bean Validation. • Proporciona soporte interno para JSP y Facelets. • Contiene soporte RestEasy, Jersey y Apache CXF a través de módulos. MVC 1.0
  9. 9 / 32 • Framework orientado a la acción construido

    en las capas de JAX-RS. • Aproveche las tecnologías Java EE existentes. • Integración con CDI y Bean Validation. • Proporciona soporte interno para JSP y Facelets. • Contiene soporte RestEasy, Jersey y Apache CXF a través de módulos. • No tiene la intención de reemplazar frameworks basados en componentes como JSF, sino simplemente ofrecer una alternativa a la creación de aplicaciones web en Java EE. MVC 1.0
  10. 10 / 32 Controller

  11. 11 / 32 public class HelloController { } Controller

  12. 12 / 32 @Controller public class HelloController { } •

    javax.mvc.Controller Controller
  13. 13 / 32 Controller @Controller @Path("hello") public class HelloController {

    }
  14. 14 / 32 View

  15. 15 / 32 View @Controller @Path("hello") public class HelloController {

    @GET public String getHello() { return "hello.jsp"; } }
  16. 16 / 32 View @Controller @Path("hello") public class HelloController {

    @GET public Response getHello() { return Response.status(OK) .entity("hello.jsp") .build(); } }
  17. 17 / 32 View @Controller @Path("hello") public class HelloController {

    @View("hello.jsp") @GET public void getHello() { } } • javax.mvc.View
  18. 18 / 32 View @Controller @Path("hello") public class HelloController {

    @GET public Viewable getHello() { return new Viewable("hello.jsp"); } } • Solo en RI - org.eclipse.krazo.engine.Viewable
  19. 19 / 32 View View Engines apoyado en Krazo(RI) Asciidoc

    .adoc | .asciidoc Freemarker .ftl Handlebars .hbs | .handlebars Jade .jade Jetbrick .jetx JSR-223 .groovy | .js | .py Mustache .mustache Pebble .peb Stringtemplate .st Thymeleaf .html Velocity .vm Jtwig .twig.html | .twig
  20. 20 / 32 Model

  21. 21 / 32 Model @Controller @Path("hello") public class HelloController {

    @Inject private Models model @View("hello.jsp") @GET public void getHello() { model.put("MSG","SouJava"); } } • javax.mvc.Models
  22. 22 / 32 Model - CDI @Named("jug") @RequestScoped @Data public

    class JUG { private String nombre; } • javax.inject.Named; • javax.enterprise.context.RequestScoped; • lombok.Data;
  23. 23 / 32 Model - CDI @Controller @Path("hello") public class

    HelloController { @Inject private JUG jug; @View("hello.jsp") @GET public void getHello() { jug.setNombre("SouJava"); } }
  24. 24 / 32 Model <%@page contentType=“text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html>

    <head> <title>MVC 1.0 Hello Demo</title> </head> <body> <h1>Hello ${MSG} utilizando Model</h1> <h1>Hello ${jug.nombre} utilizando CDI</h1> </body> </html> • Solo soporte JSP, Facelets y Thymeleaf .
  25. 25 / 32 BOOT

  26. 26 / 32 @ApplicationPath("resource") public class MVCApplication extends Application {

    @Override public Map<String, Object> getProperties() { Map<String, Object> defaultFileExtension = new HashMap<>(); defaultFileExtension.put(Properties.DEFAULT_VIEW_FILE_EXTENSION, "jsp"); return defaultFileExtension; } } • javax.ws.rs.ApplicationPath • javax.ws.rs.core.Application Boot
  27. 27 / 32

  28. 28 / 32 - Código ( https://github.com/mvc-spec ) - Issues

    : ( https://github.com/mvc-spec/mvc-spec/issues ) ( https://github.com/eclipse-ee4j/krazo/issues ) - Site ( https://www.mvc-spec.org/ ) - JCP - JSR-371 ( https://jcp.org/en/jsr/detail?id=371 ) - Lista de E-mail : ( jsr371-users@googlegroups.com ) (https://www.eclipse.org/lists/krazo-dev) - Ejemplos: (https://github.com/eclipse-ee4j/krazo/tree/master/examples) (https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/MVC1.0-samples) Adopt-a-JSR
  29. 29 / 32 https:/ /git.io/fjFbu DEMO

  30. 30 / 32 Referencias - https://projects.eclipse.org/projects/ee4j.krazo - https://www.mvc-spec.org/ - https://jcp.org/en/jsr/detail?id=371

    - https://medium.com/danieldiasjava/jsr-371-mvc-1-0-com-tomcat-tomee-45f9638f276c - https://medium.com/danieldiasjava/jsr-371-mvc-1-0-validação-248f58e370dc - https://medium.com/danieldiasjava/criando-uma-aplicação-com-jsr-371-mvc-1-0-13635d0fc41f - http://blog.triadworks.com.br/mvc-1-0-jsr-para-um-framework-mvc-action-based-na-java-ee-8 - http://blog.caelum.com.br/primeiros-passos-do-mvc-1-0/
  31. 31 / 32 Q&A

  32. Daniel Dias Java EE Developer - SouJava daniel.dias@soujava.org.br - @danieldiasjava

    Gracias