quinta-feira, 13 de agosto de 2009

Porque migrar do JDK 5 para o 6?

Eu acredito que este post possa ser útil para equipes Java que atuam no desenvolvimento ou no suporte de aplicações para esta plataforma e que desejam justificar uma migração de versão do JDK em ambientes mais conservadores ou que exijam um grande esforço para esta tarefa. Muitas empresas que trabalham com tecnologia Java talvez ainda não tenham realizado este processo e meu objetivo aqui é apenas dar alguns motivos e referenciar alguns documentos que talvez ajudem a justificar uma troca do J2SE 1.5 para o Java SE 6.

O documento JDK 6 Adoption Guide (da Sun) é um guia para desenvolvedores Java que criaram aplicações que estão sendo executadas no J2SE 1.5 e estão considerando uma atualização para a plataforma Java SE 6. Ele apresenta as mudanças relativas a API, a código construído no J2SE 1.5 que não compila no Java SE 6, a dependências em relação a mecanismos de implementação, a APIs que estão caindo em desuso, a palavras chaves e novas funcionalidades. Em seguida, cobre mudanças na forma em que a plataforma Java SE é mapeada para o ambiente de implantação, incluindo instalação, configuração e a disponibilidade de serviços. Por último, fala sobre questões interessantes e avançadas para desenvolvedores que irão suportar o desenvolvimento de aplicações no JDK 6 construindo ferramentas que irão trabalhar em conjunto com ele.

O Java SE 6 Performance White Paper por sua vez, é um guia para os avanços na performance e na escalabilidade das aplicações de aplicações no Java SE 6 que demonstra vários benchmarks e o impacto destes avanços. Ele apresenta os diversos avanços em tempo de execução obtidos através de otimizações de performance nas primitivas de sincronização, na compilação, no coletor de lixo, no mecanismo de ergonomia e no tempo de inicialização. Também fala das novas plataformas suportadas e por fim dá dicas sobre como se aprofundar mais nos aspectos relativos a performance, melhores práticas, documentação, ferramentas, FAQs e exemplos de códigos.

Além dos avanços relativos a performance, várias novas ferramentas foram incorporadas ao Java SE 6 visando o gerenciamento de uma JVM, a monitoração da performance e o diagnóstico de problemas. Tais ferramentas, suas características e aprimoramentos no Java SE 6 são resumidas neste post de Mandy Chung. Dentre as ferramentas citadas neste documento, estão o jconsole, o jhat, o jmap, o jstack e o jinfo. Com o JDK 6, não é mais necessária a passagem de nenhuma opção na inicialização de uma aplicação para que estas ferramentas possam atuar na JVM desta. Além disto, a Atach API possibilita a criação de suas próprias ferramentas. O JDK 6 também traz significantes avanços na habilidade de se diagnosticar problemas de memória. A VM HotSpot provê a a habilidade de se requisitar um heap dump sob demanda a partir da ferramenta jmap, assim como também de maneira programatica. A ferramenta de análise de memória (jmap) adicionada ao JDK 6 possibilita a navegação sob os dados obtidos no heap dump. O OutOfMemoryError é um erro conhecido de programadores Java que, a partir do JDK 6, passa a obter um melhor suporte em seu diagnóstico. Este erro agora inclui um stack trace de onde ocorreu a falha. Outro avanço é a opção -XX:+HeapDumpOnOutOfMemoryError que diz a VM HotSpot para gerar um heap dump quando uma alocação de memória no heap ou na geração permanente não puder ser ocorrer. Além disto, a opção -XX:OnOutOfMemoryError=<comando> foi adicionada para que você possa especificar um comando a ser executado quando um OutOfMemoryError ocorrer. Para quem está executando aplicações Java num Solaris, também é possível agora, utilizar o DTrace para obter mais informações a respeito do comportamento de uma JVM 6 neste S.O. Alguns outros detalhes sobre as novas características de monitoração e de gerenciamento incluídas no Java SE 6 podem ser encontrados no documento Java SE 6 Monitoring and Management Enhancements. Dois guias para um aprofundamento na resolução de problemas no Java SE 6 são o Troubleshooting Guide for Java SE 6 with HotSpot VM e o Troubleshooting Guide for Java SE 6 Desktop Technologies citados na página Troubleshooting Java SE. Eles são úteis para que você possa obter detalhes sobre os procedimentos de uso das novas ferramentas incluídas no JDK 6, tanto para a solução de problemas na VM HotSpot quanto na ocorrência de problemas em aplicações gráficas para desktop.

O VisualVM (<jdk>/bin/jvisualvm), também é uma das novas ferramentas disponibilizadas a partir do Java SE 6. Ele é uma ferramenta visual que integra várias ferramentas de linha de comando do JDK e características de profile. Projetado para o uso tanto em tempo de desenvolvimento quando de produção, ele amplia a capacidade de monitoração e de análise de performance para a plataforma Java SE. Este vídeo apresenta algumas de suas características.

Em resumo, o JDK 6 é realmente superior ao 5 no que diz respeito aos aspectos performance, gerenciamento, monitoração e diagnóstico de problemas. Testes atuais também já começaram a indicar que o JDK 7 (ainda não lançado) chega a ser até duas vezes superior ao JDK 6, quando se trata do processamento aritmético e de arrays.

2 comentários:

  1. Ótimo post PJ ! Você só esqueceu de incluir um outro motivo forte pra migrar pra JDK 6: o de que a Sun irá encerrar o suporte à JDK 5 em 30 de outubro, ou seja, a partir de novembro qualquer falha de segurança ou bug na JDK 5 não terá correção pela Sun.

    ResponderExcluir
  2. Guilherme, obrigado pela comentário e pela valiosa informação que agregou!

    ResponderExcluir