Compilação nativa no Quarkus - por que é importante

Olá a todos! Este é o segundo post da nossa série Quarkus - hoje falaremos sobre compilação nativa. (A propósito, registre-se e acesse o nosso webinar “ Este é o framework Java nativo do Quarkus - Kubernetes ”, que será realizado em 27 de maio. Mostraremos como começar do zero ou transferir soluções



prontas ) Quarkus é uma pilha Java projetada para o Kubernetes. E, embora, é claro, ainda haja muito a ser feito aqui, resolvemos muitos aspectos bem, incluindo a otimização da JVM e várias estruturas. Um dos recursos do Quarkus que causou maior interesse dos desenvolvedores foi uma abordagem abrangente e abrangente para transformar o código Java em arquivos executáveis ​​para um sistema operacional específico (a chamada "compilação nativa"), semelhante ao C e C ++, onde essa compilação geralmente ocorre no final de um ciclo de montagem, teste e implantação.

Embora a compilação nativa, como mostramos abaixo, seja importante, deve-se observar que o Quarkus realmente funciona bem na máquina Java OpenJDK Hotspot mais comum, graças às melhorias de desempenho que implementamos em toda a pilha. Portanto, a compilação nativa deve ser considerada como um bônus adicional que pode ser usado à vontade ou necessidade. De fato, com relação às imagens nativas, o Quarkus depende muito do OpenJDK. E o modo dev, recebido calorosamente pelos desenvolvedores, fornece testes quase instantâneos das alterações devido aos recursos desenvolvidos da execução dinâmica de código implementada no Hotspot. Além disso, ao criar imagens nativas do GraalVM, a biblioteca de classes OpenJDK e os recursos HotSpot são usados.

Então, por que você precisa de compilação nativa se tudo já está perfeitamente otimizado? Vamos tentar responder a esta pergunta abaixo.

Vamos começar pelo óbvio: a Red Hat tem uma vasta experiência em otimizar JVMs, pilhas e estruturas durante o desenvolvimento do projeto JBoss , incluindo:

  • O primeiro aplicativo de servidor em nuvem a ser executado na plataforma Red Hat OpenShift .
  • O primeiro servidor de aplicativos a ser executado nos computadores Plug PC .
  • O primeiro servidor de aplicativos a ser executado no Raspberry Pi .
  • Vários projetos em execução em dispositivos Android .

Temos lidado com os problemas de execução de aplicativos Java na nuvem e em dispositivos com recursos limitados (leitura, IoT) há muitos anos e aprendemos a extrair o máximo da JVM em termos de desempenho e otimização de memória. Como muitos outros, trabalhamos há muito tempo com a compilação nativa de aplicativos Java por meio de GCJ , Avian , Excelsior JET e até Dalvik e conhecemos bem os prós e contras dessa abordagem (por exemplo, o dilema de escolher entre versatilidade "construir uma vez - executar em qualquer lugar" e aplicativos compilados são menores e executam mais rapidamente).

Por que é importante considerar esses prós e contras? Porque em algumas situações, sua proporção se torna crucial:

  • , serverless/ , ( ) , . , . JVM , , , 5 . , Java- ( , , OpenWhisk Knative), JVM . , , .
  • , , . , JVM , , Linux’ – . Java-. , JVM, . , .
  • , - , . 12 , Kubernetes Java- . , , , , . , dead-code elimination, ( JDK), . Quarkus .

Na verdade, os argumentos acima já são suficientes para entender a justificativa da compilação nativa do ponto de vista dos participantes do projeto Quarkus. No entanto, há mais uma razão, não técnica, mas também importante: nos últimos anos, muitos programadores e empresas de desenvolvimento abandonaram o Java em favor de novas linguagens de programação, acreditando que o Java, juntamente com sua JVM, pilhas e estruturas, se tornou voraz demais em termos de memória, muito lento etc.

No entanto, o hábito de usar a mesma ferramenta para resolver problemas nem sempre é correto. Às vezes, é melhor dar um passo atrás e procurar outra coisa. E se o Quarkus faz as pessoas pararem e pensarem, isso é bom para todo o ecossistema Java. O Quarkus incorpora uma perspectiva inovadora sobre como criar aplicativos mais eficientes, tornando o Java mais relevante para novas arquiteturas de aplicativos, como sem servidor. Além disso, devido à sua extensibilidade, o Quarkus, esperamos, adquirirá um ecossistema inteiro de extensões Java, aumentando significativamente o número de estruturas que prontamente suportarão a compilação nativa como parte dos aplicativos.

All Articles