A primeira pergunta que eu faria nesse caso para o vinians seria: por que mudar?
Se você tem um sistema em Delphi, que está em produção, atende as necessidades do cliente, por que precisa mudar?
Ok, sistemas específicos para Windows, com uma ferramenta que já não tem o mesmo suporte e não acompanha a evolução das tecnologias tanto quanto as principais “do mercado”. Nem sei se isso é fato e se o delphi não acompanha a evolução das tecnologias, mas vamos supor que seja e que isso seja um bom pretexto para a mudança.
Respondida a pergunta do porque mudar, você entra no como:
Você já parou pra pensar no que já tem e no que realmente precisa ser feito? Você reclama que as respostas são subjetivas e vou tentar ser o mais objetivo possível, mas como já foi dito, a sua pergunta é subjetiva. Repare no título: “Criação de um sistema realmente grande”. O que é “realmente grande”? com certeza o fato de uma tela ter 10 tabelas ou views não define o sistema como “realmente grande”.
Você deseja o caminho das pedras, mas infelizmente não há o caminho das pedras. O Herbert Coelho, por exemplo, cujas respostas você não gostou é um cara que gosta e usa, pelo visto, o JSF, além de contribuir com a comunidade escrevendo livros sobre o assunto. Se você perguntar pra ele qual o mais produtivo framework mvc pra sistemas web em java, ele vai lhe dizer que é o JSF. Eu tenho todos os motivos para acreditar que ele realmente consegue ser produtivo com essa ferramenta.
Se você fizer a mesma pergunta pra mim eu vou te dizer que detesto o JSF, não gosto do conceito de componentes dele, não gosto da forma intrusiva do comportamento dele, das maneiras as quais ele me obriga a trabalhar. Vou te dizer que prefiro o VRaptor, que se enquadra melhor a minha maneira de programar.
Essas seriam duas respostas objetivas, mas contrastantes. O mesmo você pode considerar para qualquer framework que lhe seja indicado. Há sempre prós e contras e só os programadores poderão escolher os quais são melhores pra eles.
Antes de mais nada você deve responder a você mesmo e a seus clientes a pergunta, “por que devo migrar?” Dependendo dessa resposta você pode optar por muitos outros caminhos. Eu imagino que a sua necessidade deve estar em algum ponto nesses dois extremos:
- É um desejo da empresa, para não ficar com tecnologia defasada, atualizar a versão do sistema. Mas não é algo urgente e pode ser feito com calma.
- É uma necessidade real e urgente, pois os cliente já estão cobrando e precisamos dessa versão o mais rápido possível.
Dependendo do ponto em que a sua necessidade esteja entre essas duas possibilidades, você precisa tomar medidas distintas. Se a resposta for mais próxima da alternativa 1, você pode muito bem usar a própria equipe que existe e hoje e começar a desenvolver hoje mesmo, sem frescura, sem receita nem nada. Basta reservar um tempo pra isso e testar. Se a empresa já tem programadores experientes, mesmo que em outras linguagens, isso não será problema. Eles podem por eles mesmo analisar as ferramentas e ver as quais se adaptam melhor, e em situações reais.
Já se a sua necessidade estiver mais próxima da alternativa 2 você precisa contratar programadores já experientes com aplicações Java para fazer esse trabalho. Se não há tempo para que a sua equipe se adapte a uma nova tecnologia você tem que contratar quem já tenha domínio sobre ela.
Mas seja lá qual for o motivo uma coisa é certa. Considerando que Delphi já usava bancos de dados relacionais e provavelmente a nova aplicação também vai usar, você não precisa desligar a chave de uma e ligar a de outra. Você pode migrar partes do sistema, processos ou telas e já por em produção, fazendo com que os dois existam em conjunto. Isso é bem mais fácil e bem menos arriscado. Além de que vai te dar todas as respostas objetivas que você precisa.