JVM | O que é máquina virtual Java e a sua arquitectura

>/div>

O que é máquina virtual Java?

máquina virtual Java (JVM) é um motor que fornece um ambiente de tempo de execução para conduzir o código ou aplicações Java. Converte o código bytecode Java em linguagem de máquinas. JVM é uma parte do Java Run Environment (JRE). Em outras linguagens de programação, o compilador produz código de máquina para um determinado sistema. No entanto, o compilador Java produz código para uma máquina virtual conhecida como Java Virtual Machine.

Aqui está como funciona JVM

Primeiro, o código Java é cumprido em bytecode. Este bytecode é interpretado em máquinas diferentes

Entre sistema anfitrião e fonte Java, Bytecode é uma linguagem intermediária.

JVM em Java é responsável pela atribuição de espaço de memória.

Como funciona a JVM
Trabalho da Máquina Virtual Java (JVM)

Neste tutorial da JVM, irá aprender-

  • Arquitectura JVM
  • Compilação de código de software & Processo de execução
  • C código Compilação e processo de execução
  • código Java Compilação e processo de execução
  • Porque é que Java é interpretada e compilada?
  • Porque é que o Java é lento?

Arquitectura JVM

Agora neste tutorial de JVM, vamos compreender a Arquitectura de JVM. A arquitectura JVM em Java contém carregador de classes, área de memória, motor de execução, etc.

JVM Architecture
Java Virtual Machine Architecture

1) ClassLoader

O carregador de classes é um subsistema utilizado para carregar ficheiros de classes. Desempenha três funções principais: Carregamento, Ligação, e Inicialização.

2) Área de Método

JVM Área de Método armazena estruturas de classe como metadados, o pool de tempo de execução constante, e o código dos métodos.

3) Heap

Todos os Objectos, as suas variáveis de instância relacionadas, e matrizes são armazenadas no heap. Esta memória é comum e partilhada através de múltiplos fios.

4) Pilha em linguagem JVM

Java language Pilha armazena variáveis locais, e os seus resultados parciais. Cada linha tem a sua própria pilha JVM, criada simultaneamente à medida que a linha é criada. Uma nova moldura é criada sempre que um método é invocado, e é apagada quando o processo de invocação do método está completo.

5) Registos de PC

PC registam o endereço da instrução da máquina virtual Java que está actualmente em execução. Em Java, cada thread tem o seu registo de PC separado.

6) Pilhas de métodos nativos

Pilhas de métodos nativos guardam a instrução de código nativo, dependendo da biblioteca nativa. É escrita noutra linguagem em vez de Java.

7) Motor de Execução

É um tipo de software utilizado para testar hardware, software, ou sistemas completos. O motor de execução de testes nunca transporta qualquer informação sobre o produto testado.

8) Interface do Método Nativo

A Interface do Método Nativo é uma estrutura de programação. Permite que o código Java que está a ser executado numa JVM seja chamado por bibliotecas e aplicações nativas.

9) Native Method Libraries

Native Libraries é uma colecção das Native Libraries(C, C++) que são necessárias para o Motor de Execução.

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

Para escrever e executar um programa de software, é necessário o seguinte

1) Editor – Para escrever o seu programa, um bloco de notas poderia ser usado para isto

2) Compilador – Para converter o seu programa de linguagem elevada em código de máquina nativo

3) Linker – Para combinar diferentes referências de ficheiros de programas no seu programa principal.

4) Carregador – Para carregar os ficheiros do seu dispositivo de armazenamento secundário como Disco Rígido, Unidade Flash, CD em RAM para execução. O carregamento é feito automaticamente quando executa o seu código.

5) Execução – Execução real do código que é tratado pelo seu SO & processador.

Com este fundo, consulte o seguinte vídeo & aprenda o funcionamento interno e a arquitectura da JVM (Máquina Virtual Java).

clique aqui se o vídeo não for acessível

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

Para compreender o processo de compilação Java em Java. Vamos primeiro dar uma olhada rápida ao processo de compilação e ligação em C.

P>Suponha no principal, chamou duas funções f1 e f2. A função principal é armazenada no ficheiro a1.c.

Trabalho da Máquina Virtual Java (JVM) a sua Arquitectura

Função f1 é armazenada num ficheiro a2.c

Trabalho de Máquina Virtual Java(JVM) a sua Arquitectura

Função f2 é armazenada num ficheiro a3.c

Trabalho de Máquina Virtual Java(JVM) a sua Arquitectura

Todos estes ficheiros, ou seja a1.c, a2.c, e a3.c, são alimentados pelo compilador. Cuja saída são os ficheiros objecto correspondentes que são o código da máquina.

Trabalho da Máquina Virtual Java (JVM) a sua Arquitectura

O passo seguinte é integrar todos estes ficheiros objecto num único ficheiro .exe com a ajuda do linker. O linker irá agrupar todos estes ficheiros e produzir o ficheiro .exe.

Trabalho da Máquina Virtual Java(JVM) a sua Arquitectura

p>Durante a execução do programa, um programa carregador irá carregar a.exe na RAM para a execução.

Trabalho de Máquina Virtual Java(JVM) a sua Arquitectura

Compilação e Execução de código Java em Java VM

Agora neste tutorial de JVM, vejamos o processo para JAVA. No seu essencial, tem dois métodos f1 e f2.

  • O método principal é armazenado no ficheiro a1.java
  • f1 é armazenado num ficheiro como a2.java
  • f2 é armazenado num ficheiro como a3.java

Trabalho de Máquina Virtual Java(JVM) a sua Arquitectura

O compilador compilará os três ficheiros e produzirá 3 ficheiros .class correspondentes que consistem em código BYTE. Ao contrário do C, nenhuma ligação é feita.

A máquina virtual Java VM ou Java reside na RAM. Durante a execução, utilizando o carregador de classes, os ficheiros de classe são trazidos para a RAM. O código BYTE é verificado para quaisquer violações de segurança.

Trabalho da Máquina Virtual Java (JVM) a sua Arquitectura

P>Próximo, o motor de execução converterá o Bytecode em código de máquina nativa. Isto é mesmo a tempo de compilar. É uma das principais razões pelas quais Java é comparativamente lento.

Trabalho da Máquina Virtual Java (JVM) a sua Arquitectura

NOTE: JIT ou compilador Just-in-time é a parte da Máquina Virtual Java (JVM). Interpreta parte do Código de Byte que tem uma funcionalidade semelhante ao mesmo tempo.

Porque é que o Java é tanto Linguagem Interpretada como Compilada?

As linguagens de programação são classificadas como

  • Linguagem de Nível Superior Ex. C++, Java
  • Linguagens de Nível Médio Ex. C
  • Linguagem de Baixo Nível Ex Assembly

  • finalmente o nível mais baixo como a Linguagem de Máquina.

Um compilador é um programa que converte um programa de um nível de linguagem para outro. Exemplo de conversão do programa C++ 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).

Um intérprete é um programa que converte um programa de um nível para outra linguagem de programação do mesmo nível. Exemplo de conversão de programa Java em C++

Em Java, o gerador de código Just In Time converte o bytecode em código de máquina nativo, que se encontram nos mesmos níveis de programação.

Hence, Java é tanto compilado como interpretado em linguagem.

Porque é que Java é lento?

As duas principais razões por detrás da lentidão de Java são

  1. Ligação dinâmica: Ao contrário do C, a ligação é feita em tempo de execução, sempre que o programa é executado em Java.
  2. Intérprete em tempo de execução: A conversão do código do byte em código de máquina nativo é feita em tempo de execução em Java, o que aumenta a lentidão

No entanto, a última versão de Java abordou em grande medida os estrangulamentos de desempenho.

Sumário:

  • A forma completa de JVM é a máquina virtual Java. JVM em Java é o motor que conduz o código Java. Ele converte o código bytecode Java em linguagem de máquinas.
  • A arquitectura JVM em Java contém carregador de classes, área de memória, motor de execução, etc.
  • Em JVM, o código Java é compilado para bytecode. Este bytecode é interpretado em máquinas diferentes
  • JIT significa compilador Just-in-time. JIT é a parte da máquina virtual Java (JVM). É utilizado para acelerar o tempo de execução
  • li> Em comparação com outras máquinas compiladoras, JVM em Java pode ser lento na execução.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *