Crise com JSF

Estou criando este tópico para ver alguem ja passou por isso, e quem sabe, para ajudar a todos que estão passando por mesmo problema.

Eu já trabalhei em projetos com JSF 2, Struts 1.x e 2.

Hoje eu tenho projetos em JSF 2, que podemos considerar como crítico (24X7), clusterizado .

Gostei do JSF 2, é fácil, produtivo, bonito… Afinal de contas…É especificação…sic…

No entanto, acho que me decepcionei. Ele é amarrado e tem cheiro de POG. Usando ele ficamos escravos de componentes. Escravos de biblioteca de terceiros. JSF 2 é atraente. Mas ele é sujo. Tonelada de códigos sujos gerados. milhoes de JS importados. Compromete a performance. Já que front-end é um dos maiores problemas de performance (vide o livro: High Performance Web Sites: Essential Knowledge for Front-End Engineers )

Com JSF não temos liberdade na view. Teve projetos que perdi 3 dias de trabalho por causa de bugs de renderização. Coisa que se fosse html, css e jquery resolveria em poucas horas. Ele foi inspirado pelo Aspx que é outro POG. Essa questão de ligar o Model pelo Evento é bacana para Desktop. Web não é desktop. Web é ação, é requisição, é reposta, tudo por http.

Será que é coisa de momento? Ou realmente devo mudar de foco?

Grato.

Não tenho uma resposta para você.
Mas essa é uma bela reflexão…

Nesse caso o jeito é voltar a utilizar Struts.

Nenhuma tecnologia serve para todos os problemas.

Eu acho o seguinte: Em qualquer que seja o framework, orientado a eventos ou a ação, a POG é por conta do programador. JSF hoje é um framework mais utilizada pela comunidade que desenvolve para web e tem crescido cada vez mais.
Dizer que fica escravo dos componentes é não ter entedido a filosofia do framework. JSF, como você mesmo disse, é apenas uma especificação e a implementação fica a critério de quem o fizer.

JS importados, CSS, ou html gerado não seria um trabalho que você iria fazer na mão e o framework gera pra você? Isso não é do framework, faz parte do desenvolvimento web em java como o todo. Nunca programei com Struts, mas lá certamente deve existir um conjunto de TAGLIBS, certo? Essas páginas com essas taglibs devem ser transformadas em HTML para que o browser entenda, ou seja, código gerado novamente.

JSTL? Também são TAGLIBS que vão virá código HTML.

Bom, sobrou programar em java pra web com apenas Servlet e JSP. Que tal?

O que quero dizer é que esses framework vieram para de alguma forma tornar o desenvolvimento web mais produtivo e elegante. Por exemplo, quando desenvolvemos com JSF2 e Primefaces, os componentes são os mesmo do JQuery apenas com uma facilidade maior de uso e com a possibilidade de vincular componentes com atributos de objetos java.

Abraços.

Sinceramente?

Depois de trabalhar com Java e Web há anos, e vendo o pessoal reclamar da dificuldade de aprender, e acompanhar tantas tecnologias, PHP, Cold Fusion, Struts 1 e 2, Spring MVC, Wicket, JSTL, JSF, Seam, Tapestry, GWT, Django, Rails, Grails, Lift, etc…

Quer saber de verdade mesmo?

Misturar código server-side com client-side sempre dá merda.

Oi Lucas,

Concordo com vc que fica um pouco mais pesado a parte web, mas vc esta usando o JSF para fazer aplicação de interface mais rica, com mais opções de componentes e tudo mais…

Com relação a ser escravo de bibliotecas de terceiros hj vc já tem algumas bibliotecas muito boas, se não quer usar eles vc mesmo pode criar seus componentes.

O que vc pode fazer para tentar melhorar a performance é verificar se precisa de todos os componentes ricos na tela, se pode compactar os .css, .js e requisições.

No começo vc apanha um pouco para aprender como usar as tags do JSF, as vezes acaba caindo em algum bug de componentes de terceiro (o que normalmente é resolvido de forma rápida) e demora um pouco até perceber ou encontrar uma outra forma (não POG) de obter um resultado similar.

Eu acredito que esse problema de perfomance principalmente na web é porque a Internet que usamos é uma carroça e precisamos melhorar na aplicação o que não conseguimos com o serviço de Internet.

Você já viu quantos imports de JS o Primefaces faz? Se fosse fazer com jQuery puro, poderia juntar tudo em um arquivo só e comprimir.

JSTL não envolve CSS e JS diferente de tags do Primefaces ou similiar, por exemplo

Pensei seriamente nisso. Pelo menos tenho total liberdade. Além de Servlet puro (que na versão do JEE 6 está muito bom), pensei muito no VRaptor 3.

Eu disse que JSF 2 com as bibliotecas são produtivas, não nego.

Quanto a ser mesmo componente de jQuery, concordo. Mas a forma de manipular é diferente. É só entrar nos foruns de Prime ou Richfaces que voce vê zilhoes de bug com DataTable, Calendar, etc, que ainda nao foram revolvidos, porque nao temos controle da renderização. Até tem, mas com um pouco de dificuldade.

Enfim, não quero tacar pedra em JSF, como disse, eu o uso. E usarei em futuros projetos.

Mas sinceramente estou frustado com JSF. E são opiniões que eu quero mesmo.

Valeu.

[quote=Bruno Laturner]

Misturar código server-side com client-side sempre dá merda.[/quote]

Oi, é o que o JSF faz, e estou sentindo na pele, rsrs.

http://www.playframework.org

O que eu sinto com todos os frameworks MVC é que eles são lindos, maravilhosos, desde que você não precise fazer nada que eles não dão suporte “nativo”.

A partir do momento que vc precisa fazer uma coisinha, que escapa um pouco do que o framework te oferece, se prepare para ficar irritado e gastar bastante tempo criando workarounds para fazer o que você precisa.

É claro que muita coisa é automatizada, te dá produtividade e tal, mas tem hora que parece não compensar.

[]'s

me pareceu uma versão em java do rails…

Não considera um risco desnecessário usar uma tecnologia ainda em fase de amadurecimento num projeto critico?

Uso o JSF 1.2 com RichFaces,Spring e JPA em projetos médio/grande porte e não tenho do que reclamar.

[quote=raf4ever][quote=Lucas Emanuel]
Hoje eu tenho projetos em JSF 2, que podemos considerar como crítico (24X7), clusterizado .
[/quote]

Não considera um risco desnecessário usar uma tecnologia ainda em fase de amadurecimento num projeto critico?

Uso o JSF 1.2 com RichFaces,Spring e JPA em projetos médio/grande porte e não tenho do que reclamar.[/quote]

Eu tive um pouco de receio sim.

Mas eu já tinha um projeto em JSF 2 rodando (Sistema de Ponto), e rodou legal. Portanto partimos novamente com JSF 2 (Prime+ JPA + EJB 3.1 +Glassfish 3.1) neste projeto “mais pesado”. Além disso usamos CDI(nativo) e Prettyfaces, e até o momento nao tivemos problemas de estabilidade.

Pode ser uma sensação pessoal. Mas, depois de 3 projetos com JSF, achei ele amarrado. Não sou o primeiro a dizer isso por aqui.

Use Vraptor3 HTML/CSS e JAVASCRIPT =D

Não penso dessa forma.

Comecei a pouco tempo com JSF 2.0, e tinha trabalhado com 1.2 à algum tempo atras, e percebi que ele não é tão facil.
Mas muitas coisas que você diz que é um “Bug” na verdade são instruções (Coisas) que você fez de forma incorreta por não conhecer a fundo o próprio JSF (Ciclo de vida, árvore de componentes, converters, validators, etc).

JSF é bom, mas não é pra qualquer um não. Penso assim.

xD~~

[quote=Lucas Emanuel]Estou criando este tópico para ver alguem ja passou por isso, e quem sabe, para ajudar a todos que estão passando por mesmo problema.

Será que é coisa de momento? Ou realmente devo mudar de foco?[/quote]

Bem vindo ao clube :wink:

Há anos venho defendendo o modelo que carinhosamente apelidei de MVC3 http://www.milfont.org/tech/2008/09/08/mvc-model-3-e-camadas/
Hoje em dia está moleza já na época reconheço, era complicado.

Use VRaptor com tecnologias como Sammy.js para orquestrar seus controllers, abuse do estilo restful de frameworks como Rails [Guilherme Silveira vem já dizer: “isso não é rest, isso não é rest” :)], estupre o jquery, faça bom e mal uso de Extjs ou Flex, mas pelo amor de Javé, abandone #JSFail.

[quote=cmilfont]Há anos venho defendendo o modelo que carinhosamente apelidei de MVC3 http://www.milfont.org/tech/2008/09/08/mvc-model-3-e-camadas/
Hoje em dia está moleza já na época reconheço, era complicado.

Use VRaptor com tecnologias como Sammy.js para orquestrar seus controllers, abuse do estilo restful de frameworks como Rails [Guilherme Silveira vem já dizer: “isso não é rest, isso não é rest” :)], estupre o jquery, faça bom e mal uso de Extjs ou Flex, mas pelo amor de Javé, abandone #JSFail.[/quote]

Oi muito legal, nao tinha visto ainda.

Nesse modelo voce nao usa nem as jsps?

[quote=Lucas Emanuel][quote=cmilfont]Há anos venho defendendo o modelo que carinhosamente apelidei de MVC3 http://www.milfont.org/tech/2008/09/08/mvc-model-3-e-camadas/
Hoje em dia está moleza já na época reconheço, era complicado.

Use VRaptor com tecnologias como Sammy.js para orquestrar seus controllers, abuse do estilo restful de frameworks como Rails [Guilherme Silveira vem já dizer: “isso não é rest, isso não é rest” :)], estupre o jquery, faça bom e mal uso de Extjs ou Flex, mas pelo amor de Javé, abandone #JSFail.[/quote]

Oi muito legal, nao tinha visto ainda.

Nesse modelo voce nao usa nem as jsps? [/quote]

Lucas, hoje em dia não mais, as engines de template para javascript estão bem evoluídas, fora que voce tem muitas opções http://stackoverflow.com/questions/552934/what-javascript-templating-engine-do-you-recommend
Geralmente uso o https://github.com/janl/mustache.js/ em projetos com jquery e sammy.js ou o XTemplate do Extjs em projetos que posso utilizá-lo http://dev.sencha.com/deploy/dev/docs/?class=Ext.XTemplate.

Voce ainda pode usar versões de haml em js para manter o mesmo padrão em server-side e client-side com tecnologias diferentes. Quem usa o Sammy tem várias opções https://github.com/quirkey/sammy/tree/master/lib/plugins

[quote=cmilfont][quote=Lucas Emanuel][quote=cmilfont]Há anos venho defendendo o modelo que carinhosamente apelidei de MVC3 http://www.milfont.org/tech/2008/09/08/mvc-model-3-e-camadas/
Hoje em dia está moleza já na época reconheço, era complicado.

Use VRaptor com tecnologias como Sammy.js para orquestrar seus controllers, abuse do estilo restful de frameworks como Rails [Guilherme Silveira vem já dizer: “isso não é rest, isso não é rest” :)], estupre o jquery, faça bom e mal uso de Extjs ou Flex, mas pelo amor de Javé, abandone #JSFail.[/quote]

Oi muito legal, nao tinha visto ainda.

Nesse modelo voce nao usa nem as jsps? [/quote]

Lucas, hoje em dia não mais, as engines de template para javascript estão bem evoluídas, fora que voce tem muitas opções http://stackoverflow.com/questions/552934/what-javascript-templating-engine-do-you-recommend
Geralmente uso o https://github.com/janl/mustache.js/ em projetos com jquery e sammy.js ou o XTemplate do Extjs em projetos que posso utilizá-lo http://dev.sencha.com/deploy/dev/docs/?class=Ext.XTemplate.

Voce ainda pode usar versões de haml em js para manter o mesmo padrão em server-side e client-side com tecnologias diferentes. Quem usa o Sammy tem várias opções https://github.com/quirkey/sammy/tree/master/lib/plugins
[/quote]

E o que voce usa como controller? Servlet puro? Vraptor? Pergunto pois fiquei interessado.

Abraço!