Temos participado da especificação do MVC 1.0, uma das mais esperadas para o Java EE 8. Já há uma versão inicial para download. Você pode baixar sua especificação e API diretamente pela página do JCP, ou via maven, para o caso da API:
Autor(a)
rodrigo.turini
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
Vale ressaltar que a ideia dessa especificação não é substituir o JSF, que é um modelo de MVC baseado em componentes (component-based). Diferente disso, o MVC 1.0 propoe suporte para um framework MVC baseado em ações (action-based), assim como o VRaptor, Spring MVC e outros.
Integração com outras specs
A API do MVC se integra com diversas especificações do Java EE, como CDI, Bean Validation, e JAX-RS (The Java API for RESTful Web Services), sendo a última utilizada como base dessa nova spec. Na prática, isso significa que todo controller do MVC é um resource do JAX-RS e, por esse motivo, curiosamente podemos definir a anotação @Controller no escopo do método:
Interessante, não é? Com isso podemos ter classes hibridas, onde alguns métodos são controllers do MVC e outros serviços do JAX-RS. Mas claro, você também pode adicionar a anotação no escopo da classe, definindo assim que todos os seus métodos serão controllers.
A implementação de referência dessa nova especificação é o Ozark, que também já possui uma versão para download disponível via maven e pode ser testado com um nightly build do Glassfish.
Neste caso, o método olaMundo poderá ser acessado pela URL http://localhost:8080/projeto/olaMundoMVC. Após executá-lo, o Ozark despachará a requisição para a jsp de seu retorno, olaMundo.jsp, que deve estar presente em /WEB-INF/views/.
Além do retorno do método, existem diversas variações para definição da view que deve ser renderizada. Retornar um Viewable ou anotar o método com @View são algumas delas.
Você encontra esse e diversos outros exemplos de uso do MVC em um mirror de seu repositório no Github, criado e atualizado para facilitar a navegação do código.
Além do JSP e Facelets, que são as definições de view do Java EE, o Ozark também oferece uma serie extensões que possibilitam integração com os mais diferentes tipos de mecanismos de template existentes no mercado. FreeMarker, Velocity, Mustache, Handlebars e Thymeleaf são algumas das possibilidades atuais.
Para utilizar o Mustache, por exemplo, você só precisa adicionar a dependência do ozark-mustache em seu classpath e pronto!
Conveniente, não é? Nenhuma configuração adicional será necessária. Com isso você já poderá retornar views com a extensão .mustache nos métodos de seu controller:
Claro, muito além das que já estão implementadas, você pode usar qualquer tecnologia de view desenvolvendo sua própria implementação de ViewEngine. Veja aqui como a MustacheViewEngine foi desenvolvida.
Como contribuir
É importante lembrar que esse é um trabalho em progresso e que está em estágio inicial, mas desde já você pode contribuir enviando ideias, sugestões, dúvidas e críticas. Todos serão importantíssimos para definirmos o futuro do MVC do Java EE 8. Seu feedback pode ser postado aqui, ou enviado diretamente na lista de usuários [email protected].