Desvantagens de JSF

Não vejo isto como desvantagem, o que vc não pode fazer é deixar recursos pesados (conexões abertas, estrutura de dados enormes, etc…) anexados nestes beans. Esta questão está mais relacionada com boas praticas de programação e arquitetura mais elaborada.

flws

[quote=fantomas]Não vejo isto como desvantagem, o que vc não pode fazer é deixar recursos pesados (conexões abertas, estrutura de dados enormes, etc…) anexados nestes beans. Esta questão está mais relacionada com boas praticas de programação e arquitetura mais elaborada.
[/quote]

Onde posso encontrar documentações que explica como lidar com isso (algum manual de boas praticas para jsf) ? caso tenha estruturas de dados enormes não sei como fugir de anexar elas.

Obrigado,

Marcelo Gomes

Isso depende apenas de como você configura o escopo dos seus managed beans. Se todos forem configurados com escopo de request, será sim criada uma nova instância para cada requisição. Se forem configurados com escopo de session, haverá uma única instância do managed bean para cada sessão do usuário. Finalmente, se forem configurados com escopo de application, haverá apenas uma instância daquele managed bean para toda a aplicação.

Ou seja, tudo é uma questão de configurar o escopo adequado para cada managed bean.

A melhor forma de lidar com isso é aprendendo a usar completamente o framework. Geralmente o desenvolvedor aprende JSF no momento em que precisa utilizá-lo, e acaba pulando conceitos básicos - como o ciclo de vida da página de JSF, que é um dos mais importantes - que influenciam na sua forma de desenvolver.

Este post do Rafael Ponte mostra um roteiro de aprendizado do framework JSF. Bastante completo, por sinal. Recomendaria também ler o livro Core JSF e também o tutorial de JSF do Core Servlets.

Obrigado pelas dicas. :smiley:

JSF é lixo! Trabalhei um ano e meio com essa porcaria e ainda não entendo como alguém gosta da fazer as coisas pela maneira mais difícil. Como os problemas são vários, vou citar a pior delas:

- Dada uma lista de ítem (exibido por MenuItem ou por DataTable), exibir uma nova página que detalha esse simples elemento:
Se fosse num framework action-based de verdade, tudo que seria necessário era “apendar” o id do elemento desejado no link da nova página. Maaaaaaasss, é o JSF né? Precisa ser beeem mais difícil! É assim, se for um MenuItem, então monta um Map de valores que aparecerão como chave (acredite, não é nada intuitivo), depois crie uma propriedade get/set que receba o valor selecionado, e depois se vira com esse valor. Se for um DataTable, melhor o objeto encapsular um DataModel, porque aí eu chamaria o getObject() (de novo, nada intuitivo) desse model que devolve o elemento selecionado. Se não puder encapsular com DataModel, está na roça!

Detalhe, nos dois casos, sou obrigado a usar Session! Se eu utilizar Request, a lista de elementos desaparece e o JSF não sabe o que fazer. Já tentei usar escopo Page no JSF 2.0 Beta e, incrivelmente, dá erros muito mais estranhos.

Ai, como a solução oficial não atende, existem os famosos hacks de JSF que fica pegando o que foi colocado em <f:param/>, que deixa uma macarronada no código.

Não é o único problema, como disse antes, é apenas o pior. E não me venha dizer que eu não conheço o “maravilhoso” ciclo de vida do JSF. Conheço de cor-e-salteado, porque a burrice do framework me obrigou a isso.

[quote=Leonardo3001]JSF é lixo! Trabalhei um ano e meio com essa porcaria e ainda não entendo como alguém gosta da fazer as coisas pela maneira mais difícil.

Não é o único problema, como disse antes, é apenas o pior. E não me venha dizer que eu não conheço o “maravilhoso” ciclo de vida do JSF. Conheço de cor-e-salteado, porque a burrice do framework me obrigou a isso.
[/quote]

Desculpa te dizer isso, mas você ainda não sabe bem usar o JSF.

Esse problema da lista desaparecer se botar com o escopo de request tem solução.

é só usar o a4j:keepAlive do richfaces… dá uma olhada no lide demo dele…

Eu concordo que usar o JSF puro é ruim, mas uma vez que você consegue entendê-lo e usar bibliotecas de terceiros você vai ver que ele pode ser muito produtivo e intuitivo. Porém gosto é gosto.

[quote=SanjuanRJ][quote=Leonardo3001]JSF é lixo! Trabalhei um ano e meio com essa porcaria e ainda não entendo como alguém gosta da fazer as coisas pela maneira mais difícil.

Não é o único problema, como disse antes, é apenas o pior. E não me venha dizer que eu não conheço o “maravilhoso” ciclo de vida do JSF. Conheço de cor-e-salteado, porque a burrice do framework me obrigou a isso.
[/quote]

Desculpa te dizer isso, mas você ainda não sabe bem usar o JSF.

Esse problema da lista desaparecer se botar com o escopo de request tem solução.

é só usar o a4j:keepAlive do richfaces… dá uma olhada no lide demo dele…

Eu concordo que usar o JSF puro é ruim, mas uma vez que você consegue entendê-lo e usar bibliotecas de terceiros você vai ver que ele pode ser muito produtivo e intuitivo. Porém gosto é gosto.[/quote]

Achei muito curiosa sua opinião, o que vc indicaria struts 1, 2…?

[quote=Leonardo3001]JSF é lixo! Trabalhei um ano e meio com essa porcaria e ainda não entendo como alguém gosta da fazer as coisas pela maneira mais difícil. Como os problemas são vários, vou citar a pior delas:

- Dada uma lista de ítem (exibido por MenuItem ou por DataTable), exibir uma nova página que detalha esse simples elemento:
Se fosse num framework action-based de verdade, tudo que seria necessário era “apendar” o id do elemento desejado no link da nova página. Maaaaaaasss, é o JSF né? Precisa ser beeem mais difícil! É assim, se for um MenuItem, então monta um Map de valores que aparecerão como chave (acredite, não é nada intuitivo), depois crie uma propriedade get/set que receba o valor selecionado, e depois se vira com esse valor. Se for um DataTable, melhor o objeto encapsular um DataModel, porque aí eu chamaria o getObject() (de novo, nada intuitivo) desse model que devolve o elemento selecionado. Se não puder encapsular com DataModel, está na roça!

Detalhe, nos dois casos, sou obrigado a usar Session! Se eu utilizar Request, a lista de elementos desaparece e o JSF não sabe o que fazer. Já tentei usar escopo Page no JSF 2.0 Beta e, incrivelmente, dá erros muito mais estranhos.

Ai, como a solução oficial não atende, existem os famosos hacks de JSF que fica pegando o que foi colocado em <f:param/>, que deixa uma macarronada no código.

Não é o único problema, como disse antes, é apenas o pior. E não me venha dizer que eu não conheço o “maravilhoso” ciclo de vida do JSF. Conheço de cor-e-salteado, porque a burrice do framework me obrigou a isso.
[/quote]

eu concordo em genero, numero e grau… apesar de eu usar jsf no dia a dia, e modestia a parte gosto de trabalhar com ele …

ele na maioria das vezes complica as coisas … mas eu acho que sou masoquista :twisted:

e vc precisa fazer do ciclo de vida do jsf seu livro da cabeceira da cama, aquele que vc le antes de dormir … se naum n tem como trabalhar com ele satisfatoriamente

[quote=Leonardo3001]JSF é lixo! Trabalhei um ano e meio com essa porcaria e ainda não entendo como alguém gosta da fazer as coisas pela maneira mais difícil. Como os problemas são vários, vou citar a pior delas…
[/quote]

Cara…vou ter que concordar com o amigo acima. Você não conhece o JSF ou não possui o paradigma de frameworks Component Based bem definido. Se JSF fosse ruim ele não seria maioria absoluta nas empresas quem empregam o JEE.

[quote=SanjuanRJ]Desculpa te dizer isso, mas você ainda não sabe bem usar o JSF.

Esse problema da lista desaparecer se botar com o escopo de request tem solução.

é só usar o a4j:keepAlive do richfaces… dá uma olhada no lide demo dele…

Eu concordo que usar o JSF puro é ruim, mas uma vez que você consegue entendê-lo e usar bibliotecas de terceiros você vai ver que ele pode ser muito produtivo e intuitivo. Porém gosto é gosto.[/quote]

Claro!

Vejamos, tenho a camada web “pura” (Servlets e JSP). Aí adiciono uma camada acima, o JSF, que cria um paradigma esquisito que cria uma série de problemas. Solução? Use uma biblioteca que fica em cima do JSF pra consertar o que ele mesmo errou!

Ótimo!

Conheço o JSF, como disse antes, trabalhei com ele por um ano e meio. O grande problema dos fanáticos do JSF é o tal do “paradigma do sei-lá-o-quê” que só o JSF tem! Aí, quando alguém questiona a maneira idiota de se fazer programas web com JSF, é porque não conhecem o paradigma mágico ou o ciclo de vida bem definido que esse “maravilhoso” framework tem.

Ah, tenha dó!

[quote=Leonardo3001][quote=SanjuanRJ]Desculpa te dizer isso, mas você ainda não sabe bem usar o JSF.

Esse problema da lista desaparecer se botar com o escopo de request tem solução.

é só usar o a4j:keepAlive do richfaces… dá uma olhada no lide demo dele…

Eu concordo que usar o JSF puro é ruim, mas uma vez que você consegue entendê-lo e usar bibliotecas de terceiros você vai ver que ele pode ser muito produtivo e intuitivo. Porém gosto é gosto.[/quote]

Claro!

Vejamos, tenho a camada web “pura” (Servlets e JSP). Aí adiciono uma camada acima, o JSF, que cria um paradigma esquisito que cria uma série de problemas. Solução? Use uma biblioteca que fica em cima do JSF pra consertar o que ele mesmo errou!

Ótimo![/quote]

Nisso eu concordo com você. Mas a solução é relativamente simples. É óbvio que nada é perfeito, mas o que você recomendaria???

O JSF é o framework com que eu tenho mais produtividade no momento. Se vc sugerir algum outro eu vou dar uma estudada.

Ainda tenho muito o que estudar então não vou entrar no merito do que é melhor ou pior, mas realmente fico curioso com qual framework atual pode ser mais produtivo que o jsf.

Com o ganho de espaço que o jsf esta tendo, acho que ele é o caminho e é o que estou estudando…

[quote=marcelogomesrp]Ainda tenho muito o que estudar então não vou entrar no merito do que é melhor ou pior, mas realmente fico curioso com qual framework atual pode ser mais produtivo que o jsf.

Com o ganho de espaço que o jsf esta tendo, acho que ele é o caminho e é o que estou estudando…[/quote]
Estude JSF, mas não fique fechado apenas a ele. É bom pelo menos dar uma pincelada em outros frameworks - sejam action ou component-based. Como alguns já mencionaram - inclusive eu - ele tem sim desvantagens.

[quote=SanjuanRJ][quote=Leonardo3001]JSF é lixo! Trabalhei um ano e meio com essa porcaria e ainda não entendo como alguém gosta da fazer as coisas pela maneira mais difícil.

Não é o único problema, como disse antes, é apenas o pior. E não me venha dizer que eu não conheço o “maravilhoso” ciclo de vida do JSF. Conheço de cor-e-salteado, porque a burrice do framework me obrigou a isso.
[/quote]

Leonardo3001 você foi totalmente equivocado no seu exemplo, sem querer ofende-lo, mas você perdeu um ano e meio trabalhando com uma tecnologia que você desconhece até hoje. Acho seu comentário inválido pois muitas pessoas que pretendem começar podem ler esse tópico e ficar “envenenadas” por uma opinião muito errada e sem fundamento.

A maior desvantagem do JSF é realmente a curva de aprendizado.
Essa resposta pode ser encontrada nesta própria discussão. Com certeza o pessoal que têm mais experiência com o framework ao dar uma passada de olhos nesse fórum encontra muitas respostas equivocadas tomadas como verdadeiras.

Uma vez um cara me disse que o JSF nao separa bem o controlador da view. É verdade isso?

na verdade a camada view do jsf seria o html gerado, aquele q é exibido no navegador, e o controle seria o seus managed beans e suas jsp com os componentes jsf …

posso ta redondamente errado mas tivemos uma discussao acerca disso a algum tempo aqui, foi essa a conclusao q chegamos …

uma dica boa pra separar bem as camadas seria a integração de spring com flex

Se JSF é um lixo então todo mundo ficou louco e resolveram colocar este “lixo” como padrão para a camada de visualização web enquanto as páginas jsp estarão na próxima especificação apenas para manter a compatibilidade?
[edit] Não que eu ache o JSF a oitava maravilha mais pra mim é obvio que é uma solução muito melhor que trabalhar simplesmente com jsp + algum outro framework ajax pra uma interface RIA.
Tem um framework que quer se “a” alternativa para jsf, o ZKoss. Eu até ví um comparativo entre os dois.
Parece ser bem interessante.