Trabalho na JVM há anos e, muito raramente, tive uma falha na JVM ... isso ocorre há aproximadamente 6 meses.
Desde então, experimentei aproximadamente 5 falhas na JVM resultantes de 2 defeitos na JVM. A solução da Oracle sempre foi a mesma ... atualização.
Cada atualização é sempre de e para uma versão pontual ... ou seja, a última sugestão da Oracle (após confirmar que eles corrigiram o bug) era atualizar de 1.6u20 para 1.6u26.
Quão preocupado eu devo estar atualizando versões secundárias da JVM?
Esse é um grande evento que exige uma quantidade enorme de testes de regressão ou são atualizações seguras que devem ser adotadas?
Respostas:
Não deve ser um grande evento atualizar uma versão secundária e nunca tive problemas.
Dito isto, os infames problemas do Java 7 são um pouco assustadores, e mesmo sendo uma atualização importante da versão, esses problemas específicos apareceram de fato no Java 6 ~ u20 e talvez tenham sido corrigidos no u25. Eles surgiram apenas porque o Java 7 tem alguns sinalizadores de otimização ativados por padrão que o Java 6 não possui. Se você tivesse usado esses sinalizadores no Java 6, poderia ter experimentado não apenas falhas, mas execução incorreta de loops , ou seja, erros de cálculo, devido a uma pequena atualização de 6u19 para 6u20 (aproximadamente).
O fato é que ninguém garante que uma versão atualizada funcione. A JVM, seu ambiente (computador, sistema operacional) e seu aplicativo, todos interagem mutuamente e, para ter certeza razoável de que toda a enorme pilha de coisas funciona muito bem, você realmente deve fazer uma enorme quantidade de testes de regressão.
Minha abordagem às atualizações da JVM é semelhante a todas as atualizações: a menos que eu tenha uma necessidade específica de atualização e a menos que seja uma atualização de segurança crítica, esperarei um pouco e lerei as experiências de outras pessoas na Internet. Se ninguém reclamar dentro de um mês ou mais, provavelmente será seguro atualizar.
fonte
Na minha experiência com aplicativos Java corporativos, os benefícios de adotar as pequenas atualizações da JVM superam os riscos associados.
Um benefício é que as pequenas atualizações quase sempre contêm correções de bugs . A aplicação dessas atualizações pode realmente melhorar a estabilidade de seus ambientes de produção. Eu experimentei falhas na JVM, onde a análise da causa raiz revela que o defeito já foi identificado e corrigido em uma atualização menor da JVM.
Outro benefício é que pequenas atualizações geralmente contêm melhorias de desempenho . No entanto, como observado por @Joonas, é arriscado usar sinalizadores de desempenho não comprovados ou experimentais em qualquer atualização (principal ou secundária) sem testes significativos.
Como em qualquer mudança, é mais importante que você proceda de maneira responsável . Aqui estão algumas práticas que sigo ao planejar uma atualização da JVM:
fonte
Em torno do Oracle Java 1.6 ou 20, foi introduzida uma verificação de segurança alertando para "código misto", o que influenciou nosso aplicativo para alguns usuários, causando o travamento. Esta foi uma pequena atualização e teve fortes influências na produção.
Esteja sempre preparado para uma reversão.
fonte