Preciso de ajuda para escolher o melhor

Pessoal, seguinte, terminamos um projeto grande de ERP aqui na empresa (cujo foi meu primeiro projeto aqui onde entrei pra ajudar a finalizar), um sistema bem complexo, onde inicialmente não foi usado nada com relação a padrões de projeto, nem mesmo os básicos, como o MVC, foi uma experiência terrível. Agora eu quero fazer um refactoring do desenvolvimento inteiro da empresa, incluir as melhores tecnologias em Java disponíveis no mercado, visando a produtividade (pro chefão aqui, a unica coisa que importa é a produtividade) e escalabilidade com fácil manutenção. Então, venho até vcs a produra de dicas, do que devo implantar na empresa para começar 2005 fazendo bonito. Oque esta na minha cabeça é:

[color=“red”]View:[/color] Taglibs do framework MVC usado ou Velocity? Será que vale a pena adicionar mais um conjunto de .jars no projeto e mais uma camada a ser estudada pela equipe? (No caso de se usar velocity)… Ou ja usamos taglibs, que ja estão disponiveis no proprio framework?

[color=“red”]Framework MVC:[/color] Webwork ou o MVC do Spring (caso seja escolhido o Spring).

[color=“red”]Framework J2EE:[/color] Spring. Agora, será que vale mesmo a pena utilizar o Spring? Digo, aqui há uma carencia de pessoal treinado, ou seja, não sabem nem oque é Facade, imagina quando verem um XML do Spring. E outra, é difícil fazer uma empresa se prender tanto assim a uma solução livre, eles não confiam, preferem pagar uma fortuna por algo que sabem que não vai nos deixar na mão (vcs tem que concordar que isso é um ponto a se pensar). Há! E o IoC do Spring procura referencias a objetos na rede? Digo, posso colocar um EJB como componente no XML do Spring? Por ex, tenho um facade que é um EJB remoto, posso defini-lo junto nos componentes do Spring? Ou vou precisar de um Service Locator ainda?

[color=“red”]Persistência:[/color] Hibernate ou JDO? Eai, alguém pode me dizer os pros e contras quando colocamos um quadro comparativo entre os dois? Entra em jogo a performance. E quanto a transações? E transações multi-banco? Usar JTA? O próprio Hibernate? Pros? Contras? Também ouvi falar que o Spring implementa transações, mas, ele não impõe nenhuma limitação?

Então é isso, espero respostas interessantes e esclarecedoras!

Vai depender muito do perfil da equipe dos próximos projetos. Se vcs optarem por tecnologias pouco conhecidas, como Spring e WW, vão ter que treinar a equipe e se dar o luxo de ter baixa produtividade no início do projeto.
Além disto, já dizia Rod Johnson(criador do Spring), que é importante ter pelo menos um “arquiteto” competente e com grande experiência nas tecnologias que serão utilizadas. Ou seja, não adianta usar frameworks famosos se ninguém souber usá-los bem. No final ficarão alguns buracos no sistemas(calro que bem menos buracos do que se nenhum framework fosse usado).

Se eu fosse gerente de projetos, preocupado com em encontrar profissionais com experiência, usaria a dupla mais manjada:Struts, JSP e Hibernate
Se eu estivesse pensando em simplicidade usaria Pico, WW e Hibernate.
Pessoalmente eu usaria Spring, Freemaker e/ou JSP e Hibernate.

não não Marcelo, não é um refactoring do sistema ja existente, o ERP finalizamos, ja foi pro cliente, e nunca mais quero abrir aquele código :lol:, o refactoring que eu disse é do desenvolvimento da empresa, vamos sim começar algo do zero, por isso criei este tópico, pra saber em que devo investir

ps: como tu me disse no msn, “com IoC, xô Service Locator”, bem, mas ai como funciona o lookup de componentes na rede? :roll:

então Marcelo, é oque eu acho, ter uma equipe treinada, mas, pra falar a verdade, só vão ter 2 caras definindo isso tudo aqui agora, q é eu e meu colega, isso tudo é tranquilo pra gente, qualquer pdf baixado no site dessas tecnologias ja é o suficiente… O intuito deste tópico então é eu tirar oque vou precisar, pra desenvolver com uma boa produtividade :slight_smile:

ERP, e vc quer fazer um refactoring de tudo?
Tem muita coisa errada ae neh?

O que eu aconselho é vc começar outro projeto e deixar esse de lado (A BOMBA), e no novo projeto tentar fazer as coisas direitinho.

Pelo pouco que eu sei desse projeto, sua view desse ser algo mais ou menos assim:

...
<%
rs = connection.createStatement().execute("SELECT * FROM funcionarios WHERE .... GROUP BY .... ORDER BY ....")
if(rs.next()){....}
%>
....

Então, vem a pergunta: vale a pena vc fazer um refactoring de um ERP onde não tem nada com nada de boas práticas de programação?
VALE REALMENTE A PENA FAZER ISSO?
Qnt tempo vc vai ter? Qnts pessoas trabalhando? Seu chefe vai liberar verba? A equipe ainda vai aprender como fazer um Hello MVC?

<desvirtuando_topico>Franklin, pq vc prefere o Freemaker ao Velocity?</desvirtuando_topico>

Ahhhhhhh… da empresa! :oops:

Tava achando muito estranho querer fazer um refactoring total e completo de um ERP (mas tem doido pra tudo! :P)

Não sou o expert pra falar, mas o que eu to mechendo agora, com WW, Velocity e hibernate, é uma baba fazer as coisas. (Uma vez ou outra o bixo pega, mas é tranquilo!)

Mas… isso depende do projeto que vc vai fazer. O ideal, é que tenha boas pessoas na equipe, que saibam decidir que hora usar isso, aquilo, ou aquilo outro.

Só sei que se depender de mim, não uso mais JSP, Stuts e JDBC! :twisted:

Como vc disse que o pessoal ae da sua empresa não manja muito, prepara umas apresentaçõeszinhas e marca com o pessoal. Vai empolgando a galera de pouquinho, mostrando que isso é melhor do que aquilo por casua disso e daquilo.

WW, Velocity, Sitemesh, XDoclet, Hibernate e JUnit acho que já está de bom tamanho! :smiley: