Qual o motivo real de existirem aplicações legadas no universo java ?

10 respostas
Z

Trabalho com Java já a um bom tempo, considero que já tenho um conhecimento razoável, sobre a linguagem e a plataforma, e a algum tempo estou passando a estudar a arquitetura da plataforma.

Tenho uma dúvida que pode ser até básica, porém não encontrei ainda uma resposta, apenas tenho algumas teorias.

Sobre aplicações legadas, conheço e trabalhei com diversas, utilizando Java 4 ou até mais antigo, pois não é possível o upgrade de versão, pelas bibliografias que acompanho, muitas dão informações que o código java nunca quebrou.

Se o código nunca quebrou, porque a versão não pode ser atualizada ? Penso que isso acontece pois o desenvolvedor fez amarrações no código que são independentes da linguagem e essa implementação quebrou e não foi possível o upgrade.
Como se executassem código da própria JVM, que é possível que não exista em versões futuras da JVM, acredito que é isso que quebre a compatibilidade dos servidores de aplicação, pois cada versão de JVM exige uma versão nova de servidor.

Eu estaria correto ? é apenas isso ? ou teria algo a mais a ser considerado ?

Obrigado pela atenção.

10 Respostas

T

O motivo é dinheiro :grin:

Se a atualização implica custo (ou seja, reescrita, testes ou adaptações), alguém terá de pagar. Se não custa nada, já teria sido feita (ou seria “transparente”).

Pode estender essa motivação para qualquer aplicação em outras linguagens.

Se o que você quer saber é pelo lado técnico, ou seja, por que o desenvolvedor original usou algo que não seria suportado no futuro, a resposta é que, por mais que nos preparemos, não há como prever tudo, nem ser vidente e descobrir que APIs serão descontinuadas ou alteradas.

Abraço.

J

Como @TerraSkilll falou, a empresa teria que investir em TI pra reescrever o que já considera atender as funcionalidades pra atividade fim, sem falar em ter que migrar infraestrutura de servidores. Tendo investimento é válido, fora isso ninguém iria trabalhar de graça.

P

Quando vc coloca uma aplicação em produção, ela se torna legada. Ponto.

Agora vc não vai la é simplesmente inicia a aplicação: existe toda uma homologação da mesma. E isso é custo.

Digamos que vc pode atualizar a versão do java. Beleza fera mas… Vc deve? Aplicação não é celular pra atualizar todo o ano. Mesmo que a JVM seja absurdamente backward compatible vc tem que garantir que vai funcionar.

Ai o bixo pega pq o custo pode ser proibitivo. Sem falar que se o software funciona, qual o motivo pra mudar?

Uma coisa é falar em segurança (ex: tal versão tem um bug conhecido q pode causar este dano). Outra é fazer uso de novas features. Se o que se passa é apenas manutenção eventual, dificilmente isso justifica atualizar algo.

Agora ok, uma versão velha já não é suportada nem tem atualização de segurança. Isso é relevante? Nem sempre. Ou talvez numa lista de prioridades isso nem é top 10 problemas

Produção significa também estabilidade. Coisas são estáveis quando mudam pouco. Talvez mudar pra Java 8 melhore algo, mas provavelmente isso não vai acontecer sem um bom motivo. E se o negocio da empresa não é Tecnologia pode ter certeza que a galera vai usar Windows XP se deixarem.

P

Software tem essa incrível capacidade de continuar funcionando se não ficar mexendo.

Z

Acredito sim que possa haver dinheiro envolvido, mas o fato o que eu quero saber é realmente pelo lado técnico.

Se o Código java nunca quebrou, ou seja, se eu fizer o código Java na primeira versão, e transportar esse mesmo código para versão mais atual ele irá executar !
Minha dúvida é o que essas aplicações tem que não permite a atualização de JVM, ou seja, o por que dessa aplicação não funcionar em JVM atual se o código java nunca quebrou.
O que pode ocasionar esse tipo de prisão do código a uma versão especifica, o falo do Flamework atualizar não me é muito relevante, pois ele também teria que funcionar na versão mais nova da JVM, por mas que não seja compatível com outras versões do mesmo framework.

I

Então quer dizer que não existe nenhuma aplicação que não seja legada? Por que se classifica algo como legado se tudo é legado?

Não acho que seja bem por aí não!

P

eu digo q é tudo legado. mas vc tem diferentes… temperaturas

por exemplo, durante o desenvolvimento decide-se trocar o banco de dados de Oracle pra MySQL ( ou vice-versa ). Bem ou mal tem tempo de fazer os ajustes, testes, etc. agora imagina que o sistema ja roda em produção, esta operação não é nada trivial pois vc precisa decidir, por exemplo, o que fazer com os dados antigos ( vão migrar ) e qual a estrategia para esta alteração.

perceba que é um tipo de sistema legado, mesmo q seja novo vc não consegue atualizar partes dele sem repensar o impacto disso.

um sistema cujo desenvolvimento parou tem uma semana, se comparado com algo rodando 5 anos, é diferente, mas os problemas são essencialmente os mesmos.

perceba que existem tecnicas para mitigar alguns desses problemas. continuous deployment é uma forma porem vc precisa pensar o sistema desde o começo para ser assim.

A pergunta original sobre o motivo de existirem aplicações legadas no universo java ela tem uns problemas conceituais, dependendo do ponto de vista. isso pq existe legado em PHP, C#, Cobol…

P

“Então quer dizer que não existe nenhuma aplicação que não seja legada?”

No universo Java corporativo, a maioria é legado.

“Por que se classifica algo como legado se tudo é legado?”

Por que o universo Java corporativo não é tudo.

I

Blz, depois de ter discorrido um pouco mais eu entendi a sua colocação. (rsrs)

Na minha humilde opinião, interpreto sistemas legados como sendo sistemas que são extremamente necessários para o desenvolvimento de atividades a que o mesmo se propõe a realizar, podendo ou não ser antigos e que o desenvolvedor não dê mais suporte (por qualquer motivo que seja), além de “alguns” dos pontos citados por vc agora.

Mas como esse conceito é bem abstrato e se formos começar a discutir sobre isso talvez enveredemos por um caminho diferente da dúvida do tópico postado, é bom deixarmos em standby o assunto até uma outra oportunidade.

I

"No universo Java corporativo, a maioria é legado."
Então confirmou que nem tudo é.

"Por que o universo Java corporativo não é tudo."
O questionamento foi sobre Java, não sobre tudo.

Criado 20 de outubro de 2016
Ultima resposta 22 de out. de 2016
Respostas 10
Participantes 6