Estávamos migrando do Java 6 para o Java 7 . O projeto está atrasado e corre o risco de ser descartado; nesse caso, ele continuará usando o Java 6.
Quais são as melhorias específicas no Java 7 com as quais poderíamos voltar ao nosso gerente e convencê-lo de que é importante usar o JDK 7? Procurando correções de erros que eu poderia destacar no Oracle Java 7 (com relação ao Java 6). Correções em segurança, desempenho, Java 2D / impressão etc. serão mais vendáveis no meu caso. As correções do compilador, por exemplo, não serão muito úteis.
[Estou passando por muitos sites, como o guia de adoção da Oracle , banco de dados de bugs, perguntas sobre o estouro de pilha].
Atualização: Obrigado pelas respostas. Remarcamos a atualização para o próximo lançamento. O mais próximo que chegamos era de segurança. Aceitando a resposta mais votada.
Respostas:
O Java 6 atingiu a EOL em fevereiro deste ano e não receberá mais atualizações públicas (incluindo segurança), a menos que você compre um suporte corporativo muito caro.
Essa deve ser toda a razão necessária.
Além disso, evidências esmagadoras sugerem que a compatibilidade com versões anteriores dos tempos de execução do Java é excelente. As chances são de que você apenas precise substituir as instalações do Java 6 pelo Java 7 e todos os aplicativos continuarão funcionando sem problemas. Obviamente, isso não é garantido e testes extensivos são recomendados para confirmar que realmente não haverá problemas.
fonte
Em geral, há várias alterações bastante amplas para facilitar as coisas do programador. Seu gerente pode não se importar muito com essas coisas, mas faz com que os programadores passem menos tempo pensando no código padrão e, assim, tenham mais tempo para pensar no objetivo real do que estão implementando, aumentando a eficiência, diminuindo bugs etc. o que pode ser um argumento muito poderoso. O Oracle tem uma lista bastante extensa de alterações , mas é bastante longa, então vou resumir o máximo possível.
Os recursos de idioma incluem:
Map<String, String> myMap = new HashMap<String, String>();
pode ser reduzido paraMap<String, String> myMap = new HashMap<>()
. O compilador pode inferir os tipos genéricos necessários do lado direito da esquerda, para que seu código fique um pouco mais curto e mais rápido de ler..equals()
método em vez de==
.Throwable.getSuppressed
.int n = 1000000000
podem ser transformadas em muito mais legíveisint n = 1_000_000_000
, o que é muito mais fácil de analisar como sendo um bilhão e mais difícil de digitar incorretamente, sem perceber. Além disso, literais binários são permitidos no formulário0b10110101
, tornando o código que funciona com campos de bits um pouco mais agradável de ler.Cada uma dessas mudanças é algo com o qual seu gerente pode não se importar diretamente, mas facilita um pouco a escrita do código correto sem muito esforço e pensamento, liberando sua mente para se concentrar um pouco mais na lógica real que você está tentando para implementar e também facilitam um pouco a leitura do código posteriormente, tornando a depuração um pouco mais rápida.
No lado da API, várias atualizações de API também ocorreram:
fonte
String.equals
método" (do documento ao qual você vinculou). Na realidade, o compilador é livre para otimizar para queString.equals
não seja usado ... desde que o efeito líquido seja o mesmo. (E, eu esperaria que ele usariaString.hashcode
acima de um certo número de casos de switch.)O try-with-resources é um recurso que vale a pena atualizar para o Java 7, por si só. Vazamentos de recursos / vazamentos de memória são um grande risco no desenvolvimento Java e o TWR reduz esse risco significativamente.
Acrescentarei os novos recursos de abstração de arquivo NIO.2 e assíncrono, também vale a pena mudar se o seu aplicativo tiver recursos de E / S de arquivo / rede.
fonte
Pode haver uma razão para você não mudar para o Java 7: se você precisar usar a VM da Oracle e seu software for executado em hardware incorporado ou você a distribuirá com hardware incorporado: a Oracle alterou a licença do JRE para que não seja licenciada se acima condições são atendidas; você precisará comprar uma licença incorporada do Java SE. Consulte O que significa "sistema de uso geral" para Java SE Embedded?
fonte