MVC 1.0: JSR para um framework MVC action-based na Java EE 8
Conheça a nova proposta para criação de um framework Web MVC para JEE8
Nesta última semana disponibilizaram a proposta inicial de um framework Web MVC que seguirá o modelo action-based para Java EE 8. Dessa forma, os desenvolvedores que se utilizam da plataforma JEE não estarão mais restritos ao modelo component-based do JSF (JavaServer Faces), que é o único framework MVC na plataforma. O nome da nova especificação é MVC 1.0 (JSR 371 - Model-View-Controller).
Apesar do que muitos pensam, a idéia não é substituir o JSF, que já está consagrado na JEE há muitos anos e tem evoluído de forma contínua e estável, mas sim trazer mais uma opção para os desenvolvedores e arquitetos no desenvolvimento de aplicações Web na plataforma JEE. O plano inicial do expert group era adicionar suporte à especificação JAX-RS (The Java API for RESTful Web Services) para que ela funcionasse também como um framework Web MVC, mas no fim, após alguns feedbacks e discussões, o consenso geral foi que seria melhor separar em uma nova JSR, neste caso a MVC 1.0.
Assim como as últimas especificações lançadas, a MVC 1.0 também irá tirar proveito e se integrará nativamente com as JSR's já existentes e as que estão por vir. Portanto, a parte de Modelo (letra M do MVC) usará CDI e Bean Validations, enquanto a Visão usará tecnologias como JSP e Facelets. Para o expert group, a parte do Controlador ainda é uma incógnita, eles não sabem se usarão a JAX-RS ou se será necessário criar uma nova tecnologia; além disso, há ainda a possibilidade desta camada ser independente de tecnologia.
Por estar em uma fase inicial, há grandes chances da MVC 1.0 copiar o que há de melhor nos frameworks Web MVC do mercado, como Spring MVC, VRaptor 4, Play Framework e a extensão MVC do Jersey. Dessa forma, os times de desenvolvedores do Spring e do VRaptor poderão ajudar a conduzir o futuro da MVC 1.0. Certamente bons frutos surgirão da comunidade!
Controvérsia no nome da especificação
Como já sabemos, o Model-View-Controller ( MVC) é um dos padrões de projetos mais conhecidos e usados no desenvolvimento de aplicações Web em praticamente todas as plataformas. Por esse motivo, é até entendível o nome da especificação ser MVC 1.0. Mas de certa forma, é como se o expert group ignorasse o fato de que o JSF também é um framework MVC.
A verdade é que podemos dividir os frameworks MVC em 2 modelos: action-based e component-based. No modelo action-based, as requisições HTTP são roteadas para controladores e acabam sendo transformadas em ações dentro da aplicação; enquanto no modelo component-based,as requisições HTTP são agrupadas e normalmente manipuladas por cada componente da página de maneira independente. O framework definido pela MVC 1.0 seguirá o modelo action-based. Por esse motivo, talvez exista a chance do nome da especificação mudar para evitar confusão na comunidade.
Por se tratar de um assunto importante para qualquer desenvolvedor Web, o padrão MVC e os seus diferentes estilos são estudados com bastante profundidade no nosso curso Java para Web.
Para saber mais detalhes sobre a proposta inicial da MVC 1.0, um PDF foi disponibilizado na lista de discussão do expert group. Vale a pena dar uma lida no documento e ficar por dentro desta nova JSR, que promete fazer muito burburinho ainda na forma como desenvolvemos aplicações Web na plataforma JEE.
E você, é adepto ao modelo component-based do JSF ou prefere frameworks action-based, como VRaptor4 e Spring MVC?
Desenvolvedor e instrutor na TriadWorks