Existem centenas de frameworks no mercado com o propósito de atender a outra centena de problemas. Para “ajudar” a escolher qual o melhor framework, existem outras centenas de artigos comparando os frameworks entre si.
Acredito que muitas comparações disponíveis hoje são furadas. Primeiro, as comparações são feitas de forma bem superficial, utilizando alguns critérios genéricos como velocidade do desenvolvimento, complexidade do framework, facilidade de uso, documentação, entre outros. Segundo, quem faz as comparações conhece a fundo os frameworks? Eu tenho esta dúvida. Terceiro, quem faz as comparações conhece a fundo as necessidades que você tem?
Não existe o melhor framework, existe um framework que melhor se adapta as suas necessidades. O ponto crucial na hora de escolher um framework são as suas necessidades. Do que você precisa?
Suponhamos que você seja o responsável por definir uma arquitetura de um sistema web que utilizará MVC. O que você pensa? Talvez um framework MVC… Você faz uma pesquisa rápida buscando comparações de frameworks web e em algum lugar vê que Struts e JSF são os mais usados, ou os melhores ou qualquer outra coisa. E agora, qual você vai usar? O que proporciona mais rapidez no desenvolvimento? O mais fácil de usar? O que tem melhor documentação? A maioria das comparações se preocupa com questões como essas, mas é preciso ser mais crítico na hora de escolher um framework.
É preciso entender as suas necessidades, os requisitos não funcionais da aplicação e se os frameworks os atendem, como performance, escalabilidade, requisitos de interface gráfica nos casos de frameworks MVC, como será a manutenção da aplicação, entre outros.
É preciso também conhecer a essência de cada framework. Embora os frameworks possam ser categorizados como frameworks de MVC ou frameworks de persistência, a essência de cada um é diferente.
Para a aplicação web que falamos acima, a que você deveria definir a arquitetura e estava entre Struts e JSF. Como saber a melhor opção?
Vamos pensar nas necessidades da aplicação – os requisitos funcionais – e na essência dos frameworks.
O principal requisito não funcional da aplicação é que ela deverá ter uma interface gráfica totalmente personalizada, não é um sistema corporativo, é uma aplicação comercial.
De acordo com diversos comparativos que você pesquisou, Struts e JSF tiveram desempenho parecido. E agora? Olhe para a essência do framework, conheça-o mais a fundo.
Struts é um framework orientado a ações, não influência em nada a interface gráfica que pode ser definida facilmente utilizando HTML, CSS e JavaScript. Já o JSF é um framework orientado a componentes, ele fornece componentes prontos que interagem com os componentes de negócio da aplicação, a personalização das interfaces gráficas neste caso é um pouco mais complexa.
Neste cenário simples, é óbvio que a melhor opção seria o Struts, pois o principal requisito funcional da aplicação era de que ela deveria ter uma interface gráfica totalmente personalizada e o Struts permite isso de forma mais fácil.
É importante entender os seus requisitos e a essência do framework antes de qualquer coisa. E a maioria das comparações que vemos por aí falham em, pelo menos, uma das duas. Mesmo que uma comparação chegue a fundo nos frameworks, seus problemas não serão levados em consideração. Cabe a você analisar o problema e escolher a melhor opção, pois não existe o melhor framework, existe o melhor para cada necessidade específica.