<aside> <img src="notion://custom_emoji/6a9f75af-b090-4ac1-9370-a797e429cd85/12c39bc1-c32f-80fa-b777-007a474b0a18" alt="notion://custom_emoji/6a9f75af-b090-4ac1-9370-a797e429cd85/12c39bc1-c32f-80fa-b777-007a474b0a18" width="40px" />

Descrição

Java é uma linguagem de programação de propósito geral, orientada a objetos, que se destaca pela sua portabilidade e robustez. Criada na década de 1990, Java é projetada para ser executada em qualquer dispositivo que tenha a Java Virtual Machine (JVM), permitindo que o código escrito uma vez seja executado em qualquer lugar, seguindo o princípio "write once, run anywhere". Com uma vasta biblioteca padrão e uma rica ecossistema de frameworks, Java é amplamente utilizado em desenvolvimento web, aplicativos móveis (especialmente Android), sistemas corporativos e software de grande escala. Sua forte tipagem, gerenciamento automático de memória e segurança tornam Java uma escolha confiável para aplicações críticas, consolidando sua popularidade no mercado de tecnologia.

</aside>

Bytecode

É o código de máquina que roda em qualquer máquina através da Máquina Virtual Java (JVM)

O texto contendo código escrito em linguagem Java é traduzido em bytecode através do processo de compilação e armazenado em um arquivo *.class chamado de Classe Java

Máquina Virtual Java (JVM)

A forma de execução de uma aplicação depende

image.png

Class Loader e CLASSPATH

Primeira tarefa executada pela JVM: carregamento das classes necessárias para rodar a aplicação. O Class Loader.

  1. Carrega primeiro as classes nativas do JRE (APIs).
  2. Depois carrega extensões do JRE: JARs em $JAVA_HOME/jre/lib/ext e classes em $JAVA_HOME/jre/lib/classes.
  3. Carrega classes do sistema local (a ordem dos caminhos no CLASSPATH define a precedência).
  4. Por último, carrega possíveis classes remotas.

CLASSPATH: variável de ambiente local que contém todos os caminhos locais onde o Class Loader pode localizar classes

A CLASSPATH é lida depois, logo, suas classes nunca substituem as classes do JRE (não é possível tirar classes JRE do CLASSPATH)