Mais uma comparação entre frameworks web

[quote=YvGa]
Vc conhece o VRaptor?

É como eu disse, eu tenho pessimas impressões das primeiras versões, mas como já faz tempo que parei de procurar framework web, nem vi mais o JSF. Além de que, pelo que dizem, aquele ciclo de vida ainda está lá, com seus listeners, suas fases, suas árvores de componente. Então, ainda tenho minhas dúvidas, mesmo com as implementações atuais.

Existe algum caso por aqui de alguém que experimentou o VRaptor e desistiu dele? Se sim, por que?[/quote]

Sim, é um ótimo framework, mas sou um péssimo “web designer”! A produtividade que digo que o JSF é em relação as views. Com ele essa tarefa se torna extremamente simples, porém se perde em flexibilidade. Já com com frameworks action based como o VRaptor eu ganho em flexibilidade no design da view, porém aumento a complexidade para cria-la.

Eu JSF permite que “programadores” criem views de forma simples e rápida. Agora se o cara é um bom designer (eu nunca conheci um programador que você), ou se ele trabalha em conjunto com um web designer o ganho em flexibilidade ganho na utilização de um framework action based supera as facilidades do JSF. O programador, nesse caso, se preocuparia apenas com o html e o javascript e deixaria o CSS a cargo do designer.

Mesmo quando apenas programadores trabalham (que para web é longe de ser recomendado), é possível ter design razoável com action based usando frameworks de front-end como Bootstrap ou JQueryUI, além de plugins JQuery para gráficos estatísticos, CSS prontos para grids, etc. Tem muita coisa pronta de design para se adaptar. De resto é mais abrir a mente para a programação web normal, se acostumar mais com HTML puro, JQuery e mais pra frente vai ver que ganhará pelo lado da liberdade. Mas não descarte um dia trabalhar em parceria com um designer nem que seja freelance, terá mais retornos assim.

Abri a página o primefaces e tirei um screen shot (em anexo).

Só teve um request disparado para buscar a página, o resto foi conteúdo estático (png, gif, etc).

E essa página é o showcase, então ele carrega tudo. Em um programa normal, não teria isso.

Ele chama a mesma classe diversas vezes enquanto produz a saída pois é o comportamento normal de component based.

Tem que saber trabalhar com isso, se não, o request fica lento, ferra com perfomance e depois a culpa vira do JSF…


[quote=juliocbq][quote=Hebert Coelho][quote=YvGa]Cara, eu era um crítico ferrenho do JSF, não gostava dele, achava complexo, com implementações mal documentadas na época que usei (richfaces), que falhava em silêncio, dava uma série de problemas relacionados a eu não saber usar (ou seja era pouco intuitivo) e com componentes complexos.

Hoje não critico mais JSF porque não trabalho mais com ele e porque não sei a quantas andam as versões atuais. Mas meu preconceito contra ele continua grande. Principalmente do ponto de vista de quem trabalha com VRaptor, que é extraordinário, na minha humilde opinião.

Mas de tanto argumentar e contra-argumentar e argumentar novamente do porque eu não gostava do JSF eu desenvolvi uma linha de raciocínio que já não sei se é valida hoje, mas com certeza era a época do JSF 1 e richfacesl. Que se baseia nos porquês de se componetizar elementos de tela. Quando você está lidando com uma aplicação desktop no Windows trabalhar os seus controles de entrada e saida de dados diretamente com a API padrão do Windows é impensável. O que foi feito com as APIs do VB e Delphi foi simplificar o acesso a API de entrada e saída de dados, com componentes bem amigáveis, intuitivos e fáceis de configurar.

Mas os componentes de entrada e saída html são extramente simples para serem simplificados, então essa componentização (na minha opinião), que começou pelo .NET e depois veio para o Java, veio para atender o hábito que a maioria dos programadores tinha de lidar com componentes ao invés de ações. Porém o que as camadas de componentes fizeram (camadas porque no fundo vira tudo em html mesmo) foi complicar o que era simples.

Hoje eu digo que não gosto de JSF porque html já é simples o suficiente para ser componentizado. Claro, a listas e grids e e outras coisas que não são tão simples com html, mas será que essas exceções compensam essa complicação toda.

Agora me digam uma coisa: Aquele ciclo de vida infame do JSF já foi banido? Se não, muito obrigado, mas eu continuo preferindo eu aqui e ele lá.
[/quote]O JSF 2.0 mudou muito, mas muito mesmo com relação ao 1.2.

Eu odeio JSF 1.x. [=[/quote]

O problema que vejo são os componentes por demais engessados.[/quote]Crie o seu.
Se você faz algo com Struts, Spring MVC vc usa algum componente css pronto ou então faz na unha. Pq que com JSF seria diferente?

[quote=bob_sponja]Pois é, as minhas opiniões não foram pra desmerecer nenhum framework. Eu só achei algumas defesas do artigo incoerentes…

E em relação ao JSF, eu entrei aqui em outro tópico há um tempo e desci a lenha, mas baseado na versão 1.2. Ela tinha tanto problema que não tive saco pra ir atrás da versão 2, e o Hebert Coelho me criticou (sabiamente, diga-se de passagem) porque estava falando mal de algo que nem tinha me disposto a conhecer.

Pois bem, fui atrás (inclusive comprei seu livro Hebert =]), estudei e vi que realmente tinha melhorado bastante…

Hj eu fico com action-based porque gosto de ter a liberdade na visão, e não acho que “esconder” a web num “desktop” seja algo tão benéfico pq tira o que o HTTP tem de melhor (ser stateless). Mas não posso negar que a versão 2 está boa e é a melhor opção pra quem migra de delphi, oracle forms e afins…[/quote]Opa, valeu pela força.

Só um detalhe. Já está disponível nas novas versões do JSF a opção de deixá-lo stateles. =D

[quote=Hebert Coelho]Crie o seu.
Se você faz algo com Struts, Spring MVC vc usa algum componente css pronto ou então faz na unha. Pq que com JSF seria diferente?[/quote]

Mas eu faço isso. Crio todos. Inclusive aquele componente de captura de vídeo que postei feito em dart que você comentou.

No seu exemplo acima, experimenta usar o componente e clicar na aba network. Dai me fala .

Fora que existem gargalos na renderização de componentes como alguns do primefaces como mostra o screenshot abaixo.