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.×.

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