Struts ou Velocity?

Olá,

Estou iniciando no mundo web e gostaria de saber quel framework estudar . Eles são exclusivos ou complementares? A maioria das empresas utiliza o Struts. É porque é melhor ou porque é mais recente ? O Velocity vai pegar ?

Aguardo opiniões, que no GUJ sempre são muito esclarecedoras.

Obrigado,

Márcio

São complementares. Struts implementa o MVC Model 2, e o Velocity é “apenas” um template engine para a camada View e para geração de código.

No caso do Struts, você pode usar JSP ou Velocity para a camada de apresentação.

[]'s

Como o Caio disse, Struts e Velocity são complementares, agora se você quer uma framework oposta ao Struts, estude o Webwork :lol:

Struts eh utilizado em empresas. Como esta o WebWork em relacao a isso? Quem por aqui tem tido oportunidade de empregar essas alternativas no trabalho? (nao valem projetos pessoais/individuais)

Infelizmente eh um fator a ser pesado. :smiley:

Marcio Kuchma

Há algum tempo a gente gritava: USE MVC! A única implementação MVC utilizável apra Web era o Struts, e as pessoas diziam que era muito complicado, e usavam Servlets/JSP. Agora gritamos: USE MVC, NÃO USE STRUTS e as pessoas e as pessoas dizem que é muito complicado, e usam Struts.

Olá

O Caio já respondeu tudo que precisava ser dito, vou só divagar um pouco.

Hahahaha, perfeito. Struts é bom, tem razoável produtividade, muita gente conhece, muita gente usa. Mas, porém, contudo, todavia, dá um trabalho danado. Mesmo usando wizards tipo MyEclipse é puro artesanato. E o pior que ainda é meio dificil de explicar para a equipe o que realmente compõe cada parte do V-C-M. (resolvi parar de usar a sigla MVC porque a galera insiste em achar que M tem que dialogar com V)

Ainda não estou completamente convencido sobre qual framework usar. O que mais conheço é o Struts e este sei que não gosto. O webwork me parece bom e do spring gosto muito do autor.

Vou parar antes que me perca completamente. Mas deixo um conselho que adotei para mim: de qualquer jeito, gostando ou não, estude Struts. É muito provável que apareça muito serviço ainda com ele pois muitos sites já usam.

[]s
Luca

Depois que vi você falando isso pela primeira vez, virei seu seguidor nesse quesito. :wink:

Não conheço muito bem o Spring-MVC, e já usei o WebWork 2 num projeto (pequeno). Ainda acho o WW2 mais simples, de aprender e de usar. Mas ainda tem o velho problema de pouca documentação, apesar de ter melhorado.

Concordo aqui. Sábado estive no II JavaAmericana, e me botaram pra coordenar a muvuca que rolou lá. Essa pergunta era inevitável, e não demorou pra soltarem:

Eu expus os mesmos argumentos que usei aqui, e também toquei neste ponto de mercado. Acho bem válido.

Bom, é isso.

[]'s

Rapaz, eu desenvolvo com o Struts e gosto muito. A produtividade é ótima, o framework é simples de configurar e manter e o melhor de tudo, tem documentação a dar com pá :smiley:

To mexendo com o Spring MVC, mas acho que ainda não vai ser dessa vez, porque eles ainda não conseguiram empacotar o Validator direitinho, eu realmente não estou com saco pra escrever validação na mão denovo não. Mas to usando o Spring como container IoC dentro do Struts, o que tá ajudando ainda mais no trabalho.

Tentei o WebWork 2, mas depois que eu baixei a documentação e percebi que eu tinha que ler ela de trás pra frente (literalmente :shock: ) larguei e fui estudar mais AOP, porque aquela documentação é triste. Ainda tenho fé que um dia eu aprendo a usar, mas é bom eles darem uma melhorada naquela confusão.

E se eu fosse você aprendia tanto JSP quanto Velocity, nunca se sabe quando vão botar você pra fazer uma newsletter ou coisas do gênero e o Velocity realmente detona pra fazer templates, nunca me deixou na mão.

No fim você vai ter que saber um pouco de tudo, mas Java é assim mesom né :smiley:

Fugindo um pouco do assunto, alguem ja utilizou o JBanana um MVC nacional?

[quote=marcioa1]Olá,

Estou iniciando no mundo web e gostaria de saber quel framework estudar . Eles são exclusivos ou complementares? A maioria das empresas utiliza o Struts. É porque é melhor ou porque é mais recente ? O Velocity vai pegar ?

[/quote]

Márcio,

Como o pessoal aqui disse é bom que vc aprenda os dois, mas só esclarecer um detalhe: toda vez que implementar a parte Viewer do VCM (MVC) vc terá duas opções: usar templates ou taglibs para fazer os “if’s” dentro de suas páginas web (claro que dá pra fazer mais que isso, foi só um exemplo).

Eu prefiro usar taglibs (por exemplo JSTL) por achar mais legível, mas sugiro que você teste as duas implementações e use a que mais gostar! :smiley:

HAAAAAAAAAAAAAAAAAAAAAAAAAHAHAHAHAHAHAHAHAHAHAHAHAHA!!! :mrgreen:

Tudo bem, produtividade eh relativo, mas “simples de configurar e manter” eh a antitese de tudo o que eu penso e ouco falar do Struts. Voce esta usando alguma ferramenta magica que muda completamente o jeito de trabalhar com o Struts, ou voce so nao conhece o WebWork2, Seaside e Ruby On Rails, mesmo? :wink:

Ruby On Rails == Código HTML misturado com script Ruby ( não, aqueles macros não ajudam), até PHP com o PRADO ( http://www.xisc.com/ ) é mais fácil de usar e manter.

O WebWork eu tentei, mas a documentação terrível (eles apresentam o WebWork na página 356 :shock: ). Quando eles melhorarem eu tento denovo :stuck_out_tongue:

Seaside eu nunca ouvi falar, vou procurar :smiley:

Eu não vejo nenhum problema pra fazer manutenção nele. Você já passou um aperto com ele :?:

Eu tou usando o WebWork é um sistema relativamente grande e não tenho sentido tanto esse problema da falta de vasta documentação sobre ele, já que as configurações são bem simples e normalmente são auto explicativas.

Ao contrário do Struts, que é impossível de configurar/usar sem ter um turbilhão de documentos auxiliando.

Não entendi essa sua colocação sobre ter um turbilhão de documentos.

Documentos do Struts? O struts-config.xml? Os JavaDocs? Que turbilhão de documentos é esse?

Quis dizer que não dá pra usar o Struts intuitivamente, pelo menos eu não consigo. E meu considero uma pessoa normal. :wink:

Pois é, intuitivamente é uma coisa meio vaga.

Eu realmente não vejo problemas em usar ele e eu também não me acho nem um pouquinho mais genial do que os outros, na verdade sou apenas um estudante de graduação que ainda vai terminar o curso no ano que vem :smiley:

Mas cada um tem o seu gosto, eu só conheço o Struts e o Spring MVC, e posso falar por eles, já o WebWork não usei pelos motivos que eu já citei, falta de uma documentação bem feita. Eu realmente não tenho paciência pra seguir aquele monte de how-to’s que tem por aí, gosto de ir num lugar só (de preferência um livro 8) ) e entender como a coisa funciona. Assim que tiver um eu vou atrás pra aprender.

Intuitividade nesse contexto, pra mim, é quando uma pessoa que “não está muito por dentro das coisas” tem uma idéia do que se trata só passando uma leve vista.

Ao meu ver, os arquivos de configuração do Struts como do Spring não são muito intuitivos, quando a aplicação é grande… diferente do WebWork.

Olá

Zé e Maurício

Este papo não tem muito sentido porque o que é difícil para um pode não ser para outro. Realmente a documentação do ww está longe de ser tão farta como a do Struts. Aliás, no dia em que isto acontecer, provavelmente haverá uma outra alternativa mais nova e melhor do que o ww.

Acho que é fácil perceber as deficiências do Struts por vários motivos: é o mais usado, o mais antigo, o que tem mais documentação, etc. e tal. Não perceber quais são seus defeitos pode ser apenas uma questão de não ter parado para olhar ou falta de experiência na separação de responsabilidades de acordo com conceitos posteriores à criação do Struts. Chuck Cavanese diz no melhor dos 3 livros de Struts que tenho: “Is Action part of the Controller or Model” ou “Where does business validation belong?” São dúvidas como esta que o confuso Struts permite que o tornaram obsoleto. O Struts está morto e quem matou não fui eu, foi seu autor que decidiu assim. Mas ainda tem enorme legado e para quem não tem muita curiosidade, tempo e grana para conhecer coisa melhor ainda pode ser muito útil.

O ww nasceu posteriormente e pode corrigir algumas deficiências de engruvinhamento macarrônico do Struts. Não fica passando servlets para lá e para cá. Mas ainda não tem tantos livros escritos sobre ele e assim nenhum autor ainda levantou dúvidas como as do Chuck.

O Spring veio com outros objetivos. Oferece outras vantagens e não pretende somente ser um framework VCM. Ele não substitui o Struts ou o ww. Pode ser usado junto com eles.

Aliás, o tema deste tópico era Struts ou velocity. Está certo, o “ou” aí não tem sentido. Deveria ser Struts com JSP, velocity ou freemarker. Mas o que tem o ww e o spring a ver com isto? Bela fuga do assunto!

[]s
Luca

Ótima explicação Lucas, Além disso Maurício aqui no fórum acho que temos uns trocentos tópicos com a mesma duvida que vocês expos, eu mesmo já perguntei sobre Struts + Tapestry e comparações com outras tecnologias, dá uma procurada pelo fórum.

Abraços! :thumbup:

As views do RoR sao, sim, templates ERB (que, no fim das contas, eh Ruby dentro do HTML do mesmo jeito que JSP tem Java dentro do HTML). A diferenca eh que Ruby eh uma linguagem que presta, e o resultado do codigo eh bem mais legivel ate do que JSP com taglibs (eu te dou 3 chances de me convencer que logic:iterate e html:link, ou de que a JSTL inteira foram boas ideias, ou sao mais faceis de ler e manter quando comparadas ao ERB)

Sobre o PRADO, bacaninha, mas o problema fundamental do PRADO eh nao ter uma linguagem boa como Ruby por tras. Ruby eh 100% OO, dinamica, e blaaaaaaaaah blah blah (insiram paginas de discurso aqui).

E, claro, a sua afirmacao demonstra claramente que voce nao testou o Rails. Nao estou sendo convencido quando digo isso, mas eu estou convencido de que o Rails espanca, cospe e xinga a mae de qualquer outro framework web feito em Java que existe hoje em dia. Mas, claro, nem todo mundo eh xarope de abandonar Java assim de uma hora pra outra, e temos muitos frameworks bons, apesar da linguagem nao colaborar muito: WebWork 2, Tapestry e Echo2 sendo exemplos bacaninhas.

Peco aos caros amigos do GUJ pra montar uma lista de topicos com mais ou menos 10 itens onde isso ja foi discutido aqui, mas caso voce queira minhas definicoes basicas sobre o que esta errado com o Struts, ai vao:

  • Otimizacao prematura (actions singleton)
  • Actions presas ao container (unit isolation test? hein? huh?)
  • Configuracao e codigo demais pra pouca coisa (forms? formbeans? mappers?)