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 [email protected] - @danieldiasjava
  2. 5 / 32 • Framework orientada a ação construida sobre

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. MVC 1.0
  3. 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
  4. 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
  5. 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
  6. 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
  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"); } } • Somente na RI - org.eclipse.krazo.engine.Viewable
  11. 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
  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 nome; } • 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.setNome("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} usando Model</h1> <h1>Hello ${jug.nome} usando CDI</h1> </body> </html> • Suporte apenas JSP, Facelets e 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) - 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
  18. 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/