E foi lançado hoje a versão 1.0 do framework Seam, um application framework para a Java EE 5. Segue o release note
[quote]The Seam project is proud to announce the release of JBoss Seam 1.0 GA, an application framework for Java EE 5. Seam aims to be the most productive platform for development of enterprise and rich internet applications in any programming language.
Seam integrates Java EE 5 technologies like EJB 3.0, JSF and JMS into a unified programming model and then narrows the semantic gap between the business domain and the Java programming language by deeply integrating technologies like jBPM for business process and user interaction modelling and Drools for management of business rules. Seam Remoting provides an AJAX-based remoting layer for EJB 3.0, allowing client-side JavaScript to call EJB session beans directly. Seam’s unique contextual state management architecture makes it easy to build applications with complex, stateful user interactions and helps eliminate a whole class of bugs endemic to browser-based applications. Seam also eliminates the “XML hell” that plagues Java frameworks designed for use with J2EE by leveraging Java 5 annotations for declarative programming.
Seam 1.0 introduces the following new features:
* Seam Remoting - an AJAX-based remoting layer for EJB 3.0 components and JMS (created by Shane Bryzak)
* Support for JSR-168 compliant portal engines such as JBoss Portal
* Elegant handling of internationalization and JSF messages via EL-based interpolation
* Helper components for JMS senders/publishers
* JSF tag library
* Redesigned XML-based configuration facility
* Support for integrating databinding architectures
* Eventing architecture for loosely-coupled components
* Seam Logging
* JBoss Cache integration for cluster-wide state replication
* Experimental Drools integration
* Compatibility with the Java EE 5 reference implementation
* Much more... [/quote]
haha o.o quero muito encontrar um site usando isso. Muito.
E estou lendo aqui o tutorial. Sem xml meus cotovelos enrugados. Nada contra xml, aliás prefiro muito mais do que metado código java/metade annotations, mas é lorota o que eles falam na descrição: http://docs.jboss.com/seam/1.0.0.CR2/reference/en/html_single/
[quote=ZehOliveira]Pra quem já usa ruby on rails, é muito engraçado ler essas “new features”. Parece que o tempo passa mas o pessoal não aprende a simplificar as coisas.
Será que eles realmente acreditam que tanta gente assim precisa dessa complexidade toda?[/quote]
Zeh, comparando com o atual estado da JEE, eles até estão simplificando bastante as coisas. Experimenta pegar uma aplicação feita com EJB 2.0 pra ti voltar correndo pra cá dizendo que ta muito mais simples
Já não era hora. Primeiro por que já faz muito tempo que EJB2 estava por aí e segundo que muitas ferramentas interessantes surgiram com a intenção de resolver os problemas das pessoas, fonte de idéias não era o que faltava.
Não acontece sempre, mas parece que frameworks assim tem um ciclo de vida: eles nascem com big features que prometem resolver certos problemas. Aí as pessoas começam a achar que possuem aqueles problemas e começam a usar esse framework. Depois de um tempo percebem que na verdade não tinha aquele problema e que a solução podia ter sido desevolvida de modo mais simples com ferramentas mais simples.
EJB e JSF são grandes exemplos disso, quantas aplicações são migradas de EJB pra Spring por que o pessoal realmente não percebeu que EJB não era necessário? Podia ser que na época não dispusessem de ferramentas para o trabalho (não havia Spring, por exemplo), mas acredito que seja a minoria.
[quote=ZehOliveira]Pra quem já usa ruby on rails, é muito engraçado ler essas “new features”. Parece que o tempo passa mas o pessoal não aprende a simplificar as coisas.
Será que eles realmente acreditam que tanta gente assim precisa dessa complexidade toda?[/quote]
Na minha opinião, o Rails e o Seam tem focos bem diferentes.
Claro que não é todo mundo que precisa do JEE inteiro; e é claro que o Rails não é suficiente pra todo mundo!
haha o.o quero muito encontrar um site usando isso. Muito.[/quote]
Qual é a diferença disso para o DWR? Com certeza ele permite que você escolhas quais o Beans podem ou não serem executados remotamente.
Não vejo problema nisso, mas é claro que o mal uso é sempre mal uso. Como usar uma action no Struts/WebWork/Rails que passando uma query ele executa a mesma…
Estou codificando com JEE 5 ( Container GlassFish ) a +/- 3 meses… e posso dizer que o desenvolvimento com EJB ficou MUITO melhor… mais facil , a integracao entre annotations tirou MUITA coisa dos XML’s e o estilo ‘configure per exception’ trouxe ao EJB 3 uma produtividade MUITO boa… IoC simplesmente tornou “ridiculamente facil” a integracao entre varios sistemas e entre os beans… onde antes era 500 xml’s mais 59 Casts , hj é apenas um @EJB() em cima da interface (local ou remote) que vc quer e pronto… o container injeta o bean fazendo os lookups necessarios , alem de tudo… isso é um padrao ( atualmente estou usando para persistencia OracleToplink , porem troquei pra Hibernate estes tempos trocando 1 linha em um dos unicos XML’s necessarios , persistence.xml que tem 5 linhas no total ) , entao essa integracao entre JSF e EJB 3 pode ser MUITO benefica… IoC , Interceptadores e Annotations realmente deixaram a plataforma Java EE MUITO facil… alguem ae já fez um webservice em Java EE 5 ? po , invez de brigar com o AXIS , um @WebService em cima da classe e PRONTO, fora que vc pode misturar @WebService com @Stateless fazendo o seu JAH CODIFICADO SessionBean , um WebService… po ficou mais facil que em .Net , e o deployment ficou REALMENTE InterServidor… pois é possivel evitar extencoes proprietarias com uma certa “liberdade”, EntityBeans ficaram simplesmente um show a parte… integrando JTA+EntityManager , a coisa toda FICA AUTOMATICA praticamente… nada de session.open ou session.getCurrentSession(), coisa linda…
Porem dei uma lida boa no JBossSeam , e tirando o esquema de bijecao… achei o resto MUITO confuso… a integracao com EJB 3 dele é simplesmente BIZARRA , @NotNull ? dah lincenca… Confesso que achei BEM interessante ele converter as actions JSF para Session Beans Locais , utilizando assim o poder do EJB aliado a tranquilidade do JSF BackingBean, mas tenho muitas ressalvas , este framework aprece ser MAIS UM no meio de tantos… nao tem GRANDES compensacoes… , vc acaba amarrando MUITO a app , onde antes vc tinha seus Session Beans fazendo a parte de regra de negocio… ( ou acessando ela) , agora vc vai ter eles AMARRADOS a realidade do JSF , isso nao me parece algo muito “escalavel” , se vc quiser futuramente “plugar” um cliente J2SE vc vai ter MUITOS problemas…
Em breve escreverei uma analise mais completa em meu blog… falow…
[quote=chun]
Porem dei uma lida boa no JBossSeam , e tirando o esquema de bijecao… achei o resto MUITO confuso… a integracao com EJB 3 dele é simplesmente BIZARRA , @NotNull ? dah lincenca… Confesso que achei BEM interessante ele converter as actions JSF para Session Beans Locais , utilizando assim o poder do EJB aliado a tranquilidade do JSF BackingBean, mas tenho muitas ressalvas , este framework aprece ser MAIS UM no meio de tantos… nao tem GRANDES compensacoes… , vc acaba amarrando MUITO a app , onde antes vc tinha seus Session Beans fazendo a parte de regra de negocio… ( ou acessando ela) , agora vc vai ter eles AMARRADOS a realidade do JSF , isso nao me parece algo muito “escalavel” , se vc quiser futuramente “plugar” um cliente J2SE vc vai ter MUITOS problemas…[/quote]
Tou começando agora com EJB 3 mas já compartinho grande parte das suas opniões. A plataforma ficou muito ágil mesmo e muito poderosa. nem parece o “Búfalo Gigantesco” que era o EJB 2. Quero acrescentar, já muito bem descrito por v.c, que o EntityBean agora é plugavel…em outros conteiner (como o tomcat) e o trabalho com o Entity Manager, pra mim ficou bem mais fácil que utilizar ORM puro.
Quanto ao Seam, bem ou mal, não será mais um framework não (isto não e crítica e apenas uma observação), pois seu acrecimo ao JEE foi hómologado pelo JCP:
Eu achei que ele amarra a arquitetura dos EJBs na camada web ao JSF, se em outras tecnologias (Swing) ele fará o mesmo, só testando.
Porém, falando na web, lembre-se que o JSF é o padrão homologado pelo JCP, e segundo está lógica todas os outros frameworks WEB/Java tornaram-se não oficiais.
Usando este ponto de vista o Seam tem lá seu sentido.