Codificante

GraalVM, a máquina virtual poliglota de alto rendimento

Marco Ferreira
Marco Ferreira

Temos visto que uma aplicação Quarkus tende a ser bem performática especialmente se fizermos uso da GraalVM, mas o que exatamente isso é?

a definição formal seria:

GraalVM é uma máquina virtual universal para a execução de aplicações escritas em JavaScript, Python, Ruby, R, linguagens baseadas na JVM como Java, Scala, Groovy, Kotlin, Clojure e linguagens baseadas em LLVM como C e C++

É interessante mencionar que a GraalVM é resultado de anos e anos de estudos e seu nascimento se deu dentro do Oracle Labs e o primeiro commit em seu repositório é de 2011, isso sem citar o tempo de pesquisa antes mesmo desse primeiro commit.

Um dos pontos importantes da GraalVM é a interoperabilidade de linguagens, em um mesmo código você pode ter misturas de linguagens para aproveitar conceitos ou recursos de cada uma.

Outra importante feature é a de compilação para imagem nativa. Essa função utiliza o modelo de compilação Ahead of Time e se cria um executável binário para o sistem operacional, esse executável é chamado de Imagem Nativo. E essa imagem nativa traz consigo as classes da aplicação, classes das dependências e alguns componentes importantes como gerenciamento de memória e agendamento de threads e tudo isso em uma máquina virtual bem específica Substrate VM.

A Substrate VM é uma máquina virtual otimizada para ambientes de execução para atividades como garbage collection e agendamento de threads e também muito focada em utilizar o modelo Ahead of Time. O resultado dessa salada toda é o baixíssimo tempo de startup da aplicação e também baixo consumo de memória se comparado com uma JVM tradicional que nós vimos no artigo anterior.

A GraalVM possui duas versões para download, a community e a enterprise. A diferença básica entre ambas é que na enterprise você paga pelo suporte prestado pela Oracle e essa implementação possui features de segurança a mais do que na versão community.

Pra concluir, é um projeto extremamente interessante e que vem tomando cada vez mais espaço no mercado, um grande exemplo de uso foi dado nessa talk pelo Chris Thalinger que trabalha no Twitter VM Team(célula dentro do Twitter que cuida das melhorias e otimizações em VMs lá utilizadas) onde ele fala das motivações para usar a GraalVM. Sendo assim, dê uma olhada no projeto, faça o download no site teste e tire suas próprias conclusões… =)


Mais Artigos