O Seam é um framework visa facilitar o desenvolvimento de aplicações JavaServer Faces integradas com EJB 3 ou Hibernate. O Seam usa o conceito de "conversações" para manter as sessões do Hibernate ou do EJB 3 abertas durante toda uma "transação do usuário", que normalmente acontece em várias requisições web. Ele tem suporte interno a AJAX, facilita o trabalho com BPM, facilita o controle de páginas JSF (você praticamente não mexe com o faces-config) e muito mais.
Não precisa usar o JBoss, ele roda em qualquer servidor web Java comum (como Tomcat e Jetty). Como plugins tem o Hibernate Tools (o plugin oficial do Hibernate) que gera páginas Seam e o editor de jBPM da JBoss -> http://docs.jboss.com/jbpm/v3/gpd/
[quote=giu]Maurício, o Seam já está maduro o suficiente para projetos em produção?
Tipo, hj faço tudo com o Spring. Daria para substituir o Spring pelo Seam?
valeu[/quote]
A idéia não é substituir um pelo outro, ambos podem ser utilizados em conjunto.
[quote=Maurício Linhares][quote=giu]Maurício, o Seam já está maduro o suficiente para projetos em produção?
Tipo, hj faço tudo com o Spring. Daria para substituir o Spring pelo Seam?
valeu[/quote]
A idéia não é substituir um pelo outro, ambos podem ser utilizados em conjunto.[/quote]
Na empresa onde trabalho já utilizamos o JBoss Seam desde a versão 1.0. É bastante produtivo.
Na realidade o Seam é feito para ser utilizado sozinho, ou seja, sem a ajuda de nenhuma outra application framework (spring, struts etc). Não conheço o Spring, mas posso dizer que não existe necessidade do Seam ser utilizado em conjunto.
Maurício, sem recentimentos, a idéia é substituir sim (mesmo pq os beans do Seam só servem pra ele)!
Concordo com o bobmoe, até daria pra utilizar em conjunto, mais isso não é muito bom. Os beans do Seam utilizam annotations específicas dele, o que os torna dependendtes do framework, mais os ganhos obtidos compensam.
A bi-injeção do Seam facilita muito, sua integração com o ajax4jsf e a facil e o fato de não mais precisar ficar criando managed beans e navigations no faces-config.xml é uma maravilha.
Afinal, se vai começar um projeto novo, o Seam é uma boa opção. Não sei se compensa trocar toda uma arquitetura baseada em Spring ou outro framework pelo Seam, deve-se avaliar muito bem.
Bom, eu nao uso o Seam mas gostaria de usar… porém fiquei com algumas dúvidas…
Com ele eu nao tenho que usar EJB 3 né? quase todos os exemplos que eu vi usanvam EJB, e eu gostaria de usar numa aplicação simples, só com o hibernate annotation mesmo. quanto a isso nao tem problema né?
Outra coisa é com relacao ao JSF 1.2 e Facelets 1.2… o Seam nao tem nada a ver com a parte view né? Entao ele nao atrapalharia o uso do Facelets?
E pra finalizar, disseram que ele tem integracao com o ajax4jsf. Como é isso? O ajax4jsf nao fica só nas jsp’s enquanto o Seam fica do lado Java? Pergunto isso porque eu uso o ajax do Facelets 1.2 e é muito bom, entao fiquei preocupado dessa integracao dele com ajax4jsf me “atrapalhar” :?
A integração dele com o ajax4jsf é no que diz respeito a bi-injeção. Ele permite a utilização de tags do ajax4jsf utlizando os beans diretamente, sem precisar do managed bean configurado no faces-config.xml.
Quanto ao facelets, sem problemas.
Aqui na empresa utilizamos facelets, tomawalk, ajax4jsf e outras coisas mais, e ele rola bem.
Você pode utilizar com Java Bean normamente, não é necessário ser EJB 3.0, pode ser um Pojo do Hibernate sem rolo.
Nâo vejo porque, o Spring faz muito mais coisas do que o Seam e serve pra propósitos bem diferentes. Os dois não são concorrência de forma alguma, até porque se o Seam fosse ser “concorrente” do Spring ia ter que mudar um bocado de arquitetura, começando pela necessidade de se utilizar JSF e um servidor Java.
Bom, deixando de lado a possibilidade do Seam querer substituir o Spring como um todo (virar concorrente propriamente dito), numa aplicação real, que use JSF, o que eu ganharia usando Spring e Seam juntos?
Quando o JSF estava nos primórdios teve gente dizendo que nao era pra substituir o Struts e tal, que dava pra usar os dois juntos… mas alguém consegue ver algum ganho em usar os dois juntos?
Nao to falando bem ou mal do Struts ou Spring (mesmo porque o Spring é muito bom), só queria saber se tem ganho real de eu usar o Seam junto com o Spring?
Alguém aí usa os dois juntos e poderia nos falar os ganhos?
Ou entao alguem que ja usou Spring em alguma aplicação e agora ta usando o Seam poderia nos dizer se sente falta de algo que o Spring fazia e que é ruim de fazer com Seam.
Rapaz, a configuração de dependências no Seam é meio chatinha (mesmo sendo bem parecida com a do Spring). Nâo vi os objetos fábrica do Spring no Seam, não é tão simples de se fazer proxies e, de muito longe, o suporte do Spring a outros serviços, como JMS e webservices é bem maior e mais antigo.
Mas nao tem muito overhead em usar os dois juntos? Se nao tiver nao vejo problema em usar juntos, pois vc começa com o Seam e se sentir necessidade de colocar o Spring coloca, e em funcionalidades quem ambos ofereçam cada um faz a escolhe segundo seu critério. Meu receio é ter um baita overhead para suprir poucas coisas que o Seam nao faz e que podem nao ser “vitais” em aplicações mais simples.