GraalVM: Virtual Machine rápida, poliglota e Cloud Native!

Neste artigo você vai ver:

A Oracle criou o projeto GraalVM para melhorar a performance das aplicações e diminuir o consumo de memória atendendo principalmente a necessidade de aplicações no ambiente de nuvem, onde a principal tarefa é criar uma nova Máquina Virtual para substituir a JVM do Java.

graalvm

O que é GraalVM?

É um ecossistema compartilhado em tempo de execução que oferece vantagens de desempenho.

Como?

  • Compilador GraalVM – gera código compilado para executar no HotSpot VM ou em máquina virtual de imagem nativa.
  • Imagem nativa do GraalVM – permite que aplicativos com script sejam compilados com antecedência em um binário que é executado nativamente no sistema.
  • Recursos Poliglota – suporta Java, Scala, Kotlin, JavaScript e Node.js. É possível criar um serviço usando duas linguagens ao mesmo tempo, ou seja, Java usando bibliotecas Python. Veja um exemplo.
cloud native
  • Framework de implementação de linguagens: permite implementar qualquer linguagem para o ambiente GraalVM.
  • Interpretador LLVM:  permite que o código nativo seja executado em um ambiente gerenciado no GraalVM.
Imagem do conteúdo sobre graalVM, onde há origin VN e graalVM

Quais são os benefícios?

Alta eficiência

O GraalVM consegue melhorar o desempenho em até 3x em uma ampla variedade de quesitos no novo benchmark da JVM chamado “Renaissance”, que foi aceito na conferência de linguagem de programação mais prestigiada – PLDI.

Os resultados de benchmark e desempenho são mantidos pela Universidade Charles em Praga e estão disponíveis no site renaissance.dev. Ele é ideal para ambientes nativos da nuvem, porque inicia os serviços 100 vezes mais rápido, além de reduzir o uso de memória em até 5X (Quarkus.io), compilando o Java antecipadamente.

Segurança

Inclui recursos de segurança para solucionar algumas vulnerabilidades das fontes comuns de aplicativos de segurança, incluindo estouros de buffer no código nativo.

Agilidade

Poliglota: permite que aplicativos herdados sejam modernizados e novos sejam construídos mais rapidamente. Java, JavaScript, Ruby, Python e R estão disponíveis com desempenho competitivo no mesmo ambiente de execução.

Interoperabilidade

Os idiomas executados podem se chamar sem sobrecarga e as bibliotecas de outros idiomas podem ser usadas.

Incorporabilidade “Embeddability”

Incorpora linguagens dinamicamente e código nativo com recursos de sandbox.

Ferramentas

O GraalVM se beneficia das ferramentas baseadas em JVM e todas as linguagens compartilham ferramentas comuns, como depuração e criação de perfil.

Qual versão usar?

19.3 é a primeira versão com suporte a longo prazo (LTS) da VM criada a partir da linha principal do projeto. Isso significa que continuará recebendo atualizações de segurança, estabilidade e desempenho até a próxima versão do LTS.

GraalVM: instalação Linux e Mac

1) Faça o download do arquivo e descompacte em uma pasta.

2) Configure a variável de ambiente:

– GraalVM bin folder to the PATH environment variable: $ export PATH=<path to GraalVM>/Contents/Home/bin:$PATH. Verify whether you are using GraalVM with the echo command: $ echo $PATH

– Set the JAVA_HOME environment variable to resolve to the GraalVM installation directory: $ export JAVA_HOME=<path to GraalVM>/Contents/Home. Please also see the notice on java_home command.

Veja alguns exemplos de performance em Java.

  • Abra o terminal e crie um arquivo com o comando touch Blender.java

– touch Blender.java

– Edite o arquivo e coloque o seguinte conteúdo:

<p> CODE:https://gist.github.com/deusemarjunior/9564f0c7620551d56b4e55ee267a5b98.js</p>

  • Compile e rode a classe seguindo a imagem abaixo:
java blender
  • Execute usando o parametro abaixo e note a diferença
Captura de tela do conteúdo sobre graalvm, com blender java

  • Leve e Cloud Nativo 

Vários projetos aceitaram o GraalVM Native Image como uma plataforma para suas aplicações.

Você pode usar os seguintes frameworks de microserviço: O Spring Framework anunciou recentemente suporte para imagens nativas nas próximas versões.

No startup das aplicações, a diferença entre usar imagem nativa chega a ser 50 vezes mais rápido se comparar com não nativas, como mostra o gráfico:

java microservice

O resultado é semelhante quando analisamos o consumo médio de memória “memory footprint” e isso faz uma diferença muito grande quando é preciso escalar a aplicação, pois o consumo de recurso será muito menor (5 microserviços usando Quarkus nativo usariam “17×5 = 85mb” ao invés de “121×5=605mb”).

memory footprint

Créditos e Referência

Imagem capa do conteúdo GRAALVM, onde há uma imagem com a "GraalVM" descrito na mesma.
5d93a480bdacc8bbe262c705_Asset-25
Senior Software Engineer
Programador apaixonado por viagens, música e esportes.

Artigos relacionados

Capa do artigo em foto com duas pessoas escrevendo códigos em frente a dois notebooks.
Back-End
Postado em:
Imagem capa do conteúdo sobre Framework NestJS com a foto de uma mulher de cabelos trançados de costas de frente para um computador com códigos.
Back-End
Postado em:
Imagem capa do conteúdo sobre testes unitários, onde uma pessoa branca está em pé, segurando um notebook aberto dentro de um data center.
Back-End
Postado em:

Este site utiliza cookies para proporcionar uma experiência de navegação melhor. Consulte nossa Política de Privacidade.