19 dezembro 2007

Whiteboard dos frameworks Web

Neste post do Enter The Jboss Matrix, o autor Shaun Connolly apresenta o resultado de um whiteboard poll, sobre o uso de Application Servers e Web Frameworks. O resultado apresenta forte liderança pelo JBoss e JSF.


Vou falar aqui sobre os resultados da votação de Web Frameworks. Vendo este whiteboard, levanto algumas questões:
  • Porque JSF é lider?
  • Porque tem gente que ainda utiliza Struts e Struts 2?
  • Quem são os malucos que utilizam Spring MVC?
  • Que tipo de desenvolvedores utilizam Tapestry?
  • Porque em tão pouco tempo, o uso do Wicket cresceu a ponto de ultrapassar Tapestry, Grails e Rails?
Perguntas pertinentes, que me arrisco a dar algumas respostas neste post que, sem dúvida será bem controverso. :)

Porque JSF é lider?
Para mim, o principal motivo é simples: JSF é uma especificação definida pelo JCP. Isto favorece a adoção por grandes empresas e projetos que preferem algo padronizado e que possui uma grande oferta de cursos, livros e produtos.

Mas me questiono: o JavaServer Faces puro (Reference Implementation) não tem nada demais. A produtividade com ele é baixa, o suporte das IDEs só é bom quando amarrado a componentes de terceiros e como comentei num post anterior, usa-se muito SOP (String Oriented Programing.) A solução para torná-lo verdadeiramente produtivo é sempre abraçar algum framework JSF mais robusto (leia-se: mais componentes e uma arquitetura engessada), como o JBoss Seam, Oracle ADF Faces ou o da Sun (experimente o NetBeans 6 e notará que vários componentes são específicos da Sun... não sei exatamente de onde vem, qual o projeto, mas sei que tem.)

Abraçar um produto JSF implica em se amarrar a este produto e seus componentes customizados, não podendo mudar de Vendor assim como é prometido pela especificação e tantos desenvolvedores, gerentes e arquitetos ainda, sendo enganados pelo marketing, acreditam.

Sei, e concordo, que há espaço para o JavaServer Faces, mas vamos parar com o euforismo de que JSF é produtivo, padronizado e livre de implementação, ok? Ninguem mais vai trabalhar com JSF RI. A solução será sempre escolher entre uma especialização ou outra (Seam, ADF, etc ...) para tornar essa máxima verdadeira.

Porque tem gente que ainda utiliza Struts e Struts 2?
Desenvolvi em Struts 1.x durante boa parte da minha carreira, e assim como postei da outra vez, acredito que foi-se o seu tempo. Entramos numa era de programação baseada em componentes, e não actions. Reutilização de código na composição de paginas agrupando componentes: este sim é o modelo de hoje (visto no JSF, no Tapestry, Wicket e alguns outros).

Então porque tem gente que ainda utiliza Struts e Struts 2? O primeiro é simples: manutenção. Tem muito sistema que foi feito em Struts e por falta de tempo ($$) não existe o interesse em migrar para outro framework (nem que fosse o Struts 2). O segundo fica difícil de dizer exatamente o porque, mas me arrisco a dizer que é pelo simples fato de ser a junção de duas fortes comunidades (Struts e WebWork) que são devotos do modelo Action-based. Esta comunidade está presa a um modelo de construção Web, onde se sintam confortáveis e confiantes na hora de construir suas telas. Eu entendo. Já me senti assim um dia... :) Mas só por um dia.

Acho que o número de projetos em Struts e Struts 2 diminuirá com o tempo. Minha previsão é que, assim que JSF 2.0 sair oficialmente, teremos uma queda drástica na adoção de Struts 2 como framework web para novos projetos. Deste modo, dois frameworks irmãos irão se encontrar no limbo da manutenção.


Quem são os malucos que utilizam Spring MVC?

Alguém ae utiliza Spring MVC? Por favor, comenta aqui quais os motivos que o levaram a adotá-lo! Porque eu não faço a menor idéia. Na minha opinião, é apenas um Action-based amarrado ao Spring. O que ele tem que outros frameworks neste modelo não oferecem?

Deixo a resposta desta pergunta para os comentários... :)

Que tipo de desenvolvedores utilizam Tapestry?
O tipo que quer correr riscos e gosta de seguir um Pastor. O risco de sair uma versão nova com mudanças tão grandes na API que o forçam a duas únicas opções: ficar largado na versão anterior ou migrar para a última. Se você não sabe, o Tapestry é escrito praticamente, por um único desenvolvedor chamado Howard Lewis Ship. Isso implica que, se o cara decidir (como já fez entre as versões T3, T4 e T5) ter idéias novas e implementá-las, ele o fará sem dó nem piedade da comunidade que utiliza o framework.

Minha sugestão: fique longe de frameworks sem compromisso com seus usuários.

Porque em tão pouco tempo, o uso do Wicket cresceu a ponto de ultrapassar Tapestry, Grails e Rails?
Foi uma surpresa para muitos, quando o framework foi incorporado pela Apache rapidamente. O processo na incubadora foi rápido, o que demonstra a maturidade e o compromisso dos desenvolvedores. Além disso, é notável ver que este compromisso é diário visto o número de dúvidas respondidas (muitas até instantâneas via IRC) pelos commiters e usuários avançados.

Não há como negar que a comunidade Wicket já está consolidada, ao ponto de ultrapassar a do Tapestry e Grails. Mas não basta ter comunidade (voltemos ao exemplo do Struts), é preciso mais que isso. Aos que já colocaram seus dedos em algum exemplo de Wicket, viram o quanto é produtivo e rápido a construção de telas e componentes genéricos. Mas ainda, não é isso que atrai novos adeptos ao framework. É divertido desenvolver com Wicket.

Foi-se o tempo de apanhar para XMLs e Strings escritas por engano. Ou de taglibs monstruosas cheias de parâmetros. O conceito de POJO + POH é o que faz a diferença em relação aos outros frameworks. Some isso a uma API bem moldada a ponto de ser comparada com a do Swing, e você terá uma facilidade incrível para entender os métodos e classes do framework.

Para 2008, o plano é apresentar ainda mais a capacidade do Wicket a vocês que frequentam este blog. Não que eu queira iniciar uma religião com isso, mas apenas mostrar que existem alternativas mais produtivas. :)

[]'s
miojo

6 comentários:

Anônimo disse...

O post do Shaun Connolly não descreve como o tal Pool foi feito, mas o que me chamou a atenção é que há mais usuários usando WebsSphere que Tomcat, algo que vai diretamente contra uma outra estatística divulgada alguns dias atrás onde o Tomcat era apresentado como o Application Server mais usado atualmente. (Se Tomcat pode ser classificado como um JEE Application Server é tema para outro post).

Bruno Rossetto Machado disse...

Apenas adicionando um comentário sobre Wicket, o qual todos possuem grande esperança que seja realmente mais utilizado (justamente por ter idéias muito legais de fazer coisas de forma muito fácil e rápida), talvez o que falte seja casos de sucesso de clientes grandes os quais o utilizaram e tiveram grande desempenho para puxar outros.

Para os desenvolvedores parece já estar mais que comprovado quais são suas facilidades (apesar de termos que ver código fonte do framework e esperar por correções de alguns bugs para podermos utilizar alguns componentes), mas talvez por ser um framework relativamente novo ainda não possui clientes que confiem que sua performance será tão boa quanto a de outros frameworks que já estão sendo utilizados há tempos (JSF ou Struts).

Por isso, na minha opinião, fica mais complicado entrar em um mercado onde já existem vários Frameworks Web e alguns já sendo utilizados em grande escala com clientes sérios e competitivos.

Miojo, vc conhece aplicações que tiveram sucesso tanto no desenvolvimento quanto na entrega em produção utilizando em sua camada web o framework Wicket? Sugestão: se sim, seria legal um post, pois vejo vc como referência Nacional de conhecimento de Wicket e não existe melhor pessoa para fazer isso.

Bruno Borges disse...

Existem diversos sites já utilizando Wicket em produção no resto do mundo. Esta lista pode ser encontrada na própria Wiki do framework:

http://cwiki.apache.org/WICKET/#Index-SitesusingWicket

Quanto ao Brasil, sei de projetos que o utilizam, mas estão em produção somente em ambientes corporativos, sem divulgação ao público. Geralmente projetos de Back Office.

Outro site grande que utiliza Wicket, é o Thoof.com, que é concorrente direto do Digg.com.

[]'s!

Anônimo disse...

A amostragem do whiteboard do evento JavaPolis 2007 é relativamente pequena para ser considerada uma boa mostra de mercado (258 votos em Web Frameworks).

Certamente JSF teve forte votação por ser uma especificação padrão da plataforma Java EE e que já conta com boas bibliotecas de componentes, livres e comerciais.

BTW, Bruno Borges, os componentes do NetBeans, quase todos originários do Sun Creator Studio, compoem o Projeto Woodstock.

A base instalada e o número de profissionais com domínio de Struts (principalmente 1.x) ainda é muito grande no mercado. Por isso sua grande votação.

Tecnologias que têm grande efetividade e popularização perduram por muito tempo, mesmo quando já estão superadas por outras tecnologias mais modernas. Veja a sobrevida de Clipper ou Cobol, por exemplo.

Um dos motivos mais prováveis do grande uso do Spring MVC é o fato que o framework Spring é muito utilizado, principalmente a parte de contêiner IoC. Muitos desenvolvedores devem aproveitar que já usam o Spring pela IoC e acabam, por comodidade, usando também a sua parte MVC.

Quanto ao Wicket, tenho ouvido falar muito bem de sua facilidade e produtividade, realmente. Parece ser o atual detentor do título de "o framework mais inovativo e com a comunidade de usuários mais fervorosa", troféu que já pertenceu ao Tapestry...

Handerson: o site do JavaPolis dá a entender que os quadros brancos estiveram espalhados durante o evento, para livre preenchimento pelos participantes.

Bruno Borges: parabéns pelo post e pelo blog!

Anônimo disse...

Olá,

Não vim criticar, mas o que você acha de solucões que se baseiam em VM para a view? melhor dizendo o que você acha do Adobe Flex ?

Sou desenvolvedor java, e já trabalhei com Struts e brinquei com JSF... mas depois que conheci o poderoso framework Adobe Flex, me dói o coração ver essas técnologias como Top de linhas...

Obrigado pela atenção.

email: contato@digows.com
blog: http://blog.digows.com

Anônimo disse...

Excelente post! Parabens

Contato

Email:bruno.borges(at)gmail.com

LinkedIn: www.linkedin.com/in/brunocborges
Twitter: www.twitter.com/brunoborges
Comprei e Não Vou
Rio de Janeiro, RJ Brasil
Oracle
São Paulo, SP Brasil