Como eu porta pode um legado Java website / J2EE para uma linguagem de script moderna (PHP, Python / Django, etc)?

votos
4

Eu quero passar um legado aplicação Java Web (J2EE) para uma linguagem de script - qualquer linguagem de script - a fim de melhorar a eficiência de programação.

Qual é a maneira mais fácil de fazer isso? Existem algumas ferramentas automatizadas que podem converter a maior parte da lógica de negócios?

Publicado 14/10/2008 em 01:23
fonte usuário
Em outras línguas...                            


4 respostas

votos
11

Aqui está o que você tem que fazer.

Primeiro, certifique-se que você pode andar antes de correr. Construir algo simples, possivelmente tangencialmente relacionadas ao seu projeto principal.

NÃO construir um pedaço do projeto final e espero que ele irá "evoluir" para o projeto final. Isso nunca funciona bem. Por quê? Você vai cometer erros idiotas. Mas você não pode excluir ou refazê-los, porque você é suposto a evoluir esse erro no projeto final.

Em seguida, pegue aa quadro. O que? Segundo? Sim. Segundo. Até que você realmente fazer algo com algumas linguagens de script e quadros, você não tem nenhum conceito útil real do que você está fazendo. Uma vez que você construiu alguma coisa, agora você tem uma opinião informada.

"Espere", você diz. "Para fazer o passo 1 eu tivesse que escolher um quadro." Verdade. Etapa 1, no entanto, contém decisões que você está autorizado a revogar. Escolher o quadro errado para a etapa 1 não tem efeitos negativos a longo prazo. Foi apenas aprendendo.

Em terceiro lugar, com o seu quadro estratégico, e alguma experiência, quebrar seu site existente em pedaços que você pode construir com o seu novo quadro. Priorizar as peças de mais importante para o menos importante.

NÃO planejar toda a conversão como um projeto maciço. Isso nunca funciona. Ele faz um grande trabalho mais complexo do que o necessário.

Nós vamos usar o Django como o exemplo quadro. Você vai ter modelos, vista funções, definições de modelo, mapeamento de URL e outros detalhes.

Para cada compilação, faça o seguinte:

  1. Converter seu modelo existente para um modelo de Django. Isso nunca vai caber seu SQL legado. Você vai ter que repensar o seu modelo, corrigir erros antigos, bugs antigos corretas que você sempre quis para corrigir.

  2. Escrever testes de unidade.

  3. Construir um utilitário de conversão para exportar dados de idade e importação para o novo modelo.

  4. Criar páginas de administração do Django tocar e sentir os novos dados.

  5. Escolha páginas representativas e refazê-los nos modelos apropriados. Você pode fazer uso de alguns legados páginas JSP. No entanto, não perca muito tempo com isso. Use o HTML para criar modelos de Django.

  6. Plano de suas funções de URL e vista. Às vezes, essas funções view irá alavancar classes de ação legados. não "convertem". Reescrever a partir do zero. Use a sua nova linguagem e estrutura.

A única coisa que vale a pena preservar é os dados e o conceito operacional. Não tente preservar ou converter o código. É enganador. Você pode converter UnitTests de JUnit para Python unittest.


Eu dei este conselho há alguns meses. Eu tive que fazer algum treinamento e revisão durante o processamento. O site revisto está instalado e funcionando. Nenhuma conversão do antigo tecnologia; eles fizeram a reescrita sugerido a partir do zero. Desenvolvedor feliz. Site funciona bem.

Respondeu 14/10/2008 em 02:43
fonte usuário

votos
7

Se você já tem uma grande quantidade de lógica de negócios implementado em Java, então eu vejo duas possibilidades para você.

A primeira é usar uma linguagem de alto nível que é executado dentro do JVM e tem um framework web, como Groovy / Grails ou JRuby e Rails . Isso permite que você alavancar diretamente toda a lógica de negócio que você implementado em Java sem ter que re-arquiteto todo o site. Você deve ser capaz de tirar vantagem de melhorar a produtividade do quadro no que diz respeito ao desenvolvimento web e ainda aproveitar a sua lógica de negócios existente.

Uma abordagem alternativa é transformar a sua camada de lógica de negócios em um conjunto de serviços disponíveis ao longo de um mechanisim RPC padrão - REST, SOAP, XML-RPC ou algum outro XML simples (YAML ou JSON) sobre protocolo HTTP (ver também DWR ) para que o extremidade dianteira pode fazer essas chamadas RPC a sua lógica de negócio.

A primeira abordagem, usando uma linguagem de alto nível sobre a JVM é provavelmente menos re-arquitetura do que o segundo.

Se seu objetivo é uma migração completa fora de Java, então qualquer uma destas abordagens permitir que você a fazê-lo em pequenos passos - você pode achar que esse tipo de híbrido é melhor do que toda venda depreciação - a JVM tem um monte de bibliotecas e integra bem em um monte de outros sistemas.

Respondeu 14/10/2008 em 01:45
fonte usuário

votos
6

Usando uma ferramenta automatizada para "port" do aplicativo web quase certamente irá garantir que o futuro a eficiência de programação será minimizado - não melhorou.

Uma boa linguagem de script pode ajudar a eficiência de programação quando usado por bons programadores que entendem boas práticas de codificação em que a linguagem. ferramentas automatizadas normalmente não são projetados para código de saída que é elegent ou bem escrito, somente o código que funciona.

Você só vai ter uma melhora na eficiência de programação depois que você colocar no esforço para voltar a implementar o aplicativo web - que, devido ao tempo necessário para a reimplementação, pode ou não resultar em uma melhoria global.

Respondeu 14/10/2008 em 01:36
fonte usuário

votos
1

Muitas das recomendações a ser dado aqui estão supondo que você - e só você - está fazendo uma reescrita completa do aplicativo. Isto provavelmente não é o caso, e isso muda a resposta um pouco

Se você já tem J2EE chutando em torno, a resposta correta é Grails. Ele simplesmente é: você provavelmente já tem Hibernate e Spring retroceder ao redor, e você vai querer a capacidade de virar para trás e para frente entre o seu código antigo e seu novo com uma quantidade mínima de dor. Isso é exatamente o forte de Groovy, e é ainda mais suave do que JRuby nesta matéria.

Além disso, se você já tem um aplicativo J2EE chutando por aí, você já tenho desenvolvedores Java retroceder ao redor. Nesse caso, a aprendizagem Groovy é como cair de uma escada - literalmente. Com a exceção de classes internas anônimas, Groovy é um super pura de Java, o que significa que você pode escrever código Java, chamá-lo Groovy, e ser feito com ele. Como você se tornar cada vez mais confortável com os nicities de Groovy, você pode integrá-los em seu código Groovy Java-ish. Antes de muito tempo, você vai estar escrevendo código muito Groovy, e nem sequer realmente ter percebido a transição.

Respondeu 20/10/2008 em 19:05
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more