$30 off During Our Annual Pro Sale. View Details »

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
    [email protected] - @danieldiasjava

    View Slide

  2. 2 / 32
    Agenda
    MVC 1.0
    Demo
    Q&A

    View Slide

  3. 3 / 32
    MVC 1.0

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  10. 10 / 32
    Controller

    View Slide

  11. 11 / 32
    public class HelloController {
    }
    Controller

    View Slide

  12. 12 / 32
    @Controller
    public class HelloController {
    }
    ● javax.mvc.Controller
    Controller

    View Slide

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

    View Slide

  14. 14 / 32
    View

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  20. 20 / 32
    Model

    View Slide

  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

    View Slide

  22. 22 / 32
    Model - CDI
    @Named("jug")
    @RequestScoped
    @Data
    public class JUG {
    private String nome;
    }
    ● javax.inject.Named;
    ● javax.enterprise.context.RequestScoped;
    ● lombok.Data;

    View Slide

  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");
    }
    }

    View Slide

  24. 24 / 32
    Model
    <%@page contentType=“text/html" pageEncoding="UTF-8"%>



    MVC 1.0 Hello Demo


    Hello ${MSG} usando Model
    Hello ${jug.nome} usando CDI


    ● Suporte apenas JSP, Facelets e Thymeleaf .

    View Slide

  25. 25 / 32
    BOOT

    View Slide

  26. 26 / 32
    @ApplicationPath("resource")
    public class MVCApplication extends Application {
    @Override
    public Map getProperties() {
    Map defaultFileExtension = new HashMap<>();
    defaultFileExtension.put(Properties.DEFAULT_VIEW_FILE_EXTENSION, "jsp");
    return defaultFileExtension;
    }
    }
    ● javax.ws.rs.ApplicationPath
    ● javax.ws.rs.core.Application
    Boot

    View Slide

  27. 27 / 32

    View Slide

  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 :
    ( [email protected] )
    (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

    View Slide

  29. 29 / 32
    https://git.io/f4F5W
    DEMO

    View Slide

  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/

    View Slide

  31. 31 / 32
    Q&A

    View Slide

  32. Daniel Dias
    Java EE Developer - SouJava
    [email protected] - @danieldiasjava
    Obrigado !

    View Slide