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

Daniel Dias

August 24, 2019
Tweet

More Decks by Daniel Dias

Other Decks in Programming

Transcript

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

    y te avergonzaba preguntar Daniel Dias Java EE Developer - SouJava [email protected] - @danieldiasjava
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 15 / 32 View @Controller @Path("hello") public class HelloController {

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

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

    @View("hello.jsp") @GET public void getHello() { } } • javax.mvc.View
  10. 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
  11. 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
  12. 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
  13. 22 / 32 Model - CDI @Named("jug") @RequestScoped @Data public

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

    HelloController { @Inject private JUG jug; @View("hello.jsp") @GET public void getHello() { jug.setNombre("SouJava"); } }
  15. 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 .
  16. 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
  17. 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 : ( [email protected] ) (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
  18. 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/