O que é a JVM?

JVM é uma Especificação em que o funcionamento da Java Virtual Machine é descrito especificamente. No entanto, o algoritmo é uma identidade independente que é escolhida apenas pelo provedor de implementação, como Oracle e outras empresas de renome. Como tal, a JVM é uma Implementação conhecida como Java Runtime Environment (JRE).

Definição

É definido como uma descrição para um programa de software que oferece ambiente de tempo de execução para código e sua execução significativa. Em outras palavras, é como executamos os Programas Java - configurando as configurações da JVM e contando com ela para lidar com os recursos do programa durante o processo de execução.

Compreensão

Java é conhecido como plataforma independente devido à Java Virtual Machine. Quando um envio é feito em computadores diferentes com o sistema operacional diferente com JVM, o bytecode é interpretado na linguagem no nível da máquina pela JVM. Para ser mais preciso, os programas da JVM são escritos na linguagem de programação C, enquanto a JVM é independente do sistema operacional. É um componente chave da arquitetura Java.

Além de tudo isso, é responsável por atribuir a memória essencial requerida por um programa Java. Também é responsável por proibir o espaço da memória.

O que faz?

As operações cruciais que a JVM executa são as seguintes:

  • Carregamento de código
  • Verificação de código
  • Execução de código
  • Fornecimento do ambiente de tempo de execução

Além de tudo isso, ele lança classificações para o formato de arquivo de classe, área de memória, pilha coletada de lixo, conjunto de registros, relatório de erros fatais etc.

Arquitetura da JVM

Vamos obter algumas informações importantes sobre a arquitetura interna da JVM, que inclui:

1. Classloader

É um subsistema da JVM usado para carregar arquivos de classe. Ao executar o programa java, ele primeiro é carregado pelo carregador de classe. Os três carregadores de classes que o Java inclui são os seguintes:

a) Bootstrap ClassLoader

É a superclasse do carregador de classes Extension. Ele auxilia no carregamento dos arquivos rt.jar que carregam todos os arquivos de classe.

b) Extensão ClassLoader

É o carregador de classes pai do carregador de classes do sistema e o carregador de classes filho do Bootstrap. Os arquivos jar dentro do diretório $ JAVA_HOME / jre / lib / ext podem ser extraídos através do Extension ClassLoader.

C) ClassLoader do sistema / aplicativo

É o filho do classloader Extension, também conhecido como Application classloader. Os arquivos de classe do caminho de classe podem ser extraídos por meio dele. O Caminho da classe, definido como o diretório atual, por padrão pode ser alterado usando a opção '-cp' ou '-classpath'.

Área 2.Class (Method)

As estruturas de pré-classe, como dados de campo e método, pool constante de tempo de execução e o código para métodos, são armazenadas na Área de Classe (Método). É uma memória criada na inicialização da JVM e compartilhada entre todos os Threads, como Heap.

3. Heap

Os objetos são atribuídos por essa área útil de dados de tempo de execução. É um local de memória que armazena objetos junto com suas variáveis ​​de instância. Sempre que um objeto é criado em Java, ele entra no heap - a área da memória.

4. Pilha

Juntamente com o armazenamento de quadros, o Java Stack mantém variáveis ​​e resultados parciais. Também desempenha um papel central no método, invocação e retorno. Cada encadeamento individual consiste em sua pilha JVM privada, criada ao mesmo tempo que encadeamento. Sempre que um método é escalado, um novo quadro é gerado e é quebrado quando a chamada do método é concluída.

5. Registro do contador de programa (PC)

O registro do PC contém o endereço de instrução da JVM no momento de sua execução. Mantendo o controle das instruções, ele tem valor para todas as instruções indefinidas para os métodos nativos.

6. Pilha de Métodos Nativos

Os procedimentos nativos usados ​​nos aplicativos fazem parte da pilha de métodos nativos. Esses métodos são escritos em linguagens diferentes de Java. Associadas a cada encadeamento, as implementações da JVM não podem confiar em pilhas convencionais e não podem carregar métodos nativos. Para ser preciso, é semelhante ao empilhamento, mas usado para métodos nativos.

7. Motor

Sendo o aspecto principal da JVM, ele se comunica com suas várias áreas de memória. Isso inclui:

uma. Coletor de lixo

Isso desempenha um papel vital no sistema de gerenciamento de memória dinâmica da JVM. A memória ocupada e não mais referenciada por nenhum dos objetos Java alcançáveis ​​é liberada por meio do Garbage Collector.

b. Intérprete

Ele executa as instruções depois de ler o fluxo do bytecode.

c. Compilador Just-In-Time (JIT)

Ativando o aprimoramento de desempenho, o compilador JIT compila partes do bytecode com funcionalidade semelhante ao mesmo tempo. Ajuda a reduzir a quantidade de tempo necessária para o processo de compilação.

8. Java Native Interface (JNI)

Os aplicativos com script em outras linguagens, como C, C ++, Assembly, etc., podem ser conectados através de uma interface fornecida pela JNI. A estrutura JNI é usada pelo Java para interagir com as bibliotecas do SO ou para enviar saída para o console.

Qual é o uso da JVM?

A JVM possui duas funções principais: permitir que programas Java sejam executados em qualquer dispositivo ou sistema operacional (conhecido como o princípio “Escreva uma vez, execute em qualquer lugar”) e gerenciar e otimizar a memória do programa.

Vantagens e desvantagens

Os programas Java são executados adequadamente por meio da JVM. Bytecode - uma linguagem intermediária é usada para compilar programas Java e, em seguida, executada por meio da JVM. Todo programa individual que está sendo compilado no bytecode pode ser executado por qualquer plataforma alimentada pela JVM. Isso permite que o software Java seja mais eficaz e compatível, de acordo com as várias plataformas de computação. A JVM possui algumas vantagens e desvantagens notáveis ​​que qualquer desenvolvedor deve considerar com cuidado antes de investir no desenvolvimento Java.

1. Segurança

Através das habilidades de segurança da JVM, os programadores podem escrever efetivamente programas Java protegidos de alta qualidade. Ele capacita os recursos do sistema operacional para identificar o software malicioso e também ajuda na sua prevenção.

2. Desempenho

É provável que os programas Java executados em uma JVM ofereçam uma execução mais lenta em comparação com os programas gravados em C ++. Isso ocorre devido à otimização do código, que depende excessivamente de diferentes recursos específicos do sistema. Além disso, o bytecode Java não pode ser otimizado para um conjunto de hardware específico, pois é neutro em relação ao sistema.

3. Correção

Correto é o programa, que executa com eficiência e atende ao máximo as expectativas do usuário. Os recursos incorporados da JVM permitem que ela funcione corretamente e sem erros.

Por que devemos usar a JVM?

Apesar de ter código sintático Java, a JVM pode ser executada em vários programas de linguagem diferentes. Alguns dos motivos pelos quais é tão amplamente usado e por que usá-lo em diferentes plataformas estão listados abaixo:

Ele usa memória heap: a memória heap é um componente principal usado para alocação dinâmica de memória para definir classes e inicialização de objeto e, como a JVM suporta memória heap, ela tem ampla aceitação.

Fornecendo segurança para localização remota de código: A estrutura da JVM é projetada de maneira que o aplicativo remoto seja facilmente executado. Essa teoria é seguida para executar o Java Applet.

Conclusão

O fato de a JVM funcionar em vários sistemas operacionais fornece um sinal de positivo no domínio da tecnologia. Utilizando-o no Windows, Linux e outros sistemas operacionais, ele pode transformar o bytecode, independentemente do hardware e do sistema operacional a ser executado. Além disso, sua capacidade de oferecer segurança ao computador host, protegendo seus dados e programas, é outro motivo pelo qual a JVM teve tanto sucesso no passado e continua dominante no futuro.

Artigos recomendados

Este foi um guia para O que é uma JVM (Java Virtual Machine). Aqui discutimos os conceitos básicos com a lista de Arquitetura e usos da JVM. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Melhores estruturas Javascript
  2. O Python é orientado a objetos
  3. Aplicações de C ++ no mundo real
  4. Carreira no ASP.NET
  5. JRE vs JVM | As 8 principais diferenças com (infográficos)