sexta-feira, 6 de maio de 2011

JDK 7 as novidades na linguagem java (JSR 334)

Apenas para fazer um gancho.

Neste link (http://www.infoq.com/br/articles/java7coin), Emerson Marcedo detalha as novidades que estão por vir na linguagem java, onde estão sendo ainda debatidas na JSR 334 da JCP pelo sub projeto do OpenJDK chamado Coin.
Apesar de não concordar com todas, tem algumas que serão bem aproveitadas.

Confira!

quinta-feira, 5 de maio de 2011

Atributos e Métodos estáticos em Java

Uma pessoa que está iniciando os estudos na linguagem e plataforma Java possui muita dificuldade em entender os atributos e métodos estáticos.

É muito comum ouvir a explicação que ao colocar o operador static no atributo/método este irá pertencer a classe e não ao objeto. Mas, como assim?

Para a melhor compreensão devemos entender como funciona o gerenciamento de memória da JVM (em outra post irei detalhar melhor). Basicamente a JVM dividi a memória em dois "setores": memória HEAP e PERM, onde o primeiro recebe as instâncias dos objetos e a segunda carrega as classes uma unica vez que serão utilizadas na JVM.
Na verdade, pode existir mais de uma cópia da mesma classe na JVM, sendo que cada uma deve estar em um classloader separado, mas vamos deixar esse assunto para uma outra hora.

Na instalação do JDK é disponibilizado o aplicativo jconsole que lhe permite ver como funciona o gerenciamento de memória.

Pois bem,  quando você marcar um método/atributo com o static este recurso só estará disponível na classe que se encontra na memória PERM, assim quando é instanciado um objeto a partir desta classe tudo que é estático não vai para HEAP e é por isso que falamos que pertence a classe!
Como cada objeto sabe quem é a sua classe, ela consegue acessar todos os recursos estáticos, porém o inverso não possível, pois isso resultaria em grandes problemas. Você consegue entender?!

Bem, apesar de pequeno este post, espero que seja suficiente para entender melhor o operador static. Até breve!