[RESOLVIDO] JSF (+ PrimeFaces) x JQuery UI

6 respostas
F

Boa tarde a todos!

Gostaria de levantar um debate aqui no forúm.
Procurei pela internet e aqui no GUJ também, mas não vi ninguém discutindo sobre isso.

Percebo que o JQuery UI vem ganhando bastante mercado no ambiente web, independente da linguagem utilizada.
Já o JSF está consolidado na linguagem Java, afinal de contas faz parte até da especificação JEE.

Mas indo direto ao assunto, vou desenvolver um projeto que será acessado por diversas empresas, ficando o projeto então
em alguma hospedagem locaweb da vida. O máximo de usuário que o mesmo terá será 5 mil no decorrer dos anos,
isso em um cenário perfeito, mas na média provavelmente serão uns 600 usuário. Outra questão é que o sistema
não será usado full time pelos usuários, será voltado mais para cadastros e consultas.

A minha preferência para a camada view é utilizar JSF + PrimeFaces, por vários motivos, entre eles a facilidade e grande
quantidade de componetes. Porém, como não estou tratando de uma intranet, fiquei preocupado com o consumo do trafego
de rede do servidor e com uma possível lentidão ao carregar ás páginas no computador do usuário.
Essa minha preocupação vem porque, reza a lenda, que o JSF gera muita “sujeira”, aumentando assim o tamanho das páginas,
e também o que se diz é que o JQuery UI não causa essas “sujeiras”.

Até certo ponto acredito que isso seja verdade (apenas acredito, não tenho certeza), mas não sei até que ponto isso pode
influênciar na minha decisão final.

Então peço a ajuda de vocês com seus conhecimentos técnicos, quanto a um projeto deste porte poder ou não ser prejudicial
utilizar JSF+Primefaces! :smiley:

6 Respostas

M

da uma olhada nisso daqui: http://www.guj.com.br/java/262129-conclusao-resolvidapor-que-as-pessoa-nao-indicam-jsf-e-falam-que-e-u-lixo/3

em resumo, você consegue desempenho melhor sim, usando jquery mais algum framework action based, porém essa melhora no desempenho é de uma forma geral na ordem dos milisegundos, é coisa pouca…

esse é um assunto bastante polêmico…

F

Então posso considerar que a diferença entre os dois recursos não é uma preocupação quanto ao tamanho das páginas geradas/trafego de rede?

Deu pra perceber, pelo link que você passou, que realmente é bem polêmico!

Mas de uma maneira geral, também compreendi que a maior polêmica está entre ter total controle na customização da camada view.
No meu caso os camponentes do PrimeFaces dão e sobram. E conhecendo a regra de negócio para onde meu sistema irá servir e
tenho a certeza que não surgirá nada de novo ao ponto de precisar de coisas mirabolantes dos componentes.

E se atentando com as dicas no blog do Rafael Ponte (http://www.rponte.com.br/2007/10/14/state_saving_method-server-ou-client/) citado
também no outro post, posso ficar tranquilo ao usar JSF.

Logo, estão corretas minhas conclusões?

F

Essa minha preocupação vem porque, reza a lenda, que o JSF gera muita “sujeira”, aumentando assim o tamanho das páginas,
e também o que se diz é que o JQuery UI não causa essas “sujeiras”

Vamos algumas considerações para sua tomada de decisão…

  • JSF é statefull. Ou seja, essa “sujeira” na verdade são todos os controles que vão fazer o framework funcionar.
  • Existe muitos parâmetros que vc pode gerenciar para reduzir esse fato que pode ou não ser chamado de overhead. Armazenar o estado da view da pagina é uma delas…mas podem ter outras. Ou seja, vc pode usar JSF como stateless…o estado no server é apenas controles singleton do framework.
  • Vc fica livre para escolher uma implementação de JSF de preferencia. Oque eu quero dize? Se o fornecedor de JSF X faz lambança na sua implementação, não quer dizer que JSF é ruim…é só vc trocar de provedor…ja aconteceu comigo. Ex: MyFaces é um implementação bem ruim…quando troquei por outro, mutas coisas ficaram melhor…não vou entrar nesse assunto.
  • Não fique indo pelas “lendas”…minha maior solução hoje é JSF com 10 mil usuários habilitados rodando em 1 tomcat com 2 gb com uma media de 1 mil usuários simultâneos. Use como parâmetro…Vc acha pouco ou muito? Tudo depende de como a solução faz o gerenciamento de estado do perfil da aplicação. Todos nos sabemos que escalabilidade é sinônimo de STATELESS, mas tudo depende do cenário.
  • Usar JQuey com JSF sim…(tem vários provedores de componentes que ja fazem essa ligação) Vc ganhar todas as features do JSF - validação, conversão, event handlers, I18N, I10L, produtividade, bla bla bla…
  • Usar JQuery Puro com qualquer outro “server side” tb fica muito bom…mas vc ter que acabar fazendo coisas na unha caso as tecnologias que vc escolha não tenha tais features, ou seja…vc acaba escrevendo as mesmas “sujeiras de controle”.
F

Fernando, muito obrigado pela resposta, me tirou muitos receios.

Só para finalizar quanto a solução que irei desenvolver, mas fugindo um pouco do assunto principal que é JSF x JQuery UI…
Quanto a

minha maior solução hoje é JSF com 10 mil usuários habilitados rodando em 1 tomcat com 2 gb com uma media de 1 mil usuários simultâneos

essa é uma solução que roda na internet ou em uma intranet? No caso de internet você considera então que sua aplicação tem um tempo de resposta aceitável/normal?
Você utiliza o JSF como stateless, nesta solução? Se sim, é melhor para este seu cenário?

Não quero prolongar muito essa conversa porque já saiu do escopo principal da minha dúvida, então se preferir responder apenas de forma superficial, se é pior
ou melhor, e depois me aprofundo em cada uma destas questões em particular.

F
  1. Internet = https://wwws2.uniprimepr.com.br
  2. Ótimo tempo de resposta ! OBS - JSF praticamente não influencia no tempo de resposta…o gargalo de tempo de resposta ruim são outro fatores…
  3. Eu uso JSF view state=server. Pq? Gasta mais RAM na JVM, mas o tamanho do XHTML final é muito menor. Ou seja, mais rápido o trafego HTTP.

Hoje temos 1 cluster passivo de 2 tomcat com 2 GB atendendo 10 mil usuarios. E pelas minhas estatísticas esse estamos usando 40% do recursos. Ou seja, pela media podemos atender até 20 mil. Caso um dia isso chegar acontecer, posso escalar verticalmente tunnando minha solução deixando mais stateless ou acrescentando mais recursos…Ou escalar verticalmente com mais um NODE. Use isso como parâmetro…
Conclusão…JSF é statefull…sim…mas gasta tanto assim? claro que não…tudo ainda de praticas arquiteturais do solução, tempo de time out, objetos na sessão, cache 2 e 3 nivel…bla bla bla…

Se o seu cenário é maior… e usar um framework ACTION-BASE stateless vai ser melhor…vai fundo! VRAPTOR é excelente!

Fato é que JSF é muito bom e cumpre seu papel conforme suas características de uso. Mas usar JSF como ACTION BASE 100% STATELESS não da certo…pq ele não feito para isso (http://fernandofranzini.wordpress.com/2012/07/03/diferenca-entre-mvc-action-based-e-component-based/). Esse é problema das pessoas…criticar o uso de algo que não foi feito para aquele fim…ou seja…seria falar mal de um GPS por que ele não toca MP3! O erro não é o produto e sim selecionar algo para fazer uma coisa no qual ele não atende…

F

Fernando,

Quanto a minha solução, não será nem metade requisitada quanto a sua!

Agora estou 100% tranquilo, o que falatava também era saber de algum case de sucesso.
Todas suas informações me foram muito úteis.

Agradeço novamente!

Criado 11 de julho de 2012
Ultima resposta 12 de jul. de 2012
Respostas 6
Participantes 3