DEV Community

Marlon Jerold
Marlon Jerold

Posted on

ClassLoader

Espero que esteja bem, nesse pequeno artigo, irei mostrar como o java brinca por baixo dos panos.

O que acontece quando ocorre o run de nossa aplicação? Como é realizado o processamento do nosso querido código?

Em termos técnicos o ClassLoader é quem buscar as classes carregando os bytecodes para a mémoria, agora pensa comigo, eu tenho um sistema com muitas classes, o que aconteceria se eu apenas rodasse a aplicação e não tivesse esse gerenciamento de busca? Buscando todos os bytecodes da classe de forma integral e salvando na memória? É isso, coisa boa não seria.

O ClassLoader vem para ajudar isso e fazer as buscas das classes serem possível em tempo de execução, em outras palavras, dinamicamente.

Indo mais a fundo, podemos perceber que as classes devem ter nomes diferentes né? E se eu falar que não?

É isso mesmo, quando estamos utilizando Java, podemos criar classes com nomes diferentes por conta do ClassLoader e a forma como ele trabalha, mas calma lá, estarei te explicando melhor.

Quando criamos uma classe, adicionamos ela em um lugar, como se fosse uma caixa que fica sendo o seu ambiente, ou contexto, sua assinatura, seja qual for o nome que você deseja associar aos namespaces.

Quando estamos rodando uma aplicação e ela é executada dinamicamente, vemos que existem padrões que são interessantes a serem observados. Cada namespace tem o seu próprio ClassLoader, vemos que entramos em um caminho onde podemos criar Classes com mesmo nome, porém, nasmespace diferente, se tenho duas classes com o mesmo nome, porém em namespace diferente, elas se tornam coisas distintas.

Casa é Casa, porém posso trabalhar com casa em um contexto diferente de ambas, o que é interessante quando estamos falando de sistemas modulares e extensos.

Vemos que a forma como olhamos a programação começa a se diferenciar, vemos que os contextos começam a aparecer e amigos, isso é incrível. Pensa agora que você tem classes enormes e enormes, e para cada vez que ela é chamada, é alocada um valor do bytecode na memória, vemos que podemos melhorar bastante coisa, muita mesmo.

A forma como escrevemos código, quando entendemos o qual poderoso é a nossa maquina virtual e como ela trabalha, traz bastante benefícios para o desenvolvimento, de uma aplicação enorme.

Se eu aloco algo que eu não uso é lixo. Em um futuro post explicarei como funciona o Lixeiro do Java.

Top comments (2)

Collapse
 
matheusvict profile image
Matheus Victor

Artigo sensacional, muito interessante não sabia sobe o class loader

Collapse
 
marlonjerold profile image
Marlon Jerold

Obrigado mano!