Migrando de desktop (Delphi) para web: que framework(s) usar?

Olá,

A empresa aonde trabalho está em processo de migração dos sistemas para a web, com Java. Atualmente, temos duas equipes completamente distintas: uma, com cerca de 20 programadores Delphi (a maioria não conhece nada de desenvolvimento web), e outra, bem menor, com 5 programadores PHP + Zend.

Como analista de sistemas, e o único conhecedor da plataforma Java na empresa, fui encarregado de definir as metodologias e ferramentas de desenvolvimento a serem usadas nas futuras aplicações. Sei que não posso definir uma única ferramenta a ser usada por todas as aplicações, já que as equipes de desenvolvimento têm conhecimentos bem distintos, além de as aplicações terem finalidades diferentes (intranet e internet), terei que escolher pelo menos 2 frameworks web.

Para a equipe PHP é mais fácil: acredito que o melhor é escolher um framework action-based, como o VRaptor, Struts 2 ou o Mentawai. Tenho uma tendência maior a escolher o VRaptor, já que ele evita o uso de XML e conheço pessoas em outras empresas que o utilizam, o que facilita o intercâmbio de conhecimento. Se tiverem alguma sugestão, agradeço.

Para a equipe Delphi é que a coisa complica: para diminuir a curva de aprendizado, tenho que escolher uma ferramenta que seja mais próxima do desenvolvimento desktop, ou seja, component-based. Sendo assim, minhas principais opções seriam o JSF (com algum pacote de componentes AJAX, como PrimeFaces ou RichFaces), ou usar o GWT (Google Web Toolkit).

A vantagem que eu vi no GWT foi que ele possui um plugin do Eclipse para desenvolvimento visual, o que facilita bastante a vida de quem está acostumado a “jogar” componentes numa tela e já ver como ficará a “cara” da aplicação final. No caso do JSF, o único editor visual que consegui encontrar foi o do JDeveloper + ADF, mas sinceramente essa dupla não merece ser usada: além de o JDeveloper consumir horrores de memória e travar muito, o ADF tem uma carência muito grande de documentação (ao que me parece, somente os Oracle Partners utilizam esse framework) e ainda usa o JSF 1.2, ou seja, corre o risco de ser migrado para a versão 2.0 do JSF e nós termos que reescrever muita coisa, ou simplesmente a ferramenta ser descontinuada e ficarmos a ver navios.

O que vocês acham? Favor levar em consideração as 2 “classes” de programadores que mencionei.

Ainda sobre JSF: existe alguma outra IDE para desenvolvimento visual, usando PrimeFaces, RichFaces, IceFaces ou algum outro *Faces? Eu lembro que o NetBeans tinha um editor visual desses, para pelo visto ele foi retirado (pelo menos não encontrei). Estou pegando meio pesado nessa coisa de desenvolvimento visual, porque, com a equipe já tendo que aprender uma linguagem nova, com Orientação a Objetos e com as diferenças da estrutura web em relação ao client-server, se eu forçar a equipe a desenvolver usango tags logo de cara, corro o risco de as pessoas ficarem com (muito) medo e as coisas não correrem como deveriam.

Grato.

Amigo sinceramente já trabalhei com uma equipe assim onde tentei fazer a migração de Delphi para Java, só que não deu muito certo não, pois o maior erro é exatamente esse tentar diminuir a curva de aprendizado, fazendo com que ninguem soubesse a linguagem e fizesse só porcaria.

No meu caso a solução foi contratar uma equipe menor com o conhecimento já em Java.

Até porque a maioria dos programadores Delphi só conhece Drag and Drop e não tem o menor conhecimento em OO

Trabalhei e trabalho com o Delphi desde sua primeira versão, ultimamente tenho dividido meu tempo entre novas aplicações utilizando Java e mantendo outras legadas em Delphi, particularmente não tive muitos traumas em migrar entre as linguagens, isso porque sempre fui um entusiasta pela OOP e ja praticava seus conseitos com o Delphi (sério, o delphi é orientado a objeto).
Existem vários conseitos novos em uma aplicação web com java que programadores delphi terão que entender, ex:

protocolo HTTP não mantem estado;
A mudanção de paradigma, procedural para OOP;
Separar em camadas a aplicação (na maioria das equipes, a regra do negócio esta misturado com as regras do form);
etc;

Também ja trabalhei com alguns times que precisaram mudar, e como conheço as duas linguagens sempre fazia uma comparação porque em Delphi era desta forma e em Java deve ser dessa forma, e tentar fazer com que eles esqueçam os malditos ClientDataSet´s da vida, rsrsrs.

Para tentar minimizar a curva de aprendizado, normalmente eu elaborava as classes e seus relacionamento e passava para a equipe trabalhar nos metodos das mesmas, tentando esconder ao máximo as complexidades quando não eram necessárias, por exemplo trabalhamos primeiramente no desenvolvimento das regras de negócios (essa parte o pessoal de delphi ja conhecia) e só então passando para a parte da view e controlller.

Uma coisa que me ajudou bastante foi utilizar desde o começo testes unitários, auxiliou bastante nas validações das novas rotinas.

De qualquer forma não tem como evitar a queda de produtividade e o tempo necessário para a adaptação e a pessoa encarregada por fazer essa transição vai ficar bem sobrecarregada no começo.

Considere esse tb: http://www.playframework.org/

Fabricio,tenho ouvido falar bem desse Play Framework,vc já está usando em produção?

Fabricio,tenho ouvido falar bem desse Play Framework,vc já está usando em produção?

[/quote]

Sim, em duas pequenas aplicações. Estão se portando muito bem.

Pensando no seu comentário a respeito da “curva de aprendizado” (que será inevitável, como sabe), a princípio penso que o GWT seria indicado. Estou utilizando o plugin visual do Eclipse (WindowBuilder) para construir as telas e estou satisfeito.

Na minha humilde opinião, o GWT envolveria uma curva de aprendizado maior para desenvolvedores Java acostumados aos frameworks “comuns”, pois de fato o GWT é bem diferente destes (Struts, JSF, etc). Mas me parece que a sua equipe não teria esse “problema”, e sim apenas as dificuldades naturais de aprender uma tecnologia nova. Creio que o GWT é algo indicado para voce, sim. Sem falar que o visual gerado pelos Widgets do GWT é mais parecido com uma app desktop.

Talvez o JSF tambem se enquadre no seu cenário, mas trabalho com ele usando o Eclipse e particularmente nao gosto do editor visual. Dizem que o do Jboss Tools até é legal… mas nunca nem o abri pra ver.

A proposito, trampei com o Delphi com as versoes 5 e 6…faz tempo :lol: