Gostaria de uma opinião do pessoal, estou querendo usar alguma framework MVC em um projeto que irei fazer via WEB.
Dei uma rápida analisada em alguns frameworks (Struts, WebWork e Spring).
Alguns detalhes deles: Struts
:arrow: Ponto Positivo: é bem aceito no mercado, tem uma documentação legal, e empresas grandes como Oracle apoia.
:arrow: Ponto negativo: me parece que é mais complicado de usar que os outros. Não tem AOP e isso o deixa um pouco mais trabalhoso. Além de muitos falarem que ele não é legal (nao sei porque).
WebWork
:arrow: Ponto Forte: me parece o mais simples de trabalhar, e me parece muito produtivo. Algumas pessoas do GUJ falam muito bem dele (Smota, CV). Única coisa que vi na prática foi o artigo do Smota aqui, e achei até um certo ponto simples de entender.
:arrow: Ponto Negativo: Sua documentação é PÉSSIMA!!! Isso acho que queima muito a ferramenta. Complicado eu pendurar um software em cima de uma ferramenta que não tem documentação, e quando eu precisar de algo, não sei como irei recorrer (talves mandando email para os próprios desenvolvedores ou abrindo código fonte, enquanto com documentação seria mais simples). Acho que a falta de documentação pode prejudicar o futuro da ferramenta.
Spring
:arrow: Ponto Forte: Usa AOP e IoC igual o Webwork, assim tornando o trabalho mais simples, apenas que os Beans devem ser mapeados também (como o hibernate), mas não sei se existe alguma xdoclet para isso, ou algum plugin, sei lá. Sua documentação me parece ser show de bola, não cheguei ler inteira (é um PDF com mais de 100 páginas), mas me parece ser muito boa. Ela está sendo bastante comentada em outros sites relacionados a java, como o theserverside. Além de framework MVC, ela tem outras features, o que é um ponto positivo para uma futura manutenção.
:arrow: Ponto Negativo: Não achei nada em português relacionado. Ficar mapeonado Beans não é uma coisa legal (a menos que exista algum xdoclet para isso).
É mais ou menos isso que eu acho.
Agora gostaria da opinião do pessoal, para qual das Frameworks estudar para usar.
Eu sei que vai ter gente falando para usar as 3 e testar qual a melhor, mas o problema nisso é TEMPO!!! Claro que futuramente eu poderia estudar as outras, mas para início, gostaria de uma para poder implantar em um projeto.
Bem, como você previu: Estude as três! :shock:
eheheh se o objetivo é saber nada melhor do que brincar com todos … agora sem tempo pra decidir vc pode confiar na experiencia dos outros (eh meio arriscado mas se vc nao tem tempo) ou continuar sua pesquisa que tá indo muito bem e mesmo sem mexer vc ja tera uma boa base pra decidir
Agora 2 comentários:
Webwork => A documentação realmente é horrível, mas vc não precisa muito dela 8) … depois de uma ou duas surras vc passa a conhecer praticamente tudo do danado e nao tem mais segredo, é realmente simples. Mas a documentação tá em vias de melhorar (eu vi o CV me dizer isso a quase 1 ano atrás :? ).
Spring => Ele não é só um framework pra MVC, ele tá mais pra canivete suiço, lava-passa-e-cozinha … talvez por isso se vc só quer o framework seja melhor ficar com o WW (tá, ou o Struts) mesmo (de qq modo vc pode usar o Spring pras outras coisitas enquanto usa WW totalmente integrados)
Obrigado Urubatan e Smota por responderem o tópico.
Urubatan, eu ainda não estudei a fundo o Spring, o pouco que eu li, eu vi que tinha que ficar mapeando os beans igual o hibernate, mas já que não precisa de todas as proprietades, melhor
Então Smota, eu até concordo que no começo você apanha para aprender e depois tranquilo (o pouco que eu vi no seu artigo, achei o Webwork bem simples), mas como eu disse no meu post, falta de boa documentação pode prejudicar o futuro da ferramenta. Porque eu digo isso? Pois com documentação ruim, menos desenvolvedores vão utilizar, assim talves desmotivando os criadores e quem sabe até terminar de lançar atualizações na ferramenta e ela morrer :oops: . Esse é talves o maior medo, usar webwork hoje legal, mas será que amanhã alguem ainda vai continuar desenvolvedo ele? Alguem será que irá dar suporte? :roll:
E lembrando, estou com pouco tempo para poder brincar com as 3
Eu digamos estou quase na mesma situação que você, mas estou estudando mais a fundo o WW2, e ele é muitoooo bom.
O Spring eu não cheguei a estudar, mas já peguei algumas dicas com o Urubatan em PM, e pretendo um dia estudar sim, mas por enquanto estou usando o WebWork.
Se você quer desenvolver algo voltado a WEB e o que você procura é a funcionalidade de uma Framework MVC, acho que o WW2 é ideal. Claro que a documentação não é legal, mas como o Smota disse, no começo você apanha e depois vai tirando de letra, o próprio artigo do Smota já cobre grande parte do WW2. E em último caso, você pode entrar na lista de discussão do WW2 no java.net, e lá as pessoas são muito gente boa e respondem as dúvidas
Vale notar que o Webwork 1.3 continuou seu desenvolvimento mesmo depois do lançamento do 2 e agora tá na versão 1.4 com vários patches bacanas. Não entendi bem o motivo porque eu não usei o 1, mas os doidos lá disseram que queriam continuar com a simplicidade do 1 :?
Por falar em doidos … os principais desenvolvedores do WW2 são mais doidos ainda, do tipo eu odeio o struts e fiz algo muuuuito melhor que ele e por isso eu não me preocupo muito com isso.
Além do mais o código dele é bem simples e extendê-lo por conta nao é dificil, eu já me aventurei e gostei.
Outro lado bom é que ele não depende exclusivamente dos seus criadores, muitas das suas funcionalidades foram feitas por desenvolvedores de fora e muitos patches tb, tem um bom grupo por trás dele. Ainda tem empresas que estão usando o danado em seus produtos (comerciais - including mine) … resumindo, acho que o risco existe mas não é tão grande.
Ah … sim, eles sabem do problema mas documentar eh muito xarope e eles ainda querem se divertir :lol: mas uma hora sai … tem um brasileiro que fez um tutorial (em ingles, sorry) muito bacana, mas eu perdi o link, veja no historico da lista …
Mas em tempo … hoje mesmo na lista começou um movimento com cerca de 30 mensagens sobre esse assunto, tá começando a nascer um grupo responsável só por documentar (eu devo estar nele :roll: ) …
bom, deu para ver que o WW2 tem a preferencia da maioria aqui no GUJ
mas eu ainda prefiro o spring,
principalmente pela possibilidade de utilizar:
** IoC - ta, este tem no WW2 também
** Demarcação declarativa de transações - sem a necessidade de um container J2EE
** AOP - tão fácil que parece mágica, e configurado como JavaBeans da mesma maneira que toda e qualquer coisa no spring, por exemplo, logging e tratamento de erros, só utilizo aspectos, o resto da aplicação não fica nem sabendo ue isto existe
** Facilidade absurda de acesso a dados - Suporte para Hibernate, JDO e JDBC, show de bola o esquema de acesso a dados e a hierarquia de exceções do spring, mas se não quiser não é obrigado a utilizar isto
** Acesso a beans locais ou remotos exatamente da mesma maneira e integrados ao container IoC - JNDIBeanFactory, RMIBeanFactory, …
** MVC - o framework MVC do spring é bem semelhante ao do WW2, tem algumas facilidades a mais, mas nada de espetacular, o que faz falta são as tags de UI para os formularios, por isto criei um projetinho no java.net para portar as tags do WW2 http://velotags.dev.java.net
** Total independencia da camada de view - no WW2 tem algo parecido, mas no spring achei muito barbada de utilizar, tudo junto, Velocity, Tiles, JSP, XSLT e ainda ter alguns lugares que devolvem pro cliente um PDF ou um arquivo excel
Eu realmente não conheço muito do Spring mas no geral a maioria do pessoal que usa tem a mesma opinião do Spring e estão muito satisfeitos.
Entonces talvez valha a pena vc ir por esse caminho (que como eu disse não é só um container pra MVC, tem outras atribuições).
Lembrando de novo que dá pra usar tudo isso do Spring com o Webwork integrando os dois numa boa (e enquanto as tags não são portadas vc usa a facilidade delas com o Spring).
quanto a view … bem, o que dizer … o WW usa até o JasperReports se vc quiser (passando por XMLRPC, JSF, Freemarker e mundo afora)
(ehehe esse foi soh pra encher o saco, eu parei por aqui, vou estudar o Spring )