O que é JVM? Java Máquina virtual Archiarquitetura
O que é JVM em Java?
Java Máquina Virtual (JVM) é um mecanismo que fornece 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 Java Ambiente de tempo de execução (JRE). Em outras linguagens de programação, o compilador produz código de máquina para um sistema específico. No entanto, Java 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. Este bytecode é interpretado em máquinas diferentes. Entre o sistema host e Java fonte, Bytecode é uma linguagem intermediária. JVM em Java é responsável por alocar espaço de memória.
Neste tutorial JVM, você aprenderá-
Archiarquitetura de JVM (Java Máquina virtual)
Agora neste tutorial JVM, vamos entender o Architecture de JVM. Arquitetura JVM em Java contém carregador de classe, área de memória, mecanismo de execução etc.
1) Carregador de classe
O carregador de classes é um subsistema usado para carregar arquivos de classe. Ele executa três funções principais, a saber. Carregamento, vinculação e inicialização.
2) Área de Método
A área de método JVM armazena estruturas de classe como metadados, o pool de tempo de execução constante 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 linguagem JVM
Java As pilhas de linguagem armazenam variáveis locais e seus resultados parciais. Cada thread tem sua própria pilha JVM, criada simultaneamente à criação da thread. Um novo quadro é 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 registro do PC armazena o endereço do Java instrução da máquina virtual que está atualmente em execução. Em Java, cada thread tem seu registro de PC separado.
6) Pilhas de métodos nativos
As pilhas de métodos nativos contêm as instruções do código nativo, dependendo da biblioteca nativa. Está escrito em outro idioma em vez de Java.
7) Motor de Execução
É um tipo de software usado para testar hardware, software ou sistemas completos. O mecanismo de execução de teste nunca carrega nenhuma informação sobre o produto testado.
8) Interface do método nativo
A Native Method Interface é uma estrutura de programação. Ele permite Java código que está sendo executado em uma JVM para ser chamado por bibliotecas e aplicativos nativos.
9) Bibliotecas de métodos nativos
Bibliotecas Nativas é uma coleção de Bibliotecas Nativas(C, C++) que são necessários para o mecanismo de execução.
Processo de compilação e execução de código de software
Para escrever e executar um programa de software, você precisa do seguinte
1) Editor – Para digitar seu programa, um bloco de notas pode ser usado para isso
2) Compilador – Para converter seu programa de alto idioma em código de máquina nativo
3) Vinculador – Para combinar 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 disco rígido, unidade flash, CD na RAM para execução. O carregamento é feito automaticamente quando você executa seu código.
5) Execução – Execução real do código que é tratado pelo seu sistema operacional e processador.
Com esse histórico, consulte o vídeo a seguir e aprenda o funcionamento interno e a arquitetura da JVM (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 processo de compilação em Java. Vamos primeiro dar uma olhada rápida no processo de compilação e vinculação em C.
Suponha que no principal, você chamou duas funções f1 e f2. A função principal é armazenada no arquivo a1.c.
A função f1 é armazenada em um arquivo a2.c
A função f2 é armazenada em um arquivo a3.c
Todos esses arquivos, ou seja, a1.c, a2.c e a3.c, são alimentados ao compilador. Cuja saída são os arquivos de objeto correspondentes que são o código de máquina.
A próxima etapa é integrar todos esses arquivos objeto em um único arquivo .exe com a ajuda do vinculador. O vinculador agrupará todos esses arquivos e produzirá o arquivo .exe.
Durante a execução do programa, um programa carregador carregará um.exe no RAM para a execução.
Java Compilação e execução de código em Java VM
Agora, neste tutorial de JVM, vamos dar uma olhada no processo para JAVA. Basicamente, 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 irá compilar os três arquivos e produzirá 3 arquivos .class correspondentes que consistem em código BYTE. Ao contrário de C, nenhuma ligação é feita.
A Java VM ou Java A Máquina Virtual reside na RAM. Durante a execução, usando o carregador de classe, os arquivos de classe são trazidos para a RAM. O código BYTE é verificado para quaisquer violações 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. É uma das principais razões pelas quais Java é comparativamente lento.
OBSERVAÇÃO: JIT ou compilador Just-in-time é a parte do Java Máquina Virtual (JVM). Ele interpreta parte do Byte Code que possui funcionalidade semelhante ao mesmo tempo.
Por que é Java linguagem interpretada e compilada?
Linguagens de programação são classificados como
- Linguagem de nível superior Ex. C++, Java
- Idiomas de nível médio Ex. C
- Linguagem de baixo nível Ex Assembly
- finalmente, o nível mais baixo como Linguagem de Máquina.
A compilador é um programa que converte um programa de um nível de linguagem para outro. Exemplo de conversão de C++ programa em código de máquina. O compilador java converte código java de alto nível em bytecode (que também é um tipo de código de máquina).
An intérprete é um programa que converte um programa em um nível para outra linguagem de programação no mesmo nível. mesmo nível. Exemplo de conversão de Java programa em C++
In Java, o 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.
Conseqüentemente, Java é uma linguagem compilada e também interpretada.
Por que é Java lento?
As duas principais razões por detrás da lentidão do Java e guarante que os mesmos estão
- 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 diminui ainda mais a velocidade
No entanto, a versão mais recente do Java abordou em grande medida os gargalos de desempenho.
Resumo:
- A forma completa da JVM é Java Máquina Virtual. JVM em Java é o motor que move o Java Código. Ele converte Java bytecode em linguagem de máquina.
- Arquitetura JVM em Java contém carregador de classe, área de memória, mecanismo de execução etc.
- Na JVM, Java o código é compilado em bytecode. Este bytecode é interpretado em máquinas diferentes
- JIT significa compilador Just-in-time. JIT é a parte do Java Máquina Virtual (JVM). É usada para acelerar o tempo de execução
- Em comparação com outras máquinas compiladoras, a JVM em Java pode ser lento na execução.