Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

JVM Explicada: O que é e sua Arquitetura

O que é a JVM?

Java Virtual Machine (JVM) é o motor de execução que alimenta aplicações Java. Ela transforma bytecode Java compilado em instruções nativas de máquina e as executa em qualquer plataforma que suporte a JVM. A JVM é um componente central do Java Runtime Environment (JRE). Diferente de linguagens que compilam diretamente para código de máquina de um sistema operacional específico, o compilador Java produz bytecode agnóstico de plataforma que a JVM interpreta ou compila em tempo de execução.

Como a JVM Funciona

O código-fonte Java é primeiro compilado em bytecode, que a JVM então interpreta ou compila just-in-time (JIT) em código nativo. A JVM também gerencia alocação de memória, agendamento de threads e interação com bibliotecas nativas.

JVM Explicada: O que é e sua Arquitetura

Neste tutorial você aprenderá:

Arquitetura da JVM

O design da JVM é modular, compreendendo vários subsistemas que trabalham juntos para carregar, verificar e executar código Java.

JVM Explicada: O que é e sua Arquitetura
  1. Class Loader – Carrega arquivos de classe e realiza linking (verificação, preparação, resolução) e inicialização.
  2. Method Area – Armazena estruturas de classe, metadados, constant pools e código de métodos.
  3. Heap – Mantém todos os objetos, variáveis de instância e arrays. É compartilhado entre todas as threads.
  4. Java Stack – Cada thread tem sua própria pilha que armazena variáveis locais e resultados parciais. Um novo frame é criado na entrada do método e removido na saída.
  5. Program Counter (PC) Register – Guarda o endereço da próxima instrução a executar para cada thread.
  6. Native Method Stack – Armazena chamadas para código nativo (escrito em C/C++).
  7. Execution Engine – Executa bytecode, seja por interpretação ou via compilador JIT.
  8. Native Method Interface (JNI) – Permite que código Java invoque bibliotecas nativas.
  9. Native Libraries – Coleções de código nativo específico de plataforma usado pelo execution engine.

Processo de Compilação e Execução de Código de Software

Executar um programa tipicamente envolve estes passos:

  1. Editor – Onde você escreve o código-fonte.
  2. Compilador – Traduz código de alto nível para código de máquina nativo ou bytecode.
  3. Linker – Combina arquivos objeto e resolve referências externas.
  4. Loader – Carrega o executável final na memória.
  5. Execução – O sistema operacional e processador rodam o programa.

Compilação e Execução de Código C

Para ilustrar o processo Java, vamos primeiro examinar um programa C simples. Assuma que a função main está em a1.c e chama f1 (em a2.c) e f2 (em a3.c).

JVM Explicada: O que é e sua Arquitetura

O compilador transforma cada arquivo .c em um arquivo objeto contendo código de máquina. O linker então mescla esses arquivos objeto em um único executável .exe. Quando o programa inicia, o loader mapeia meuapp.exe na RAM e o sistema operacional começa a execução.

JVM Explicada: O que é e sua Arquitetura

Compilação e Execução de Código Java na JVM

Java segue um fluxo de trabalho semelhante, mas distinto. Os arquivos fonte a1.java, a2.java e a3.java são compilados em arquivos de bytecode a1.class, a2.class e a3.class. Não ocorre etapa de linking separada; a JVM carrega o bytecode sob demanda.

JVM Explicada: O que é e sua Arquitetura

Durante a execução, o class loader da JVM traz os arquivos de classe para memória, verifica-os por segurança, e o execution engine interpreta ou JIT-compila o bytecode em código de máquina nativo. Esta etapa JIT é o que torna Java tanto compilada quanto interpretada.

JVM Explicada: O que é e sua Arquitetura

Nota: O compilador JIT é um componente central da JVM que realiza tradução on-the-fly de bytecode em instruções nativas eficientes.

Por que Java é Tanto Compilada quanto Interpretada?

O design do Java casa os benefícios de linguagens compiladas e interpretadas:

Por que Java é Mais Lento?

O overhead de runtime do Java origina-se de duas fontes principais:

  1. Linking Dinâmico – Métodos são resolvidos em tempo de execução em vez de tempo de compilação, adicionando pequeno custo de lookup.
  2. Interpretação de Bytecode em Tempo de Execução – Mesmo com JIT, a execução inicial de bytecode incorre em custo de conversão antes de código nativo ser produzido.

Implementações modernas de JVM reduziram dramaticamente esses overheads através de otimização agressiva, compilação em camadas e tuning específico de hardware.

Resumo

Java

  1. O Que é CNC? — Entendendo o Controle Numérico Computadorizado para Manufatura Moderna
  2. Java 10: Handshakes Thread-Local para Safepoints VM Mais Rápidos
  3. Entendendo o Torneamento Mecânico: Um Processo-Chave de Usinagem de Precisão
  4. Design de Arquitetura: Princípios, Práticas e Impacto
  5. Parafusos de Máquina (Machine Bolts): Tipos, Graus, Materiais e Instalação Correta
  6. Máquinas de Fiar (Spinning Machines): Da Fibra ao Fio
  7. Descubra Máquinas de Venda de Leite Fresco: Convenientes, Acessíveis e Ecológicas
  8. Máquinas de Furação Horizontal Explicadas: Design, Operação e Aplicações
  9. Máquinas de Prensa Automáticas: Função, Benefícios e Aplicações
  10. Atendimento de Máquinas Explicado: Benefícios, Automação e Aplicações