sexta-feira, 23 de dezembro de 2011

Tagged under: , , , , , , ,

Refatorando a jvm com o Cleanup day




O Cleanup day é um esforço muito legal da comunidade mundial do java fez para acabar com os avisos na compilação do openjdk, foi iniciado no dia 1 de dezembro de 2011 e tende a acabar no final do ano ou seja, ano novo com java novo e limpinho :)
Existem vários avisos durante a compilação no entanto a maioria deles estão escondidos em arquivos de log. Uma boa dica é adicionar na compilação o javac -Xlint ClasseJava.java para poder ver, em alguns casos e a depender do número de código poderá existir cerca de 10 mil avisos emitidos pelo javac durante a construção.




O javac historicamente não emitia muito avisos. Um certo número de advertências foram por causa da especificação da linguagem Java, mas mesmo eram poucos. No JDK 5, o javac foi modificado para fornecer avisos adicionais.
Além disso, a linguagem de programação Java evoluiu, tornando obsoleto alguma parte do código. Isto ocorreu, por exemplo, quando lançou o JDK 5, com a adição dos generics os código que não tinha sido atualizado ao usar os generics contém diversos "raw type" e "unchecked" como mensagens de aviso durante a compilação. Ainda há um monte de código antigo no JDK (aprendi nesse processo um pouco de história da jvm e o tal do CORBA). De fato, estas duas mensagens de alerta são as principais mensagens de aviso que ocorrem em compilações do JDK.
A maioria desse alertas são, ruído ou sujeira e não representam problemas, no entanto, nos livrando de toda essa sujeira fica mais fácil de ver bugs.
Este é um esforço colaborativo entre os membros da comunidade OpenJDK  para limpar os avisos. Para este primeiro evento, se está focando em avisos de javac emitidos durante a construção do repositório jdk. A ideia é derrubar o maior número possível.

Com isso mostra que o java está em constante movimento além de utilizar técnicas atuais como a refatoração decódigo. Outra coisa muito legal é que o código do JDK 7 tem sonar. Esse certamente é uma das várias outras melhorias que haverá dentro da jvm e que faz o java mover para a frente.