Spring vs Java EE ? - Javafree: O fórum de Java que mais cresce
Spring vs Java EE ?
Publicado em: 28/01/2013 13:03:44
O assunto foi começado aqui: http://javafree.uol.com.br/viewtopic.jbb?t=888893
A ideia é que nós continuemos a falar sobre isso.
Publicado em: 28/01/2013 13:12:15
Essa vai render! Já expus minha opinião como citado acima pelo Otavio em outro post, mas vou sair ainda mais do muro.
Se for iniciar um projeto, se apenas eu for programar e tenha plena liberdade de escolha nos frameworks com certeza a injeção de dependências seria com Spring que ainda está um pouco a frente nesse assunto.
Publicado em: 28/01/2013 13:14:10
[quote="otavio_java"]O assunto foi começado aqui: http://javafree.uol.com.br/viewtopic.jbb?t=888893
Vamos lá, primeiro nada contra o JEE, muito pelo contrário, é uma plataforma com diversas especificações importantíssimas.
Mas sabemos, que o Java é mestre em lançar algo pessimo, dai vem alguém como Rod Johnson e Gavin King, por exemplo, criam uns frameworks e anos depois, o JEE se adéqua a esses frameworks.
Que bom que surgem frameworks "por fora", só assim, todos nós ganhamos, inclusive o JEE, que evolui.
Publicado em: 28/01/2013 13:41:58
O JEE, está evoluindo e muito e está cada vez mais participativo.
A grande vantagem é que ele é um padrão, ou seja, não depdende de uma única empresa.
Publicado em: 28/01/2013 16:42:49
Bacana, primeiro tópico que promete ser bem movimentado na nova sala
Eu não conheço nenhum dos dois a fundo, mas pelo que ouvi dizer o Spring eh o framework mais popular que está no mercado de java, certo ?
Publicado em: 28/01/2013 19:32:08
"Spring vs Java EE" é uma concepção bastante errada.
Na realidade, é "Spring *com* Java EE", e sempre foi assim desde o início.
A história é a seguinte: quando o Spring surgiu, o objetivo por trás do projeto era facilitar o desenvolvimento de aplicações corporativas. O EJB já havia pego tração e se mostrado uma plataforma maravilhosa para criarmos sistemas robustos e escaláveis em um ambiente distribuído. Infelizmente, ele era usado de uma maneira bastante equivocada: grande parte do seu foco estava na criação de aplicações distribuídas, e não aplicações mais simpels como ocorre em 90% dos casos.
Foi quando surgiu um livro fantástico do Rod Johnson chamado "Java EE development without EJB" que nos fez repensar o real uso desta tecnologia e também apresentar o Spring como solução.
De lá pra cá, muita coisa mudou: veio o EJB3, que é ordens de magnitude mais fácil de trabalhar que a versão anterior, tivemos o JPA e, mais recentemente, vêmos o CDI.
A pergunta que se faz é: vale à pena usar o Spring? Na minha opinião (que eu sei ser suspeita) vale. E vale muito. Por que isto:
1) O Java EE é mantido por um comitê: sendo assim, seu desenvolvimento sempre se baseia (ao menos em 99% dos casos) na inclusão na plataforma do menor denominador comum do que é encontrado fora dela. Pegue o CDI por exemplo: ele tem inspiração no Pico Container, Spring e Google Guice. Dos três, pegou apena so básico em comum. Sendo assim, no que ocorre fora do comitê você sempre vai ver tecnologias mais modernas que as escolhidas pelo comitê. Isto pode mudar, é verdade, mas não vejo isto ocorrendo.
2) O modelo de desenvolvimento. Apesar do CDI estar mais próximo do Spring, o desenvolvimento com Spring ainda é mais leve. Tanto no sentido de custo computacional como das próprias dependências. Apesar de ser visto de modo negativo, o XML nos permite usar qualquer POJO no container do Spring SEM que precisemos alterar uma linha de código. Com anotações precisamos recompilar, lembrem-se disto (ah, e no Spring o XML é opcional viu? Pode trablahar igual no CDI se quiser).
3) O ecosistema Spring. Há subprojetos excelentes lá dentro, como por exemplo o Spring Data e o Security, que se integram perfeitamente com o Spring Core.
4) Alguns dos recursos do Spring ainda são superiores: controle transacional mais fino e fácil de implementar, AOP mais evoluída com AspectJ, por exemplo, o suporte a DAO também é bastante interessnate, e mais alguns.
Publicado em: 28/01/2013 19:35:04
Kiko, vc é a pessoa mais suspeita do forum para falar bem do Spring.
A propósito, parabéns pelo livro, meus colegas falaram muito bem dele, e eu estarei comprando para brincar com ele no carnaval.
Publicado em: 28/01/2013 19:35:58
[quote="ricoarrigoni"]Bacana, primeiro tópico que promete ser bem movimentado na nova sala
Os dois realizam papel semelhante, mas a leveza do Spring é incomparável.
Publicado em: 28/01/2013 19:36:30
E ainda tem mais: o bacana do Spring desde o primeiro momento é o fato de tornar o servidor de aplicações opcional. Soa estranho em Java dizer isto porque desenvolvemos na maior parte das vezes aplicações web, no entanto há um mercado desktop que ainda é bastante forte.
E o Spring nos permite trabalhar com todos os recursos que citei acima (e os que não mencionei) neste ambiente. Então trazemos para este ambiente todos os recursos do servidor SEM o curso do servidor. Este é um uso muito comum do Spring.
O fato de não precisar de um servidor trás também outro benefício interessante: escrever os testes fica mais fácil. Aliás, você pode, se quiser, testar os seus EJBs usando o Spring, sabiam? Com ele da pra mockar um servidor de aplicações Java EE de uma forma razoávelmente simples.
Outra vantagem do Spring é o Spring MVC: apesar de não ser tão usado, é um framework muito poderoso. Tão poderoso que deu origem a um dos frameworks mais produtivos da plataforma Java que é o Grails.
No final, é importante lembrar o seguinte: o Spring não compete e nunca competiu com o Java EE. Ele o complementa, tornando tarefas que são chatas de serem feitas mais simples de serem concluídas.
Publicado em: 28/01/2013 19:38:56
Legal, estou dando uma olhada no Spring Batch e no Security.
Vocês recomendam ?
o Spring Security funciona melhor que o JAAS ?
Publicado em: 28/01/2013 19:49:05
O Spring Security é mais flexível. Ele te permite inclusive fazer o que o JAAS te permite de limitar o acesso a métodos de classes gerenciadas.
E detalhe importante: você pode usá-lo *FORA* do container, ou seja, em sua aplicação desktop se quiser.
É interessnate observar que nem todos os projetos da Spring são assim tão bacanas. O Spring WebServices por exemplo é completamente sem propósito: um troço contract-first que até hoje não consegui entender o ganho.
Publicado em: 28/01/2013 19:51:51
Publicado em: 28/01/2013 19:56:01
Usamos o Spring Batch na empresa. Apesar de ter uma curva de aprendizado não tão suave, depois que pega o ritmo é de boa.
Gosto do Spring, como o kicolobo falou, não se trata mais somente de Ioc. Tem todo um ecossistema a favor. Na empresa usamos:
Spring-Remoting (RMI)
E a integração com Hibernate/JSF também é tranquila.
E graças ao pionerismo do Spring, o JEE ficou bem mais simples.
Só uma dúvida em relação ao JEE. O CDI pode ser usado numa aplicação não-JEE facilmente?
Publicado em: 28/01/2013 20:03:41
[quote="ms27817"]Usamos o Spring Batch na empresa. Apesar de ter uma curva de aprendizado não tão suave, depois que pega o ritmo é de boa.
Spring-Batches
Tem sim, o WeldSE
Publicado em: 28/01/2013 20:04:22
http://blog.gilliard.eti.br/tag/weld-se/
Publicado em: 28/01/2013 20:04:49
Há uma implementação stand alone dele que se chama Weld, mantida pela JBoss. Talvez possa sim.
Aliás, a documentação do Weld é um dos melhores textos que já li sobre IoC e DI. Vale muito à pena a leitura, mesmo que você jamais venha a usar CDI.
Publicado em: 28/01/2013 20:06:02
Valeu pessoal, vou dar uma estudada no Weld.
Publicado em: 28/01/2013 20:08:20
Hummm, bom saber ....
Mais um framework para a lista, hehe ...
Publicado em: 28/01/2013 20:30:35
Já que estamos citando alguns projetos do spring, vou citar o spring-integration que até a pouco estava meio parado infelizmente... não sei como tá hj. Se alguém souber pode se pronunciar.
Publicado em: 28/01/2013 20:31:23
Seria possível trabalhar com Spring e Hibernate no mesmo projeto? Na realidade ele é usado frequentemente? Resumindo em que ajuda, no desempenho? Na persistência dos dados? Em que?
Publicado em: 28/01/2013 20:34:12
Rapaz, tópico tá bombando ein! DD
QUanto aos frameworks Java, os únicos que eu tive algum contato até então foram:
Hibernate, JSF, Struts MUITO POUCO rs
Alguém sabe de dizer se é possível ou bom desenvolver app mobile(android) com Spring ?
Publicado em: 28/01/2013 21:08:06
[quote="thiagovpalmeir"]Seria possível trabalhar com Spring e Hibernate no mesmo projeto? Na realidade ele é usado frequentemente? Resumindo em que ajuda, no desempenho? Na persistência dos dados? Em que?
É possível sim e usadíssimo, digamos que ele está um passo além dos outros frameworks no serviço de injeção de dependência, ou seja, ele é bem performático e leve.
Publicado em: 28/01/2013 21:30:55
Oi thiagovpameir,
sim, é possível trabalhar com Spring e Hibernate, e também com JPA.
No caso, você não terá grandes vantagens do ponto de vista de performance: a vantagem está no modo como o Spring gerencia pra você o SessionFactory, evitando que você precise se preocupar demais com sua instanciação, obtenção de conexões do BD, etc.
Há coisas interessantes por aí: por exemplo, o Spring gerencia as transações pra você de uma forma muito mais fácil do que você faria manualmente, o que te dá um ganho de produtividade (e talvez performance) muito grande.
Além disto, o Spring também unifica a cadeia de excessões disparadas pelo Hibernate. Sendo assim, se no seu projeto você usa tanto JDBC quanto Hibernate, o Spring, você não precisa se preocupar em lidar com as excessões do Hibernate E do JDBC: elas serão normalizadas em uma terceira hierarquia de excessões, que engloba os dois, facilitando assim a escrita do seu código e também a sua manutenibilidade.
Publicado em: 28/01/2013 21:31:59
[quote="ricoarrigoni"]Rapaz, tópico tá bombando ein! DD
Sim, é possível. Da uma olhada neste link: http://www.springsource.org/spring-android
Existe um projeto da SpringSource chamado Spring for Android que é justamente pra isto.
Publicado em: 28/01/2013 21:33:50
[quote="davi.costa"]Já que estamos citando alguns projetos do spring, vou citar o spring-integration que até a pouco estava meio parado infelizmente... não sei como tá hj. Se alguém souber pode se pronunciar.
O problema do Spring Integration é que ele possuí um concorrente atualmente práticamente imbatível: o Apache Camel. Então o pessoal acaba preferindo usar o Camel que o Integration pelas seguintes razões:
* O Camel é muito mais maduro
* O Camel possuí muito mias componentes
* O Camel é muito mais rico em recursos
E, pra arrebentar de vez o Integration....
O Camel funciona com o Spring, de tal maneira que oferece a mesma possibilidade do Camel de usar o formato XML para descrever rotas com todas as vantagens acima.
Publicado em: 28/01/2013 21:38:27
Publicado em: 28/01/2013 21:38:42
[quote="kicolobo"][quote="ricoarrigoni"]Rapaz, tópico tá bombando ein! DD
Holy shit! o bagui eh muito maior do que eu imaginava rs Muito irado esse spring!
Publicado em: 28/01/2013 21:39:10
Notei que a galera aqui do fórum gosta demais do Spring ein.. acho que demoramos muito pra criar essa sala rsrs
Publicado em: 28/01/2013 21:39:50
[quote="thiagovpalmeir"][quote="thiagovpalmeir"]Seria possível trabalhar com Spring e Hibernate no mesmo projeto? Na realidade ele é usado frequentemente? Resumindo em que ajuda, no desempenho? Na persistência dos dados? Em que?
te respondi logo acima.
Publicado em: 28/01/2013 21:41:41
[quote="kicolobo"]"Spring vs Java EE" é uma concepção bastante errada.
Seria bacana se o autor do tópico alterasse o título tirando esse VS, o que acham?
Publicado em: 28/01/2013 21:42:40
[quote="ricoarrigoni"][quote="kicolobo"]"Spring vs Java EE" é uma concepção bastante errada.
Discordo, acho este tópico excelente justamente por mostrar que esta visão não é válida.
Publicado em: 28/01/2013 21:52:22
[quote="kicolobo"][quote="ricoarrigoni"][quote="kicolobo"]"Spring vs Java EE" é uma concepção bastante errada.
Entendi, mas acho que pode confundir um pouco as pessoas achando que eh uma disputa e tals rs que sao coisas diferentes rs
Publicado em: 28/01/2013 21:53:32
[quote="ricoarrigoni"]
Se fosse pra mudar, talvez eu modificasse para "Java EE vs Spring?"
Publicado em: 28/01/2013 22:00:27
[quote="kicolobo"][quote="thiagovpalmeir"][quote="thiagovpalmeir"]Seria possível trabalhar com Spring e Hibernate no mesmo projeto? Na realidade ele é usado frequentemente? Resumindo em que ajuda, no desempenho? Na persistência dos dados? Em que?
Foi malz, vlw...
Publicado em: 28/01/2013 22:17:47
[quote="ricoarrigoni"][quote="kicolobo"][quote="ricoarrigoni"]Rapaz, tópico tá bombando ein! DD
Além do Spring tem também o RoboGuice:
A dúvida, qual é o melhor?
- Spring-Android
- Android-Annotations
Vi que o Android-Annotations é mais performático, pois é resolvido em tempo de compilação (não usa reflexão).
Bem, já estava na hora das aplicações Android terem injeção de dependência. Nem tanto pela performance, pois você acaba colocando um overhead a mais de abstração, mas pelo design limpo (SOLID).
Publicado em: 29/01/2013 04:27:29
Tem o Google Guice que promete ser mais rápido que o Spring, no entanto, ele é bem mais limitado.
Publicado em: 29/01/2013 06:14:43
melhor tópico de 2013 disparado.... várias explicações sobre JEE, Spring... e seus n projetos!!!
Publicado em: 29/01/2013 06:41:55
[quote="davi.costa"]melhor tópico de 2013 disparado.... várias explicações sobre JEE, Spring... e seus n projetos!!!
Publicado em: 29/01/2013 08:53:26
Ótimo tópico, como disse na thread que iniciamos esta discussão, é o tipo do assunto que rende bastante conhecimento para os já experientes e para os recém chegados então, nem se fala.
Nunca pensei em utilizar o Spring junto com o JEE, sempre pensei no Spring no lugar do JEE.
Alguém poderia dar algum exemplo da combinação de ambos ?
Publicado em: 29/01/2013 09:14:51
[quote="Leonardo Torres"]Ótimo tópico, como disse na thread que iniciamos esta discussão, é o tipo do assunto que rende bastante conhecimento para os já experientes e para os recém chegados então, nem se fala.
Vc tem razão, não é interessante usar toda a parte do Java EE com o Spring.
Mas uma parte de cada seria interessante.
Um projeto legal seria usar o Spring Core com o JSF.
Outro produto que tinhamos rodava em Java EE, no entanto, tinha clientes que gostava do Glassfish e outros do Jboss.