Framework Web. Qual usar?

28 respostas
sonlino

Num projeto passado trabalhei com o Struts. Quem já trabalhou com ele sabe que é, de fato, um pouco trabalhoso.
Bom, eu não tenho ainda referência pra dizer se ele é bom ou não.
Mas pra se trabalhar com Servlet não há como negar que ajuda bastante. Tenho lido alguns posts metendo o pau no Struts. Aí vem a pergunta, é ruim mesmo? Tem algo melhor?

Quero deixar claro o que quero.
É o seguinte, vou iniciar um projeto web então gostaria de sugestões.
Continuo trabalhando com Struts? Trabalho com Spring? GWT? DWR? JSF?
Ou algum outro que não citei.

Adianto que não me interessa algo RIA, como Laszlo ou Echo 2.

28 Respostas

amilhoranza

Dá uma olhada no mentawai. É um ótimo framework MVC e de fácil aprendizado.

gilliard_santos

eu trabalho com JSF e tenho gostado bastante.
na minha opiniao, uma boa combinacao é jsf + facelets. este ultimo vai servir para voce construir templates e componentes de uma forma muito fácil. e se voce usar esses dois na versao 1.2, tem um esquema de ajax que é muito bom.

A

Giliard,
JSF faz a parte de controle igual o Struts, o mentawai, o Vraptor?
Ou so a parte visual?

gilliard_santos

O controle dele é um pouco diferente, mas ele também faz essa parte sim.
a maioria dos outros frameworks é baseado no conceito de actions que facilitam bastante a construcao de aplicacoes web mais ainda tem tem o jeitao de programacao jsp + servlet…
o jsf muda bastante esse conceito. nele voce cadastra classes (que nao precisam implementar nem estender nada, ou pojo, se preferirem) para voce usalas de dentro do seu jsp, que sao chamadas de managed bean. Entao em vez de vc tem uma classe que estende Action que será executada ao clicar em um botao, voce já liga esse botao com um metodo do managed bean, e se tiver outro botao, pode ligar com outro metodo do mesmo managed bean e assim por diante. Com isso voce economiza um numero muito grande de classes e sem precisar fazer gambiarrazinha com campo oculto ou coisa que outros frameworks precisam.
Além do mais, suponha que dentro do teu managed bena voce tenha um atributo do tipo Pessoa que tem nome e data de nascimento…
no jsp voce coloca 2 inputs e liga cada um deles a um atributo da pessoa de dentro do managed bean e o jsf automaticamente pega o valor dos inputs e seta dentro das propriedades de pessoa.
Em outro frameworks geralmente voce pega tudo como string e depois converte pro tipo que quiser, e o jsf já faz isso pra voce.
por exemplo:

<f:view>
<h:form>
...
Nome: <h:inputText value="#{MB.pessoa.nome}"/>
Nascimento: <h:inputText value="#{MB.pessoa.nascimento}"><f:convertDateTime pattern="dd/MM/yyyy"/></h:inputText>

<h:commandButton value="Salvar" action="#{MB.salvarPessoa}"/>

...
</h:form>
</f:view>

configuracao do MB no faces-config.xml

...
<managed-bean>
      <managed-bean-name>MB</managed-bean-name>
      <managed-bean-class>pacote.MinhaClasse</managed-bean-class>
      <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

...
<navigation-rule>
      <from-view-id>*</from-view-id>
      <navigation-case>
         <from-outcome>sucesso</from-outcome>
         <to-view-id>/sucesso.jsp</to-view-id>
      </navigation-case>
...

classe correspondente ao MB

package pacote;
public class MinhaClasse{

private Pessoa pessoa;
// get e set de pessoa

public String salvarPessoa()
{
// aqui voce pega uma referencia para sua DAO ou session do hibernate
session.save(pessoa);

return "sucesso"
}

}

Nesse caso o jsf vai instanciar a MinhaClasse no request e dar um getPessoa().setNome(valor do input) e getPessoa().setNascimento(data nascimento). Verifique que a data que será setada no atributo nao é uma String e sim um java.util.Date…

A action salvarPessoa nao precisa fazer nada mais do que salvar o objeto pessoa que já está todo povoado pelo jsf. Note que a action tem uma assinatura simples, sem argumentos e devolve uma String que vai ser usada para definir qual página seráexibida depois, ou entao pode ser void para indicar que vai retornar para a mesma pagina.

Além disso existem listeners e vários componetes disponiveis para colocar na sua aplicacao.

Bom, já escrevi pra caramba, acho que pra dar uma idéia isso já serve. nao sei se isso responde a sua pergunta… se nao manda aí que a gente complementa.
flw!

gilliard_santos

Tem também um outro framework que faz coisas parecidas com essas que eu falei sobre jsf mas eu nao conheço, é o VRaptor2.
Nunca usei, mas também parece ser bem simples.

I

Pessoal,

Vou ser breve e direto ao ponto.

Preciso de um framework Java p/ web (Struts, Mentawai etc) que seja algo semelhante ao desenvolvimento na ferramenta Power Builder da Sybase ou que pelo menos possua algum componente semelhante à DataWindow desta. Pode ser gratuita ou paga. Alguém sabe me informar?

Obrigado.

fabiano.franca

sonlino:
Num projeto passado trabalhei com o Struts. Quem já trabalhou com ele sabe que é, de fato, um pouco trabalhoso.
Bom, eu não tenho ainda referência pra dizer se ele é bom ou não.
Mas pra se trabalhar com Servlet não há como negar que ajuda bastante. Tenho lido alguns posts metendo o pau no Struts. Aí vem a pergunta, é ruim mesmo? Tem algo melhor?

Quero deixar claro o que quero.
É o seguinte, vou iniciar um projeto web então gostaria de sugestões.
Continuo trabalhando com Struts? Trabalho com Spring? GWT? DWR? JSF?
Ou algum outro que não citei.

Adianto que não me interessa algo RIA, como Laszlo ou Echo 2.

Eu recomendo a trindade JSF, Spring e Hibernate. A integração do Spring com o JSF e o Hibernate é sensacional.

Pedrosa

Simplicidade e Produtividade:

http://www.vraptor.org/pt/index.html

sonlino

Valeu as sugestões!
Meu propósito maior é um framework q trabalhe com AJAX.

Então pelo q jah vi, estou com duas alternativas, mas ainda naum escolhi.

A primeira é trabalhar com Spring e DWR, jah q dwr se integra com spring.

A segunda é trabalhar com o VRaptor2 q tb trabalha com Ajax.

Acho q estou tendendo pra isso aih.
Mas claro, q ainda aceito sugestões, pois naum iniciei o projeto ainda.
valeu!

kissdemon

Apenas complementando, caso queira trabalhar com Webservices, o vRaptor trabalha facilmente não somente com padrões de XML como SOAP mas também com JSON, que hoje é sinonimo de XML para Ajax.

[]´s

B

Olá,

Eu recomendo o JBoss Seam. É muito prático!

abraços

M

fabiano.bandeira:

Eu recomendo a trindade JSF, Spring e Hibernate. A integração do Spring com o JSF e o Hibernate é sensacional.

Teria como vc descrever a vantagem de se usar estes frameworks em relação a outros ?? O que vc usa de melhor deles ???

plentz

Vraptor

M

Qual a vantagem do VRaptor sobre o Spring ? e desvantagens ?

Pedrosa

Faça um hello word nos 2 e tire sua conclusões.

gilliard_santos

Olha, eu ja trabalhei com DWR para ajax e te afirmo que o ajax do Facelets é muito mais fácil de trabalhar, vc nao precisa mexer em nada de JavaScript para atualizar a sua view ou coisa parecida.
Concordo com o que o pessoal aí disse, JSF + Spring + Hibernate é show de bola, e eu adicionaria Facelets nesse time (só nao chamo de quadrado mágico porque esse nome nos lembra de muita coisa ruim (momento off topic hehehe)).

M

gilliard_santos:
Olha, eu ja trabalhei com DWR para ajax e te afirmo que o ajax do Facelets é muito mais fácil de trabalhar, vc nao precisa mexer em nada de JavaScript para atualizar a sua view ou coisa parecida.
Concordo com o que o pessoal aí disse, JSF + Spring + Hibernate é show de bola, e eu adicionaria Facelets nesse time (só nao chamo de quadrado mágico porque esse nome nos lembra de muita coisa ruim (momento off topic hehehe)).

O Que seria mais produtivo e fácil aprendizado:

1 - JSF + Spring + Hibernate + Facelets
2 - JSF + Spring-annotation + Hibernate + Facelets
3 - JSF + VRaptor2 + Hibernate + Facelets

E vc poderia me esclarecer: Qual a diferença entre Hibernate e Hibernate+JPA ??

cv1

No que JSF ajuda alguem?

M

CV, quais são os frameworks q vc utiliza ??? e que tipo de sistemas vc desenvolve ??

Valew.

saoj

Se o cara gostar de programar em XML, ajuda. Veja por exemplo o OpenXava.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE component SYSTEM "dtds/component.dtd">

<component name="Teacher">

  <entity>
    <property name="id" type="String"
      key="true" size="5" required="true"/>
    <property name="name" type="String"
      size="40" required="true"/>
  </entity>

  <entity-mapping table="MYSCHOOL.TEACHER">
    <property-mapping
      property="id" column="ID"/>
    <property-mapping
      property="name" column="NAME"/>
  </entity-mapping>

</component>
plentz

Qual a vantagem do VRaptor sobre o Spring ? e desvantagens ?

O VRaptor se integra ao Spring. Não são concorrentes diretos.

Paulo_Silveira

bobmoe:
Olá,

Eu recomendo o JBoss Seam. É muito prático!

abraços

pratico? voce fez uma aplicacao com ele ja? e ja viu como fica seu session bean e percebeu q nunca poderia usar ele sem o seam? pra que ter um ejb que soh pode ser consumido pelo seam? e os testes unitarios deles cheios de reflection brokers?

Em telas absurdamente complexas com centenas de campos e relacoes entre eles do tipo “mexeu aqui focus ali, pinta acola”. casos tipicos eh vc migrar uma aplicacao cheia de inputs desktop para a web. dizem e realmente parece que facilita.

Luca

Olá

Em telas absurdamente complexas com centenas de campos e relacoes entre eles do tipo “mexeu aqui focus ali, pinta acola”. casos tipicos eh vc migrar uma aplicacao cheia de inputs desktop para a web. dizem e realmente parece que facilita.

Há mais ou menos uns 2 anos atrás estudei JSF e fiquei com a mesma impressão. É bom para casos complicados, para o feijão com arroz atrapalha. Pior que naquela época algumas coisas simples ainda não existiam na versão inicial do JSF e era necessário muito google para resolver.

Não sei como está a versão atual mas ainda acho que para usar em casos triviais, só se o desenvolvedor for muito fera nele para ter uma produtividade razoável.

[]s
Luca

saoj

Fazendo um Google encontrei Hello World em JSF.

http://www.exadel.com/tutorial/jsf/jsftutorial-kickstart.html

Além de ter que dar uma volta ao mundo, ter que criar um monte de XML, ter que criar um managed-bean, e ter que usar umas tags de output totalmente contra-intuitivas, o que tem de bom ali? Alguma coisa deve ter. Se alguém que tem experiência com isso quizer falar fique a vontade…

M

Sérgio, com toda sua experiência, vamos supor que não existisse o Mentawai, quais opções vc usaria ou indicaria ??

saoj

VRaptor

B

Paulo Silveira:

pratico? voce fez uma aplicacao com ele ja?

Trabalho com Seam. Estou falando de experiencia prática!

Paulo Silveira:

pra que ter um ejb que soh pode ser consumido pelo seam?

Na realidade o mais importante é q este framework traz resultado, e isso é o q importa.
Nem todos sistemas precisam ter a mesma estrutura da Amazon (é uma questão de desenvolvimento ágil).

Paulo Silveira:

e os testes unitarios deles cheios de reflection brokers?

Eu utilizo o TestNG e, portanto, para avaliar entradas e saidas é independente do Seam. O TestNG no meu caso é suficiente e resolve o problema.

t+

sunshine

Alguém está utilizando Spring e já usou Struts?
Qual sua visão sobre os dois? Em termos de facilidade, praticidade… entre outros.

Criado 15 de novembro de 2006
Ultima resposta 31 de jan. de 2007
Respostas 28
Participantes 16