pcassiano:
Gostaria de obter, em linhas gerais, um comparativo técnico entre os frameworks Seam e Spring.
Se você tem experiência em ambos, pode me dizer, por exemplo, quais são as 10 [color=blue]coisas boas[/color] e as 10 [color=red]coisas ruins[/color] de cada um?
Veja que estou pedindo um comparativo técnico e não me interessa gerar flames. Vamos manter o nível da discussão “lá em cima”, OK?
Nossa… dez coisas é difícil de levantar duma vez só.
Primeiramente, quero te lembrar uma coisa: Seam e Spring têm propósitos diferentes, então, não dá pra falar de um “comparativo” , é o mesmo que comparar maçã com banana.
Nunca usei os dois em conjunto, mas, separados, eles são muito bons naquilo que se propõem. Vamos lá:
Coisas boas Seam:
- Permite integração direta de tags JSF com EJBs (carro-chefe do framework);
- Utiliza JBoss EL (que dá a capacidade , dentre outras coisas, de invocar métodos, passando parâmetros e tudo mais, na própria EL);
- Implementa contexto de conversação, ou seja, determinado contexto é válido “para algumas páginas” (é um modelo intermediário entre o contexto de requisição e o de sessão);
- Facilita tarefas de persistência, como por exemplo: se eu persisto a entidade X, então o Seam irá controlar o contexto de persistência - transações e tudo mais - e ainda irá colocar uma mensagem no contexto JSF dizendo que a entidade foi persistida;
- É facilmente integrável com jBPM (aliás, para saber mais sobre o jBPM, consulte o artigo “Workflows com jBPM”, na Java Magazine 71 - eu sou o autor!! =P );
- Possui uma biblioteca de tags que habilita, entre outras coisas, a integração com Hibernate Validator;
- É amplamente configurável através de annotations.
Coisas ruins Seam:
- Se você precisar usar algum componente Seam de fora do contexto, prepare-se para ter trabalho - isso é um tanto chato de fazer (porém, “chato” não quer dizer “impossível”);
- O modelo de conversação possui diversas limitações;
- Se você precisar remover , ou simplesmente não quiser colocar, algumas mensagens que ele coloca automaticamente no contexto, está ferrado - terá que fazer alguma gambiarra com reflections para tirá-las de lá;
- É chato (de novo, “chato” não é “impossível”) de configurar em outro application server que não o JBoss;
- Ele “mexe” no modelo default de classes do jBPM - o que dá algumas dores de cabeça, às vezes.
Coisas boas Spring:
- É o Spring!! =P
- Ele te ajuda com transações;
- Ele te ajuda com injeção de dependência;
- Ele te ajuda com AOP;
- Ele te ajuda com EJBs;
- Ele te ajuda com MVC;
- Ele te ajuda com segurança;
- Ele te ajuda com praticamente todos os frameworks que já estão bem estabelecidos no mercado.
Coisas ruins Spring:
- Ele te faz se acostumar com ele e não querer mais largar =P
(Sério, não sei o que falar de ruim do Spring)
Espero ter ajudado. Essas são algumas características dos dois frameworks que consigo lembrar, mas caso lembre de mais alguma coisa, complemento a lista.
[]´s