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

JSR-371 Model-View-Controller

JSR-371 Model-View-Controller

A nova especificação JSR 371 MVC 1.0 está chegando. Esta especificação nos trará uma maneira alternativa de aplicar MVC ao ecossistema Java /Jakarta EE de maneira baseada em ação.

Nesta apresentação vamos passar pelos fundamentos da especificação , juntamente com uma simples demo.

Daniel Dias

July 07, 2018
Tweet

More Decks by Daniel Dias

Other Decks in Programming

Transcript

  1. JSR-371
    Model-View-Controller
    Daniel Dias
    Java EE Developer - SouJava

    View Slide

  2. [email protected]
    @danieldiasjava
    https://github.com/daniel-dos
    https://www.linkedin.com/in/danieldiassantos
    https://danieldiasjava.wordpress.com

    View Slide

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

    View Slide

  4. 4 / 32
    MVC 1.0

    View Slide

  5. 5 / 32
    ● Framework orientada a ação construida sobre as camadas da JAX-RS.
    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.
    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
    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.
    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.
    MVC 1.0

    View Slide

  10. 10 / 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

  11. 11 / 32
    Controller

    View Slide

  12. 12 / 32
    public class HelloController {
    }
    Controller

    View Slide

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

    View Slide

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

    View Slide

  15. 15 / 32
    View

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 19 / 32
    View
    @Controller
    @Path("hello")
    public class HelloController {
    @GET
    public Viewable getHello() {
    return new Viewable("hello.jsp");
    }
    }
    ● Somente na RI - org.mvcspec.ozark.engine.Viewable

    View Slide

  20. 20 / 32
    View
    View Engines suportadas na Ozark(RI)
    Asciidoc .adoc | .asciidoc
    Freemarker .ftl
    Groovy .tpl
    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

  21. 21 / 32
    Model

    View Slide

  22. 22 / 32
    Model
    @Controller
    @Path("hello")
    public class HelloController {
    @Inject
    Models model
    @View("hello.jsp")
    @GET
    public void getHello() {
    model.put("MSG","SouJava");
    }
    } ● javax.mvc.Models

    View Slide

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

    View Slide

  24. 24 / 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

  25. 25 / 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 e Facelets .

    View Slide

  26. 26 / 32
    BOOT

    View Slide

  27. 27 / 32
    @ApplicationPath("resource")
    public class MVCApplication extends Application { }
    ● javax.ws.rs.ApplicationPath
    ● javax.ws.rs.core.Application
    Boot

    View Slide

  28. 28 / 32
    - Código ( https://github.com/mvc-spec )
    - Issues :
    ( https://github.com/mvc-spec/mvc-spec/issues )
    ( https://github.com/mvc-spec/ozark/issues )
    - Site ( https://www.mvc-spec.org/ )
    - JCP - JSR-371 ( https://jcp.org/en/jsr/detail?id=371 )
    - Lista de E-mail ( [email protected] )
    - Samples:
    (https://github.com/mvc-spec/ozark/tree/master/test)
    (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/proposals/eclipse-ozark
    - https://www.mvc-spec.org/
    - https://jcp.org/en/jsr/detail?id=371
    - https://danieldiasjava.wordpress.com/2018/01/05/jsr-371-mvc-1-0-com-tomcat-tomee/
    - https://danieldiasjava.wordpress.com/2018/01/05/jsr-371-mvc-1-0-validacao/
    - https://danieldiasjava.wordpress.com/2017/01/25/criando-uma-aplicacao-com-jsr-371mvc-1-0/
    - 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
    Obrigado !

    View Slide