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.