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

Tudo o que você queria saber sobre MVC no Jakarta EE e tinha vergonha de perguntar

Daniel Dias
February 16, 2019

Tudo o que você queria saber sobre MVC no Jakarta EE e tinha vergonha de perguntar

Apresentação feita na Campus Party 2019 no painel do SouJava

A nova especificação JSR 371 MVC 1.0 está chegando. Esta especificação nos trará uma maneira alternativa de aplicar MVC ao ecossistema Jakarta EE de maneira baseada em ação. Nesta apresentação vamos passar pelos fundamentos da especificação , juntamente com uma simples demo.

https://campuse.ro/events/campus-party-brasil-2019/talk/tudo-o-que-voce-queria-saber-sobre-mvc-no-jakartaee-e-tinha-vergonha-de-perguntar-cpbr12/

Daniel Dias

February 16, 2019
Tweet

More Decks by Daniel Dias

Other Decks in Programming

Transcript

  1. Tudo o que você queria saber sobre MVC no Jakarta

    EE e tinha vergonha de perguntar 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 orientada a ação construida sobre

    as camadas da JAX-RS. MVC 1.0
  5. 5 / 32 • Framework orientada a ação construida sobre

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. MVC 1.0
  6. 6 / 32 • Framework orientada a ação construida sobre

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. • Integração com CDI e Bean Validation MVC 1.0
  7. 7 / 32 • Framework orientada a ação construida sobre

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. • Integração com CDI e Bean Validation • Fornece suporte interno para JSP e Facelets. MVC 1.0
  8. 8 / 32 • Framework orientada a ação construida sobre

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. • Integração com CDI e Bean Validation • Fornece suporte interno para JSP e Facelets. • Contém suporte RestEasy, Jersey e Apache CXF através de modulos. MVC 1.0
  9. 9 / 32 • Framework orientada a ação construida sobre

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. • Integração com CDI e Bean Validation • Fornece suporte interno para JSP e Facelets. • Contém suporte RestEasy, Jersey e Apache CXF através de modulos. • Não se destina a substituição do frameworks baseado em componentes como JSF, mas simplesmente oferecer uma alternativa para construção de aplicações web no 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"); } } • Somente na RI - org.eclipse.krazo.engine.Viewable
  19. 19 / 32 View View Engines suportadas na 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 nome; } • 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.setNome("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} usando Model</h1> <h1>Hello ${jug.nome} usando CDI</h1> </body> </html> • Suporte apenas JSP, Facelets e 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) - Exemplos: (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/f4F5W DEMO

  30. 30 / 32 Referências - 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

    Obrigado !