Projetos Web em Java… 13/05/2006
Por: Bruno Mentges de Carvalho , trackbackMais uma decisão difícil. Desenvolvi uma solução web sem o uso de nenhum framework, com um prazo curto e escopo bem definido que não mudou muito (ainda bem!). Ficou horrível, mas funcionava. O problema começou quando mais coisas iriam ser acrescentadas ao software.
Bom, com algum tempo até a data da entrega das modificações, resolvi ir refazendo aos poucos o sistema (que estava bem pequeno) utilizando algum framework WEB que provesse facilidades diversas para os problemas que enfrentava, como por exemplo:
1. Controlar os dados dos formulários: Validar, Mostrar mensagens de erro amigáveis, etc. Não estava no escopo utilizar Javascript. (e não utilizei :D)
2. Integração com o Hibernate: Cá entre nós, quem que programa Java que não gosta do Hibernate ? Qualquer framework que oferecesse uma facilidade para lidar com ele estaria dentro da minha lista de possíveis escolhas.
3. IoC, DI, AoP…: Esses conceitos são muito bons, e queria pôr em prática. Ao remodelar o sistema, descobri que algumas coisas eu queria poder “injetar” para facilitar os testes automatizados e possíveis modificações futuras sem muitos problemas. Ah, claro, teste automatizado era pré-requisito para meu refactoring do sistema, e tinha pensado também em utilizar AoP para manter estado entre os formulários wizard (aqueles formulários, de cadastro por exemplo, com várias páginas até a conclusão).
4. Configuração fácil: Quem não quer isto em um framework ? Toda a configuração de um framework deve ter uma sintaxe clara em seus arquivos.
5. Integração com Velocity, Tiles, etc: Ingenuamente eu queria utilizar um framework que me facilitasse a construção do View (.JSPs), layout, etc. Então um dos fatores para minha escolha era ter fácil integração com Velocity, Tiles ou qualquer outro do tipo. (Acabei não utilizando nenhum, mas na hora da análise, era uma probabilidade).
6. Boa documentação: É muito ruim querer fazer algo e não ter onde procurar a não ser no código fonte do framework. Se um framework não for bem documentado (o que não necessariamente significa ter muitos exemplos de código), te complica, atrasa e atrapalha.
Me vi com algumas opções tentadoras:
1. Mentawai: Framework brasileiro para web. Muito bem desenvolvido, não utiliza xml, tem um esquema de autorização e autenticação muito interessante e, bom, é brasileiro (ufanista!).
2. Struts: Este é o framework web mais famoso entre as empresas brasileiras. A maioria o utiliza, inclusive eu e a empresa onde trabalho, o que o tornaria uma potencial escolha, caso eu já não tivesse tido minhas decepções próprias (hehe) e a atual notícia que ele estaria se dividindo em dois frameworks. Foi logo descartado.
3. Spring MVC: Framework que apareceu faz pouco tempo, mas que muito prometia. Tinha integração com tudo, uma documentação enorme e completa, muitos exemplos e comunidade cada vez maior de utilizadores. E também tem uma implementação de formulário wizard muito simples e fácil de usar (e bem documentada também!), o que retiraria mais um problema da minha lista!
Não listei o WebWork aqui pois na época que pesquisei esqueci de ver o WebWork (esqueci que ele existia hehe). Então, escolhi o Spring Framework, também por indicações de amigos que são excelentes programadores (novamente o Phillip também tinha me indicado ele).
No redesign, utilizei o modelo XP de pontuar as funcionalidades e utilizar Milestones como metodologia de desenvolvimento. E também utilizei a metodologia Test Driven Development. Antes mesmo de programar eu fazia os testes de cada classe que iria implementar, como elas não existiam, todos falhavam. E assim ia desenvolvendo até todos passarem. Pessoal, é sério, isso me poupou MUITO tempo e evitou MUITOS bugs.
O Spring MVC ficou fácil e bem tranquilo de programar. Meu sistema ficou modular e qualquer coisa que precise incrementar e/ou melhorar ficou rápido, pois tenho todos os testes que garantem que o que eu mudei não quebrou nada em outro lugar. O software além de estável ficou seguro. Retirei o antigo e coloquei o novo software. E quem está sorrindo a toa é o cliente !
Abaixo, veja o plugin do eclipse que mostra meus Spring Beans (clique para ampliar):
Hoje, se alguém me perguntar sobre um framework web para utilizar em suas aplicações, eu responde de primeira, sem pensar: use o Spring ! Pode ser que daqui alguns meses, anos ou décadas esta afirmação já não seja mais verdadeira, mas que hoje para mim é, isso é.