O que é a JVM? Explique a JVM. Archiarquitetura
⚡ Resumo Inteligente
Java A Máquina Virtual Java (JVM) é o mecanismo que fornece um ambiente de execução para os programas. Java código, convertendo bytecode independente de plataforma em linguagem de máquina nativa. Faz parte do Java Ambiente de tempo de execução e habilita JavaA portabilidade do 's permite escrever uma vez e executar em qualquer lugar.

O que é JVM em Java?
Java Máquina Virtual (JVM) é um mecanismo que fornece um ambiente de tempo de execução para conduzir o Java código ou aplicativos. Ele converte Java bytecode em linguagem de máquina. JVM faz parte do Java Ambiente de Execução Conjunto (JRE). Em outras linguagens de programação, o compilador produz código de máquina para um sistema específico. No entanto, o Java O compilador produz código para uma Máquina Virtual conhecida como Java Máquina virtual.
Como funciona a JVM?
Primeiro, Java O código é compilado em bytecode. Esse bytecode é interpretado em máquinas diferentes. Entre o sistema host e o Java O bytecode é uma linguagem intermediária. JVM em Java é responsável por alocar espaço de memória.
Trabalho de Java Máquina Virtual (JVM)
Archiarquitetura de JVM (Java Máquina virtual)
Agora, vamos entender a arquitetura da JVM. Arquitetura da JVM em Java Contém um carregador de classes, área de memória, mecanismo de execução e muito mais.
Java Máquina virtual Archiarquitetura
1) Carregador de classe
O carregador de classes é um subsistema usado para carregar arquivos de classe. Ele executa três funções principais: carregamento, vinculação e inicialização.
2) Área de Método
A área de métodos da JVM armazena estruturas de classe, como metadados, o conjunto de constantes em tempo de execução e o código dos métodos.
3) Pilha
Todos os objetos, suas variáveis de instância relacionadas e matrizes são armazenadas no heap. Essa memória é comum e compartilhada entre vários threads.
4) Pilhas de Linguagens da JVM
Java As pilhas de linguagem armazenam variáveis locais e seus resultados parciais. Cada thread possui sua própria pilha JVM, criada simultaneamente à criação da thread. Um novo frame é criado sempre que um método é invocado e é excluído quando o processo de invocação do método é concluído.
5) Registros de PC
O registrador PC armazena o endereço do Java Instrução da máquina virtual que está sendo executada no momento. JavaCada thread possui seu próprio registrador PC separado.
6) Pilhas de métodos nativos
As pilhas de métodos nativos armazenam as instruções do código nativo que dependem da biblioteca nativa. Elas são escritas em outra linguagem em vez de... Java.
7) Motor de Execução
O mecanismo de execução lê o bytecode e o executa parte por parte. Ele usa um interpretador e um compilador Just-In-Time (JIT) para converter o bytecode em código de máquina nativo e executá-lo.
8) Interface de Método Nativo
A Native Method Interface é uma estrutura de programação. Ele permite Java Código executado em uma JVM para chamar e ser chamado por aplicativos e bibliotecas nativas.
9) Bibliotecas de métodos nativos
Native Libraries é uma coleção de bibliotecas nativas (C, C++) que são necessários para o mecanismo de execução.
Software Code Processo de compilação e execução
Para escrever e executar um programa de software, você precisa do seguinte:
- 1) Editor – Para digitar seu programa, você pode usar um bloco de notas.
- 2) Compilador – Converter seu programa em linguagem de alto nível para código de máquina nativo.
- 3) Vinculador – Para combinar as diferentes referências de arquivos de programa em seu programa principal.
- 4) Carregador – Para carregar os arquivos do seu dispositivo de armazenamento secundário, como um disco rígido, pen drive ou CD, na memória RAM para execução. O carregamento é feito automaticamente quando você executa o seu código.
- 5) Execução – A execução propriamente dita do código, que é gerenciada pelo seu sistema operacional e processador.
Com esse contexto, consulte o vídeo a seguir e aprenda sobre o funcionamento interno e a arquitetura da JVM (máquina virtual de veicular).Java Máquina Virtual).
Clique aqui. se o vídeo não estiver acessível
Processo de compilação e execução de código C
Para entender o Java Para entender o processo de compilação, vamos primeiro dar uma olhada rápida nos processos de compilação e vinculação em C.
Suponha que na função principal você tenha chamado duas funções, f1 e f2. A função principal está armazenada no arquivo a1.c.
A função f1 está armazenada em um arquivo a2.c.
A função f2 está armazenada em um arquivo a3.c.
Todos esses arquivos, ou seja, a1.c, a2.c e a3.c, são enviados ao compilador, cuja saída são os arquivos objeto correspondentes, que são o código de máquina.
O próximo passo é integrar todos esses arquivos objeto em um único arquivo .exe com a ajuda de um linker. O linker irá agrupar todos esses arquivos e gerar o arquivo .exe.
Durante a execução do programa, um programa carregador carregará um arquivo .exe no sistema. RAM para execução.
Java Compilação e execução de código em Java VM
Agora, vamos analisar o processo para JavaNa sua função principal, você tem dois métodos, f1 e f2.
- O método principal está armazenado no arquivo a1.java
- f1 é armazenado em um arquivo como a2.java
- f2 é armazenado em um arquivo como a3.java
O compilador compilará os três arquivos e produzirá três arquivos .class correspondentes, que consistem em código BYTE. Diferentemente da linguagem C, não há vinculação (linking).
O Java VM, ou Java A máquina virtual reside na RAM. Durante a execução, utilizando o carregador de classes, os arquivos de classe são carregados na RAM. O código BYTE é verificado em busca de quaisquer falhas de segurança.
Em seguida, o mecanismo de execução converterá o bytecode em código de máquina nativo. Isso é compilação just-in-time. É um dos principais motivos pelos quais Java é comparativamente lento.
OBSERVAÇÃO: JIT, ou compilador Just-in-Time, é parte do Java Máquina Virtual (JVM). Ela interpreta partes do código de bytes que possuem funcionalidades semelhantes simultaneamente.
Por que é Java linguagem interpretada e compilada?
Linguagens de programação são classificados como:
- Linguagem de nível superior, por exemplo, C++, Java
- Linguagens de nível intermediário, por exemplo, C
- Linguagem de baixo nível, por exemplo, Assembly
- Finalmente, o nível mais baixo é a Linguagem de Máquina.
A compilador é um programa que converte um programa de um nível de linguagem para outro. Por exemplo, a conversão de um C++ programa em código de máquina. O Java O compilador converte alto nível Java código em bytecode (que também é um tipo de código de máquina).
An intérprete é um programa que converte um programa de um nível para outro nível de linguagem de programação. mesmo nívelPor exemplo, a conversão de um Java programa em C++.
In JavaO gerador de código Just-In-Time converte o bytecode em código de máquina nativo, que estão nos mesmos níveis de programação. Portanto, Java É uma linguagem tanto compilada quanto interpretada.
Por que é Java lento?
As duas principais razões por detrás da lentidão do Java como:
- Vinculação dinâmica: Ao contrário de C, a vinculação é feita em tempo de execução, toda vez que o programa é executado em Java.
- Intérprete de tempo de execução: A conversão do código de bytes em código de máquina nativo é feita em tempo de execução em Java, o que reduz ainda mais a velocidade.
No entanto, as versões mais recentes de Java Esses gargalos de desempenho foram resolvidos em grande medida.











