Qual a diferença na execução de aplicação Quarkus com JVM e GraalVM?

Você sabe qual a diferença entre Quarkus com JVM e GraalVM? Nas próximas linhas daremos alguns conceitos básicos para na sequência analisarmos essa diferença.

O que é o Quarkus? 

Quarkus é um framework desenvolvido pela RedHat, personalizado para GraalVM e OpenJDK utilizando o HotSpot como Java Virtual Machine (JVM). 

O Quarkus chegou no final de 2018 com a promessa de reduzir o tempo de inicialização de aplicativos e sua pegada de memória.

Com pouco gasto de memória de footprint e um startup muito rápido, o Quarkus se tornou um framework ótimo para cloud (ex: k8s), microservices e também serverless. 

O Quarkus foi desenvolvido para ser um framework completo, trazendo bibliotecas muito utilizadas, como Eclipse MicroProfile, Spring, Apache Kafka,  Hibernate ORM (JPA),  Infinispan, RESTEasy (JAX-RE), Camel e muitos outros. 

Quarkus com GraalVM 

O Quarkus utiliza a GraalVM (uma máquina virtual universal para executar aplicações escritas em diversas linguagens, incluindo Java e JavaScript), para gerar um executável nativo da aplicação. 

Ela permite o ahead-of-time (AOT) compilation, processo que compila o código diretamente para um formato binário, sem passar pelo bytecode. 

No processo de AOT, a GraalVM aplica várias otimizações bem agressivas, como a análise de código e retirada de ‘dead code’ — ou seja, verifica um código que não está sendo utilizado e remove. A soma dessa limpeza de ‘dead code’ com a compilação para um código nativo é um arquivo executável pequeno, com rápida inicialização e com baixo consumo de memória. 

E para compilar no modo nativo, basta ter a GraalVM instalada e compilar o projeto utilizando o profile correto, ou então compilar nativo através de uma imagem Docker. 

Quarkus com JVM 

Num processo tradicional do Java, o código é compilado em um formato chamado bytecode. Na hora de executar, a JVM pega esse código e transforma em um código binário nativo para o computador onde a JVM está rodando (esse processo é chamado de JIT ou Just In Time compilation). 

Diferença entre Quarkus com JVM e GraalVM

Quarkus com a JVM é indicado para aplicações de longa duração, devido a melhor performance por ter um Garbage Collector melhor que o da GraalVM. 

Apesar do Java ter uma fama de ser pesado e de consumir muito recurso, um dos pontos mais interessantes sobre Quarkus é que, combinado com o GraalVM, ele reduz significativamente o uso de Reflecions, transformando o tempo de inicialização e consumo de memória um aliado da tecnologia.  

Especialistas SManager

Ainda com dúvidas? Entre em contato com nossos especialistas. Eles terão o maior prazer em dar mais informações sobre o Quarkus ou outro assunto referente a tecnologia.