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.

D190fa393f4e57128bcfdc6459f6d982?s=128

Daniel Dias

July 07, 2018
Tweet

Transcript

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

  2. daniel.dias@soujava.org.br @danieldiasjava https://github.com/daniel-dos https://www.linkedin.com/in/danieldiassantos https://danieldiasjava.wordpress.com

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

  4. 4 / 32 MVC 1.0

  5. 5 / 32 • Framework orientada a ação construida sobre

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

    as camadas da JAX-RS. • Aproveitar as tecnologias Java EE existentes. 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 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. 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. MVC 1.0
  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
  11. 11 / 32 Controller

  12. 12 / 32 public class HelloController { } Controller

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

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

    } • javax.mvc.Controller
  15. 15 / 32 View

  16. 16 / 32 View @Controller @Path("hello") public class HelloController {

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

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

    @View("hello.jsp") @GET public void getHello() { } } • javax.mvc.View
  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
  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
  21. 21 / 32 Model

  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
  23. 23 / 32 Model - CDI @Named("jug") @RequestScoped @Data public

    class JUG { private String nome; } • javax.inject.Named; • javax.enterprise.context.RequestScoped; • lombok.Data;
  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"); } }
  25. 25 / 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 e Facelets .
  26. 26 / 32 BOOT

  27. 27 / 32 @ApplicationPath("resource") public class MVCApplication extends Application {

    } • javax.ws.rs.ApplicationPath • javax.ws.rs.core.Application Boot
  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 ( jsr371-users@googlegroups.com ) - 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
  29. 29 / 32 https://git.io/f4F5W DEMO

  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/
  31. 31 / 32 Q&A

  32. Daniel Dias Java EE Developer - SouJava Obrigado !