Rafael Benevides bio photo

Rafael Benevides

In a serious relationship with Software Development

Email Twitter Facebook Google+ LinkedIn Instagram Github Last.fm Youtube

Recentemente meu contrato no cliente entrou na reta final. Aqui em Brasília, grande parte da atuação dos profissionais de TI tem como cliente final o Governo. Por este motivo algumas questões contratuais (prazos, extensão, valores, renovação) fogem do controle deste profissionais e gestores.

Sendo assim, durante este processo de (in-?)definição por parte do cliente, estou atuando como freelancer em outro cliente. Projeto novo, com antigos amigos. Uma excelente oportunidade para aprender mais um framework: Struts 2.

Já utilizei-o (como PoC) na época do Webwork onde já era claro sua superioridade em relação ao Struts 1.x.

Aproveito para tocar em um assunto que há bastante tempo penso em falar mas que na verdade é bastante polêmico. Que o Struts 1.x foi um dos primeiros frameworks MVC para Java e que ainda hoje existe vários legados feitos com Struts, isto não tenha dúvidas! Entretanto é preciso "abrir os olhos" para o mercado e para as inovações tecnológicas que o acompanham. Já em 2004, o Carlos Vilela, vulgo CV, hoje atual consultor da ThoughtWorks, disse a celebre frase: Toda vez que voce usa Struts, Deus mata um bebe foca. Pense nas pobres foquinhas, e parem de usar esse lixo. Por favooooooooooooooooooor.

Hoje o mercado está repleto de frameworks WEB/JAVA de qualidade: JBoss Seam, Wicket, Struts 2, VRaptor, etc. Muitos deles utilizando anotações evitando o famigerado "XML Hell", além da possibilidade de usar injeção de dependência ( e outjeção no caso do Seam), abstração de invocações Ajax, além de inúmeros componentes visuais "prontos". A idéia central é que quanto mais abstrações ao redor da complexidade, melhor será a produtividade da equipe e com uma menor curva de aprendizado.

Sabemos que o Struts 1.x possui uma "abstração pobre" e que conseqüentemente não foi capaz de acompanhar a evolução dos outros frameworks. Agora me respondam uma coisa: Por quê projetos NOVOS hoje em dia ainda utilizam o Struts 1.x? Acredito que a resposta seja um misto de preguiça de atualizar-se (para profissionais) com um elevado teor de uma conservação nonsense (por parte dos gestores de TI/Projetos/etc).

No outro lado da balança está a infame síndrome do Not invented here (não inventado aqui) com a propagação de frameworks caseiros. Frameworks caseiros não são arquiteturas de referência, não são padronizados, não possuem uma comunidade em volta para dar apoio e não são padrões da insdústria de software. Construir frameworks caseiros com o dinheiro público é o pior caso de todos. (Rafael Carneiro). Vejam que estou falando de frameworks, onde quase nunca se leva em consideração open/closed principle - OCP já que o objetivo é solucionar um problema específico. O que fazer então? Não crie um framework do zero, mas estenda as funcionalidades de um framework existente ( que possui toda uma comunidade trabalhando para você ) criando componentes para estes. Este é o principal motivo que o XSeam é chamado de conjunto de componentes visuais e não visuais para o JBoss Seam Framework e não é chamado de framework por si só como algumas pessoas sugeriram erradamente.

Por fim, recomendo a leitura dos slides da apresentação O Struts morreu - Como escolher um novo framework Web realizada por Alessandro Coelho Ribeiro que está disponível em seu site: http://www.integritas.com.br/palestra-riojug.pdf