O Quarkus é o futuro do Java?

Entenda as transformações trazidas pelo Quarkus, o inovador framework que está gerando grande repercussão.

O Quarkus é o futuro do Java?
Photo by Michiel Leunens / Unsplash
O Quarkus é uma pilha Java nativa para Kubernetes, adaptada para o OpenJDK HotSpot e GraalVM, criada a partir das melhores bibliotecas e padrões Java disponíveis.

Introdução

O Quarkus é a mais recente adição ao mundo Java. Esse framework de código aberto, iniciado pela Red Hat, tem sido objeto de discussão há algum tempo. Ele melhora os tempos de inicialização, os custos de execução e aumenta a produtividade. É por isso que o Quarkus já foi considerado por alguns como o futuro do Java.

Ele foi projetado para permitir o desenvolvimento de aplicativos Java nativos da nuvem, também conhecidos como "nativos do Kubernetes". O principal objetivo é reduzir o tempo de inicialização dos aplicativos e seu consumo de memória.

Além desses objetivos de desempenho, o framework demonstra um forte desejo de simplificar a vida dos desenvolvedores, oferecendo uma configuração unificada e o recurso de recarga ao vivo (live reload).

Live Reload

O Quarkus resgata uma funcionalidade que desapareceu com a chegada do Spring Boot: o live reload.

Ao desenvolver em Java, é necessário compilar e reiniciar a aplicação para que as alterações feitas sejam consideradas. O live reload elimina essa necessidade de reinicialização e, portanto, reduz indiretamente o ciclo de desenvolvimento.

No entanto, isso não funciona adequadamente com frameworks como o Spring Boot, que constroem um contexto de aplicação ao iniciar o programa usando reflexão. Uma alteração no código pode resultar em uma modificação do contexto e, portanto, exigir uma reinicialização. Essa reinicialização tem um custo indireto e poderíamos ingenuamente acreditar em um impacto negativo na produtividade.

Compilação Nativa

O Quarkus reduz o tempo de inicialização em cerca de 99% e o consumo de memória de aplicativos Java tradicionais em cerca de 86%, utilizando a compilação nativa oferecida pelo GraalVM (percentuais calculados a partir de dados disponíveis em Quarkus.io). Para alcançar essas melhorias, o Quarkus aproveita o GraalVM e contêineres para construir executáveis Java nativos. O executável é então otimizado para ser executado em um ambiente definido.

O GraalVM e especificamente o Substrate VM estão abrindo as portas para um futuro brilhante e duradouro para a linguagem Java. O GraalVM é uma máquina virtual universal para executar aplicativos escritos em JavaScript, Python, Ruby, R, além de linguagens baseadas em JVM como Java, Scala ou Kotlin. A boa notícia é que o GraalVM permite que você compile seus programas antecipadamente (AOT) em um executável nativo. Isso significa que você pode compilar seu código Java diretamente em um código específico da máquina. O programa resultante não é executado no Java HotSpot VM, mas usa componentes necessários, como gerenciamento de memória e escalonamento de threads, de uma implementação diferente de uma máquina virtual, chamada Substrate VM. O Substrate VM é escrito em Java e compilado no executável nativo.

Graças aos executáveis nativos, você pode executar o aplicativo Java em qualquer máquina, mesmo sem instalar o JDK (Kit de Desenvolvimento Java). Isso é muito importante, especialmente quando usamos microsserviços.

Vamos imaginar que temos um aplicativo dividido em 6 microsserviços, todos baseados em Java. Nesse caso, precisamos instalar o JDK em cada um deles para executar o aplicativo Java. O JDK requer aproximadamente 250MB de espaço em disco, então, se multiplicarmos isso por 6, teremos 1500 MB apenas para o JDK dos microsserviços, o que é bastante.

Portanto, graças ao Quarkus e ao GraalVM, podemos construir um aplicativo Java e implantá-lo em contêineres sem precisar instalar o JDK. Como resultado, economizamos muito espaço de armazenamento e tempo de inicialização.

Conclusão

O Quarkus é um framework Java de pilha completa, nativo do Kubernetes, desenvolvido para máquinas virtuais Java (JVMs) e compilação nativa. Ele otimiza o Java especificamente para contêineres, permitindo que ele se torne uma plataforma eficaz para ambientes de nuvem sem servidor (Faas) e Kubernetes.

Esse framework alcança uma densidade de carga de trabalho mais alta, reduzindo assim os custos totais de recursos, como hardware, computação em nuvem e memória.

Ele torna o Java comparável a outras linguagens de programação compiladas de forma nativa. E oferece uma ótima experiência de desenvolvimento, graças ao seu rápido tempo de inicialização, live reload e a muitos outros recursos.

Referências