Como desenvolver java web com agilidade?

38 respostas
F

Bom dia pessoal, é o seguinte estou começando agora no java web, porém estou achando bem lento a forma de desenvolvimento, procurei mas não encontrei nenhuma outra forma de desenvolvimento a não ser “na unha”, até cheguei a vê plugins para Netbeans, mas nada sofistifcado, o problema de desenvolver “na unha” é ter que ficar na “tentativa e erro”, tipo nem sempre sai como imaginamos, ex: Estou desenvolvendo um formulário de cadastro onde há varios campos e quase sempre sai desalinhado ou do tamanho diferente do imaginado, ai tem que consertar e verificar novamente, isso tudo gera muita dor de cabeça e perda de tempo. Gostaria de saber com o pessoal que já tem mais experiência nessa área, qual a melhor forma de desenvolver java web, tipo minha dificuldade não é programação em si, mas sim para desenhar o layout, se tivesse alguma ferramenta visual ou algum outro método ajudaria bastante.

EX DE UM RASCUNHO:

CÓDIGO

//MENUS CLIENTES
        <p:dialog header="Inserir Cliente" widgetVar="inserirCliente"  resizable="false" modal="true" showEffect="slide" width="800" height="500">
            <h:form prependId="false">
                <h:panelGrid id="infoCliente" columns="2" style="margin-bottom:10px">
              
                    <h:outputLabel for="nome" value="Nome:">
                        <h:inputText id="nome3" value="#{clienteController.cliente.nome}" style=" width: 340px" >
                   </h:inputText>
                    </h:outputLabel>


                    <h:outputLabel for="cpf" value="CPF/CNPJ:">
                    <h:inputText id="cpf3" value="#{clienteController.cliente.cpf}">
                     </h:inputText>
                    </h:outputLabel>


                  
                    <h:outputLabel for="Inscrição Estadual" value="Inscrição Estadual:"  >
                    <h:inputText id="login3" value="#{clienteController.cliente.login}" style=" width: 150px">
                         </h:inputText>
                    </h:outputLabel>



                    <h:outputLabel for="Inscrição Mnunicipal" value="Inscrição Mnunicipal:"  >
                    <h:inputText id="senha3" value="#{clienteController.cliente.senha}" style=" width: 150px">
                         </h:inputText>
                     </h:outputLabel>



                      <h:outputLabel for="Logradouro" value="Logradouro:"  >
                     <h:inputText id="senhaww3" value="#{clienteController.cliente.senha}">
                          </h:inputText>
                     </h:outputLabel>

                     <h:outputLabel for="Numero" value="Numero:"   >
                    <h:inputText id="senhwwwa3" value="#{clienteController.cliente.senha}">
                         </h:inputText>
                     </h:outputLabel>

                    <h:outputLabel for="Complemento" value="Complemento:"   >
                    <h:inputText id="senhwwdddddwa3" value="#{clienteController.cliente.senha}" style=" width: 20px">
                         </h:inputText>
                     </h:outputLabel>


                    <h:outputLabel for="nivel" value="Nivel:" />
                    <h:selectOneMenu id="nive3l" value="#{clienteController.cliente.nivel}">
                        <f:selectItem itemLabel="Cliente" itemDisabled="#{clienteController.showNivelCliente}" itemValue="Cliente"/>
                        <f:selectItem itemLabel="Funcionário" itemDisabled="#{clienteController.showNivelFuncionario}" itemValue="Funcionario"/>
                        <f:selectItem itemLabel="Administrador"  itemDisabled="#{clienteController.showNivelAdministrador}" itemValue="Administrador"/>
                    </h:selectOneMenu>


                    <p:commandButton ajax="true" update="msg,tabelaCliente" oncomplete="inserirCliente.hide();" actionListener="#{clienteController.adicionarCliente}" value="Salvar"/>

                </h:panelGrid>
            </h:form>
        </p:dialog>

RESULTADO:

Tipo configuro de um jeito ai sai bem diferente do imaginado, na imagem acima por exemplo eu não consigo colocar os campos um do lado do outro, quando tento fica desconfigurado… Mesmo se os campos ficarem um do lado do outro, ainda tenho q verificar o tamanho de cada campo para ficarem alinhados…

OBS: Estou utilizando JSF (xhtml) + PRIMEFACES. Toda dica é válida…
vlw a todos pela atenção…

38 Respostas

M

felipehts:
Bom dia pessoal, é o seguinte estou começando agora no java web, porém estou achando bem lento a forma de desenvolvimento, procurei mas não encontrei nenhuma outra forma de desenvolvimento a não ser “na unha”, até cheguei a vê plugins para Netbeans, mas nada sofistifcado, o problema de desenvolver “na unha” é ter que ficar na “tentativa e erro”, tipo nem sempre sai como imaginamos, ex: Estou desenvolvendo um formulário de cadastro onde há varios campos e quase sempre sai desalinhado ou do tamanho diferente do imaginado, ai tem que consertar e verificar novamente, isso tudo gera muita dor de cabeça e perda de tempo. Gostaria de saber com o pessoal que já tem mais experiência nessa área, qual a melhor forma de desenvolver java web, tipo minha dificuldade não é programação em si, mas sim para desenhar o layout, se tivesse alguma ferramenta visual ou algum outro método ajudaria bastante.
OBS: Estou utilizando JSF (xhtml) + PRIMEFACES. Toda dica é válida…
vlw a todos pela atenção…

desenvolver em qualquer linguagem com agilidade requer experiência, simples assim. Em algumas requer mágica :twisted: .

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

A

Bom dia amigo,

Eu estou na mesma situação que você…

Meu problema não é tanto na programação…

  • na hora de criar o layout ai eu me complico um pouco :frowning:

não sei o meio correto, mais geralmente eu utilizo por exemplo um dreamweaver para criar o código html e depois eu só mudo pra jsf… ex.: form pra h:form… etc…

A

maior_abandonado:

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

respeitosamente, eu diria que probleminhas de desalinhamento devem ser resolvidos via CSS…

F

alandiniz:
Bom dia amigo,

Eu estou na mesma situação que você…

Meu problema não é tanto na programação…

  • na hora de criar o layout ai eu me complico um pouco :frowning:

não sei o meio correto, mais geralmente eu utilizo por exemplo um dreamweaver para criar o código html e depois eu só mudo pra jsf… ex.: form pra h:form… etc…

já tentei assim tb… o problema é que tem tag que não é lida no Dreamweaver…

F

maior_abandonado:
felipehts:
Bom dia pessoal, é o seguinte estou começando agora no java web, porém estou achando bem lento a forma de desenvolvimento, procurei mas não encontrei nenhuma outra forma de desenvolvimento a não ser “na unha”, até cheguei a vê plugins para Netbeans, mas nada sofistifcado, o problema de desenvolver “na unha” é ter que ficar na “tentativa e erro”, tipo nem sempre sai como imaginamos, ex: Estou desenvolvendo um formulário de cadastro onde há varios campos e quase sempre sai desalinhado ou do tamanho diferente do imaginado, ai tem que consertar e verificar novamente, isso tudo gera muita dor de cabeça e perda de tempo. Gostaria de saber com o pessoal que já tem mais experiência nessa área, qual a melhor forma de desenvolver java web, tipo minha dificuldade não é programação em si, mas sim para desenhar o layout, se tivesse alguma ferramenta visual ou algum outro método ajudaria bastante.
OBS: Estou utilizando JSF (xhtml) + PRIMEFACES. Toda dica é válida…
vlw a todos pela atenção…

desenvolver em qualquer linguagem com agilidade requer experiência, simples assim. Em algumas requer mágica :twisted: .

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

fiz desta forma, mas ficou desconfigurado…

A

Blz, cara usa tabelas para fazer o alinhamento do código, estou usando o JSF e ele é muito útil
ta agilizando bastante o trabalho, mais quando se trata de formulários use sempre tabelas para
pode fazer o alinhamento.

F

alexandrefuente:
Blz, cara usa tabelas para fazer o alinhamento do código, estou usando o JSF e ele é muito útil
ta agilizando bastante o trabalho, mais quando se trata de formulários use sempre tabelas para
pode fazer o alinhamento.

vlw pela dica…vou tentar dessa forma =)

M

Tente no teus componentes colocar o style=" width: 340px" tudo padronizado.

Isso é um dos motivos de ficar meio desalinhada a tua tela…

A

alias:
maior_abandonado:

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

respeitosamente, eu diria que probleminhas de desalinhamento devem ser resolvidos via CSS…

Pois é… layout tableless é o que há. Infelizmente, uma parcela muito grande de desenvolvedores prefere simplesmente ignorar o “lado artístico” da coisa e partir pro bom e velho layout tabelado com JSF.

Pros que pensam assim, segue um link para reflexão do que nunca poderia ser feito com JSF: http://csszengarden.com/.

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.

[]'s

F

magni:
Tente no teus componentes colocar o style=" width: 340px" tudo padronizado.

Isso é um dos motivos de ficar meio desalinhada a tua tela…

Não entendi o motivo, mas está tipo divido “ao meio”, tipo eu não consigo colocar um campo do lado do outro, repare no print acima…

H

desenvolver em qualquer linguagem com agilidade requer experiência, simples assim. Em algumas requer mágica :twisted: .[/quote]
Concordo com cada linha! [=

Adiciono apenas que além de precisar de muito “xp”, precisa de estudo também. [=

R

se você quer que o layout fique com cara de um site profissional e não de um sistema, passe o layout para um webdesigner fazer :slight_smile:

ou então compra um layout pronto. Aqui tem um monte, e nem são caros:

A

asaudate:
alias:
maior_abandonado:

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

respeitosamente, eu diria que probleminhas de desalinhamento devem ser resolvidos via CSS…

Pois é… layout tableless é o que há. Infelizmente, uma parcela muito grande de desenvolvedores prefere simplesmente ignorar o “lado artístico” da coisa e partir pro bom e velho layout tabelado com JSF.

Pros que pensam assim, segue um link para reflexão do que nunca poderia ser feito com JSF: http://csszengarden.com/.

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.

[]'s

novamente, com todo o respeito, mas eu discordo. É perfeitamente possivel aplicar qualquer recurso do CSS em uma pagina feita com JSF.

A

alias:

novamente, com todo o respeito, mas eu discordo. É perfeitamente possivel aplicar qualquer recurso do CSS em uma pagina feita com JSF.

Imaginei uma resposta dessas quando postei. E, peço, olhe o Zen Garden e reflita se é possível fazer aquilo com JSF.

Não é a possibilidade de aplicar ou não CSS que dificulta/impossibilita (até porque, a própria estilização que é feita pelos componentes JSF é feita via CSS). É o próprio HTML gerado que dificulta.

A

asaudate:

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.
[]'s

Asaudate adimiro muito seu trabalho, gostaria de saber porque é contra JSF para sites ? só pelo html um pouco sujo que ele gera ? fiz meu blog todo em JSF2+CDI +JPA2 ainda não o publiquei mas achei o produto final o maior tesão :slight_smile:

A

asaudate:
alias:
maior_abandonado:

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

respeitosamente, eu diria que probleminhas de desalinhamento devem ser resolvidos via CSS…

Pois é… layout tableless é o que há. Infelizmente, uma parcela muito grande de desenvolvedores prefere simplesmente ignorar o “lado artístico” da coisa e partir pro bom e velho layout tabelado com JSF.

Pros que pensam assim, segue um link para reflexão do que nunca poderia ser feito com JSF: http://csszengarden.com/.

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.

[]'s

Olá asaudate, como vai?

Você quer dizer que o JSF nunca será suficiente o bastante para aplicações Internet? Não entendi sua colocação, poderia explicar de forma diferente?

A

asaudate:
alias:
maior_abandonado:

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

respeitosamente, eu diria que probleminhas de desalinhamento devem ser resolvidos via CSS…

Pois é… layout tableless é o que há. Infelizmente, uma parcela muito grande de desenvolvedores prefere simplesmente ignorar o “lado artístico” da coisa e partir pro bom e velho layout tabelado com JSF.

Pros que pensam assim, segue um link para reflexão do que nunca poderia ser feito com JSF: http://csszengarden.com/.

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.

[]'s

Sinceramente, não achei o link nada demais para o JSF… Pode explicar melhor? abs, [PS: Cliquei só em alguns links do lado direito]

A

asaudate:
alias:
maior_abandonado:

quanto a desalinhamento de formulários, isso costuma-se ser resolvido colocando o formulário dentro de uma tabela de forma que a própria tabela ja o alinharia. Com jsf essa tarefa é automatizada com a tag h:panelGrid.

respeitosamente, eu diria que probleminhas de desalinhamento devem ser resolvidos via CSS…

Pois é… layout tableless é o que há. Infelizmente, uma parcela muito grande de desenvolvedores prefere simplesmente ignorar o “lado artístico” da coisa e partir pro bom e velho layout tabelado com JSF.

Pros que pensam assim, segue um link para reflexão do que nunca poderia ser feito com JSF: http://csszengarden.com/.

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.

[]'s

Já ouví muitos bons comentários a respeito de Tableless…

A

asaudate:
alias:

novamente, com todo o respeito, mas eu discordo. É perfeitamente possivel aplicar qualquer recurso do CSS em uma pagina feita com JSF.

Imaginei uma resposta dessas quando postei. E, peço, olhe o Zen Garden e reflita se é possível fazer aquilo com JSF.

Não é a possibilidade de aplicar ou não CSS que dificulta/impossibilita (até porque, a própria estilização que é feita pelos componentes JSF é feita via CSS). É o próprio HTML gerado que dificulta.

Prezado asaudate, peço desculpas antecipadas pois talvez eu não tenha entendido direito ainda o que quer dizer. Concordo que no JSF não há um controle direto (ou nenhum controle) do HTML gerado. Mas continua sendo um HTML, passível de ser estilizado via CSS. Eu mesmo citei a questão do tableless, e eu utilizo tableless em paginas JSF sem nenhum tipo de problema (bom…talvez com alguma dificuldade as vezes :lol: )

Não entendi o que quis dizer aqui

A

aix:
asaudate:

P.S: Nada contra o uso de JSF dentro de intranets, por exemplo. Mas, sim, sou radicalmente contra se for pra usar em sites (internet), por exemplo.
[]'s

Asaudate adimiro muito seu trabalho, gostaria de saber porque é contra JSF para sites ? só pelo html um pouco sujo que ele gera ? fiz meu blog todo em JSF2+CDI +JPA2 ainda não o publiquei mas achei o produto final o maior tesão :)

Exatamente, por causa do html não apenas sujo, mas engessado. Você consegue fazer alterações nele, mas a troco de quê? O HTML gerado por ele não apresenta a mesma flexibilidade que um HTML gerado por um designer, o que é um trade-off: você escolhe, deliberadamente, fazer isso em troca da agilidade no desenvolvimento e no corte do custo de um web designer, o que não tem nada de errado quando estamos falando de uma intranet. Para internet, a coisa já muda de figura, porque as coisas têm que ser feitas de maneira flexível (por isso citei o Zen Garden), eficiente (ou seja, com o menor peso possível) e rápido, de uma maneira geral. O Sergio Lopes postou, no blog da Caelum, os slides e uma explicação de uma palestra que ele fez no QCon do ano passado, com várias técnicas de otimização de sites (o link é http://blog.caelum.com.br/por-uma-web-mais-rapida-26-tecnicas-de-otimizacao-de-sites/ ). Várias dessas técnicas são impossíveis ou quase impossíveis de serem feitas com JSF, por exemplo:

-> #2 - Minifique JavaScript
-> #3 - Minifique CSS (você não consegue interferir no CSS do próprio JSF)
-> #9 ? Junte arquivos JavaScript
-> #10 ? Juntar arquivos CSS
-> #16 ? Coloque o JavaScript no fim

Além disso, uma coisa contra a qual eu sempre vou bater o pé é o famoso ciclo de vida do JSF. Acho ele pesado demais para ser usado na internet, onde cada milissegundo de cada request custa caro e representa dinheiro (se duvida, na própria apresentação do Sergio tem algumas estatísticas sobre isso). No final das contas, acaba sendo matematicamente impossível você fazer um site tão performático em JSF quanto ele poderia ser usando outra ferramenta. Esse é um argumento válido contra o uso dele na internet, mas não na intranet, onde cada pessoa normalmente usa a aplicação porque precisa, não importa o tempo que ela levar para responder (quem usa Sharepoint sabe do que eu estou falando).

[]'s

F

alias:
asaudate:
alias:

novamente, com todo o respeito, mas eu discordo. É perfeitamente possivel aplicar qualquer recurso do CSS em uma pagina feita com JSF.

Imaginei uma resposta dessas quando postei. E, peço, olhe o Zen Garden e reflita se é possível fazer aquilo com JSF.

Não é a possibilidade de aplicar ou não CSS que dificulta/impossibilita (até porque, a própria estilização que é feita pelos componentes JSF é feita via CSS). É o próprio HTML gerado que dificulta.

Prezado asaudate, peço desculpas antecipadas pois talvez eu não tenha entendido direito ainda o que quer dizer. Concordo que no JSF não há um controle direto (ou nenhum controle) do HTML gerado. Mas continua sendo um HTML, passível de ser estilizado via CSS. Eu mesmo citei a questão do tableless, e eu utilizo tableless em paginas JSF sem nenhum tipo de problema (bom…talvez com alguma dificuldade as vezes :lol: )

Não entendi o que quis dizer aqui

O primefaces utiliza CSS para seus componentes…

A

alias:
asaudate:
alias:

novamente, com todo o respeito, mas eu discordo. É perfeitamente possivel aplicar qualquer recurso do CSS em uma pagina feita com JSF.

Imaginei uma resposta dessas quando postei. E, peço, olhe o Zen Garden e reflita se é possível fazer aquilo com JSF.

Não é a possibilidade de aplicar ou não CSS que dificulta/impossibilita (até porque, a própria estilização que é feita pelos componentes JSF é feita via CSS). É o próprio HTML gerado que dificulta.

Prezado asaudate, peço desculpas antecipadas pois talvez eu não tenha entendido direito ainda o que quer dizer. Concordo que no JSF não há um controle direto (ou nenhum controle) do HTML gerado. Mas continua sendo um HTML, passível de ser estilizado via CSS. Eu mesmo citei a questão do tableless, e eu utilizo tableless em paginas JSF sem nenhum tipo de problema (bom…talvez com alguma dificuldade as vezes :lol: )

Não entendi o que quis dizer aqui

Quis dizer que as bibliotecas que implementam JSF utilizam, quase sempre, uma folha de estilos separada para modificar a visualização, não a tag style.

[]'s

F

A melhor ferramenta pra se desenvolver de maneira ágil ainda é a experiência, eliminando complexidade de utilizacao na interface e deixando-a sempre o mais funcional e objetiva possivel. E isso independe de tecnologia.

F

rogeriopaguilar:
se você quer que o layout fique com cara de um site profissional e não de um sistema, passe o layout para um webdesigner fazer :slight_smile:

ou então compra um layout pronto. Aqui tem um monte, e nem são caros:

Não é um site, e sim um aplicativo para emissão de NF-e, o formulário tem que ficar no minimo alinhado =)

F

Sim, mas imagina uma ferramenta com opção de arrastar componentes, sendo assim não preciso preocupar com detalhes “bobos” como posição de componentes, mas sim com a lógica, etc… Experiência para posicionar componentes na tela ?

A

andredecotia:

Sinceramente, não achei o link nada demais para o JSF… Pode explicar melhor? abs, [PS: Cliquei só em alguns links do lado direito]

Cada um daqueles links é gerado utilizando o MESMO HTML. Absolutamente nada de diferente. Esse tipo de coisa só pode ser feito quando o HTML é gerado à parte do CSS, o que não acontece com JSF. Normalmente, páginas JSF são dependentes das próprias folhas de estilo, e você não consegue (ou é suficientemente complicado) arrancar elas de lá para colocar somente seu próprio CSS.

[]'s

A

asaudate:
alias:
asaudate:
alias:

novamente, com todo o respeito, mas eu discordo. É perfeitamente possivel aplicar qualquer recurso do CSS em uma pagina feita com JSF.

Imaginei uma resposta dessas quando postei. E, peço, olhe o Zen Garden e reflita se é possível fazer aquilo com JSF.

Não é a possibilidade de aplicar ou não CSS que dificulta/impossibilita (até porque, a própria estilização que é feita pelos componentes JSF é feita via CSS). É o próprio HTML gerado que dificulta.

Prezado asaudate, peço desculpas antecipadas pois talvez eu não tenha entendido direito ainda o que quer dizer. Concordo que no JSF não há um controle direto (ou nenhum controle) do HTML gerado. Mas continua sendo um HTML, passível de ser estilizado via CSS. Eu mesmo citei a questão do tableless, e eu utilizo tableless em paginas JSF sem nenhum tipo de problema (bom…talvez com alguma dificuldade as vezes :lol: )

Não entendi o que quis dizer aqui

Quis dizer que as bibliotecas que implementam JSF utilizam, quase sempre, uma folha de estilos separada para modificar a visualização, não a tag style.

[]'s

Ah, sim, me desculpe. Tem razão. Suponho que esteja se referindo principalmente ao RichFaces e ao PrimeFaces, com seus skins e estilos proprios. Nesses casos, eu desabilito o skin, e configuro ambos para não carregar as folhas de estilo (ambos os frameworks que citei permitem fazer isso).

Ainda assim há um pequeno problema, pois os componentes ainda vão referenciar no atributo class os estilos definidos pelo framework. Entao, eu crio uma folha de estilo minha usando os mesmos nomes das classes (na documentação do Rich e do Prime constam todas as classes CSS utilizadas). E pronto, o seu CSS está customizado.

A proposito, obrigado pelo link do Zen Garden. :wink:

A

Asaudate concordo com algumas coisas, mas isto não é relevante para não se ter sites ou sistemas WEB com JSF, acredito que quando escreveu falando dos milissegundos da request você se referia a versão 1 do JSF ? que utilizava JSP que tem imcompatibilidade com cliclo de vida do JSF. mas com os facelets não concordo. um JSP ja é lento por natureza, pois cada JSP vira uma servlet o que não é o caso de um XHTML :slight_smile:

A

aix:
asaudate:

…Além disso, uma coisa contra a qual eu sempre vou bater o pé é o famoso ciclo de vida do JSF. Acho ele pesado demais para ser usado na internet, onde cada milissegundo de cada request custa caro e representa dinheiro

Asaudate concordo com algumas coisas, mas isto não é relevante para não se ter sites ou sistemas WEB com JSF, acredito que quando escreveu falando dos milissegundos da request você se referia a versão 1 do JSF ? que utilizava JSP que tem imcompatibilidade com cliclo de vida do JSF. mas com os facelets não concordo. um JSP ja é lento por natureza, pois cada JSP vira uma servlet o que não é o caso de um XHTML :)

Mesmo os XHTML do JSF têm que ser compilados em Servlets, porque senão não seria um código server-side. A questão de ser ou não Servlet, aliás, pouco influencia, porque existe código que tem que ser executado no lado do servidor. Isso é independente de Java, JSP, PHP, Ruby ou o que quer que seja. A questão principal é: quanto tempo demora esse processamento? Um JSP com uma ou outra instrução de processamento não demora muito. A questão é que numa página JSF esse ciclo de processamento é multiplicado por quatro (cada fase do ciclo de vida JSF).

A questão da extensão é mera semântica, porque ter a extensão .xhtml não faz da página um xhtml de verdade (no caso do JSF, quer dizer que ela vai ser renderizada como XHTML, o que é diferente). É o mesmo que você trocar a extensão de uma imagem PNG para JPG e acreditar que ela é, de fato, um JPG. Lembrando que, em Linux, por exemplo, a questão da extensão é mera formalidade: tanto faz a extensão que um arquivo tem, sendo que ele pode, inclusive, não ter qualquer extensão.

A

sabia que iria dizer isto rsrsrsrsrs, mas brother esqueceu de uma coisa, o JSP é compilado em servlets toda vez que se acessa o mesmo, quanto que o JSF não precisa ser compilado a primeira vez, logo quando vc me diz:

Um JSP com uma ou outra instrução de processamento não demora muito
vejo que não é verdade.

A

aix:
asaudate:

Mesmo os XHTML do JSF têm que ser compilados em Servlets…

sabia que iria dizer isto rsrsrsrsrs, mas brother esqueceu de uma coisa, o JSP é compilado em servlets toda vez que se acessa o mesmo, quanto que o JSF não precisa ser compilado a primeira vez, logo quando vc me diz:

Um JSP com uma ou outra instrução de processamento não demora muito
vejo que não é verdade.

Não senhor. Dê uma lida: http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro4.html

Aqui isso fica ainda mais explícito: http://www.jsptutorial.net/understanding-jsp-life-cycle.aspx

Uma JSP é compilada no primeiro acesso. Se, dalí em diante, a JSP não sofrer mudanças, a instância do Servlet é reaproveitada.

Quanto ao JSF, ele deve, sim, ser compilado. Isso porque não se pode tirar vantagem da execução de um código (especialmente JSF, que é component-based) se ele não for compilado. Se não fosse compilado, ele seria ainda mais lento (e, provavelmente, teria ainda mais fases no ciclo de vida…). Lembre-se de que o backend de uma página JSF é, no núcleo, JSP também. JSF não difere de JSP quanto à tecnologia empregada “por baixo dos panos”, mas difere radicalmente na questão da avaliação de dados, validação, etc. - coisas que não são feitas em JSP, por ser, em geral, action-based. Não que isso seja o motivo da lentidão, já que o Apache Wicket também é component-based e não é tão lento quanto JSF.

EDIT: Dei uma caçada em um tópico que ilustrasse melhor meu ponto em relação ao JSF e achei isso: http://www.velocityreviews.com/forums/t142637-jsf-is-it-more-than-a-jsp-tag-library.html

Note que, em certo ponto, é dito:

Em outras palavras, o JSF é um conjunto de componentes que ainda está rodando sobre a tecnologia JSP. Dessa forma, é matematicamente impossível uma página JSF ser mais performática que uma JSP.

[]'s

A

Com todo o respeito ao camarada asaudate, apenas mantendo uma discussão saudável sobre o assunto, vou respeitosamente discordar um pouco…embora longe de mim defender o JSF, já perdi muitos cabelos com ele. Por outro lado, penso diferente de quem acha que é uma tecnologia ruim…

Sobre a otimização de paginas, concordo que é bem mais dificil otimizar páginas feitas em JSF…mas nao é impossivel:

O JSF e o RichFaces possuem parametros que permitem carregar os arquivos JavaScript e CSS deles comprimidos e minificados. Não obstante, a compressão de arquivos no servidor resolve um pedaço considerável desse problema, e fazer isso independe de JSF.

Quanto ao CSS, é possivel interferir sim…comentei sobre isso alguns posts atras nesse topico. É possivel customizar o CSS com uma folha de estilo SUA e enxuga-la, sem problema.

Quanto aos seus proprios arquivos CSS e JS, nada lhe impede de comprimir e minificar. Nada lhe impede de usar seus proprios arquivos de estilo e scripts na sua aplicação JSF, ao contrarios do que muitos parecem achar (respeitosamente)

Quanto ao ultimo item, ao que me consta isso foi corrigido no JSF 2.

E sobre a questão toda do servlet, vou ficar ao lado do colega aix. O JSF funciona atualmente com base no Facelets, que NAO É JSP. Não creio que seja correto dizer que o “JSF é um conjunto de componentes que ainda está rodando sobre a tecnologia JSP”. Talvez fosse o caso na época do link que o asaudate citou, que é de 2005…mas hoje nao é. O Facelets não compila a pagina como um Servlet como o JSP faz, e sim converte o XHTML para uma arvore/hierarquia de UIComponent. Ainda na época da Sun e JSF 1.2, o Facelets dizia que renderiza a pagina 20% mais rapido que o JSP, e hoje é o view-handler padrão do JSF. Será mentira?

asaudate:

Além disso, uma coisa contra a qual eu sempre vou bater o pé é o famoso ciclo de vida do JSF. Acho ele pesado demais para ser usado na internet, onde cada milissegundo de cada request custa caro e representa dinheiro (se duvida, na própria apresentação do Sergio tem algumas estatísticas sobre isso). No final das contas, acaba sendo matematicamente impossível você fazer um site tão performático em JSF quanto ele poderia ser usando outra ferramenta.

…A questão é que numa página JSF esse ciclo de processamento é multiplicado por quatro (cada fase do ciclo de vida JSF).

A questão da performance envolve varios detalhes que voce citou acima, e apesar de eventualmente ser mais dificil aplicar as boas praticas como as que o Sergio citou em um site JSF, tambem nao é nada impossivel. Não vejo nada que impossibilite um site feito em JSF tirar 90 pra cima no PageSpeed…mas sem dúvida É mais dificil, e isso deve ser considerado no momento da escolha da tecnologia.

Sobre o ciclo de vida, bom, afora os cambalachos do JSF para restaurar a arvore de componentes (o que nao é nada agradavel, a natureza statefull do JSF gera um overhead a mais que nao existe no action-based…), o que o ciclo de vida faz é “aplicar valores de requisição”, “processar validações”, “atualizar valores do modelo”, “invocar aplicação”. Bem, supondo que eu esteja utilizando um framework como o Spring MVC, e eu queira direcionar um formulario para um URI que vai bater em um metodo do meu Controller, e nesse metodo eu vou receber os dados do formulario já em uma classe do meu modelo, preenchida.

Suponho que o Spring vai ter que “aplicar valores de requisição”, “processar validações”, “atualizar valores do modelo”, e por fim “invocar aplicação”. Correto? Esses passos que citei do ciclo de vida, penso que foram apenas nomeados no JSF, e a meu ver nao difere do que outros frameworks fazem. Mas a request nao é “multiplicada por quatro”, ela apenas é tratada em partes.

Gosto bastante do JSF, atualmente acho a dupla JSF+Seam as melhores ferramentas pra desenvolvimento com web Java. Tem suas qualidades, e tambem seus defeitos, como tudo o mais… :wink:

Obrigado pela discussão amigos.

A

Meus caros, mesmo criando uma árvore de UIComponent, isso ainda faz com que a página tenha que ser, de alguma forma, traduzida em código, certo? A meu ver, isso não difere (quase) nada da criação de um Servlet…

Quanto aos quatro estágios que o alias citou, concordo em partes… acredito que o que o JSF faz nesse ciclo de vida todo é feito praticamente em “uma tacada só” por outros frameworks. Afinal de contas, seria mais fácil simplesmente atualizar valores do modelo e deixar a validação por conta do próprio modelo (até pra evitar um modelo anêmico), certo? Estou divagando aqui, corrijam-me se estiver errado.

Ao que me parece (pelo que vocês estão dizendo) o JSF 2 corrigiu vários dos problemas que o JSF 1.2 apresentava (não trabalho mais com JSF já tem um tempinho =) ). Mas, mesmo assim, ainda não me parece uma boa opção justamente por causa do controle fino da camada de apresentação (o que, aliás, o próprio Sergio falou nos comentários do blog).

[]'s

F

A discussão saiu saiu um pouco do foco… Minha dúvida inicial, era se realmente a forma utilizada para desenvolver JAVA WEB é na “unha” mesmo, ou se teria alguma ferramenta capaz de agilizar esse processo de “posicionar componentes na tela”, já verifiquei alguns plugns para Netebeans, mas nada sofisticado, só queria ter certeza com quem já tem mais experiencia em JAVA WEB, se realmente não há esse tipo de ferramente, OU SEJA É SÓ NA MÃO MESMO ???

A

Existem alguns plugins para desenvolvimento com JSF no Eclipse - por exemplo, o JBoss Tools, para desenvolver com Richfaces, Seam e tudo o mais. Mas, sim, o melhor é desenvolver na mão, justamente para ter controle sobre posicionamento de componentes.

F

Existem alguns plugins para desenvolvimento com JSF no Eclipse - por exemplo, o JBoss Tools, para desenvolver com Richfaces, Seam e tudo o mais. Mas, sim, o melhor é desenvolver na mão, justamente para ter controle sobre posicionamento de componentes.

Obrigado pela resposta, vlw pela ajuda, já sei qual caminho seguir…vlw

E

bom, se você quiser usar html direto e substituir as tags jsf no código você pode, no caso da primeira mensagem no tópico, naquele caso, para alinhar os campos você poderia usar columns=“4” ao invés de columns=“2” no dataGrid.

Sobre o controle dos componentes na tela, se ver um pouco mais a fundo o life cycle do jsf, ele cria “cache” da árvore de objetos de cada página, sendo assim, quando recebe o request, ele não precisa criar toda a árvore de componentes, cria somente os componentes que variam do request para o modelo da árvore criada anteriormente. Isso torna o desempenho do JSF nas validações melhor que a maioria das validações realizadas por outros frameworks ou mesmo as validações no modelo. Claro que algumas validações deverão ser realizadas no modelo, entretanto, com muitas das visualizações sendo realizadas no controller do faces, caso alguma validação falhe, não é recriado a árvore de componentes, feitas as injeções de conteúdo, etc… o processamento do request para após as validações e é enviado o response para o cliente sem chamar o modelo.

H

Use Grails !!!

Criado 24 de janeiro de 2012
Ultima resposta 30 de mar. de 2012
Respostas 38
Participantes 14