Oracle GraalVM

Disponível com o Java SE Universal Subscription sem custo adicional para capacitar o desenvolvimento de aplicações Java modernas, criando aplicações baseadas em microsserviços para implementações nativas da nuvem com melhor desempenho e economia de custos.

O que é Oracle GraalVM?

GraalVM definido

O Oracle GraalVM é um JDK de alto desempenho que pode acelerar o desempenho de aplicações baseadas em Java e JVM usando um compilador JIT (just-in-time) alternativo. Ele reduz a latência da aplicação, melhora o pico de rendimento, reduzindo o tempo de coleta de lixo e vem com suporte Oracle 24 horas por dia, 7 dias por semana.

Também há um utilitário de imagem nativo que compila um código de bytes Java antecipadamente (Ahead Of Time) e gera executáveis nativos para algumas aplicações que são inicializadas quase instantaneamente e usam pouquíssimos recursos de memória.

GraalVM (Compilador de Graal, Truffle e Oracle Java Development Kit [JDK])

O GraalVM começou em 2011 como um projeto de pesquisa no Oracle Labs para criar uma plataforma de tempo de execução que pode executar várias linguagens de programação com alto desempenho. O núcleo do projeto GraalVM é a otimização avançada do compilador GraalVM, que é usada como um compilador just-in-time (JIT) para a JVM (Java Virtual Machine) ou pelo recurso de imagem nativa do GraalVM para compilar os bytecodes Java antecipadamente em código de máquina nativo. A estrutura de implementação da linguagem Truffle do GraalVM funciona com o compilador GraalVM para executar JavaScript, Python, Ruby e outras linguagens compatíveis na JVM com desempenho excepcional.

Ao usar GraalVM no modo JIT, a JVM usa o compilador GraalVM JI para criar um código de máquina específico da plataforma a partir de bytecode Java enquanto a aplicação está em execução. A compilação é executada de forma incremental durante a execução do programa com otimização extra aplicada ao código que é frequentemente executado. Essa abordagem garante que o código em hotspots seja executado extremamente rápido graças ao inlining agressivo, análise de escape parcial e outras otimizações avançadas. Algumas otimizações reduzem as alocações de objetos, o que reduz a carga no coletor de lixo. Isso ajuda a melhorar o desempenho de pico de aplicações de longa execução.

O utilitário de imagem nativa do GraalVM também pode compilar o código de bytes Java para gerar executáveis de máquina nativos antecipadamente (ou seja, no momento da compilação). Essas executáveis são inicializadas quase instantaneamente e consomem uma fração da memória que seria usada pela mesma aplicação Java em execução na JVM. Os executáveis nativos também são compactos, pois incluem apenas as classes, os métodos e as bibliotecas dependentes exigidos pela aplicação.

O GraalVM também suporta interoperabilidade multilíngue por meio da estrutura de implementação da linguagem Truffle. O Truffle permite que programas criados em linguagens compatíveis usem bibliotecas com vários idiomas. Por exemplo, um programa JavaScript pode chamar métodos Ruby e compartilhar valores sem fazer cópias. Quando executado em JVM, o Truffle colabora com o compilador GraalVM para compilar linguagens compatíveis com código de máquina nativo para obter desempenho ideal, assim como com o Java.

Saiba mais sobre o compilador GraalVM, leia o ebook GraalVM para Leigos

Oracle GraalVM

O compilador do GraalVM inclui vários algoritmos de otimização adicionais que fornecem melhorias significativas no desempenho e no consumo de recursos. Os recursos de imagem nativa do GraalVM oferecem suporte a vários recursos avançados, incluindo o coletor de lixo G1, ponteiros compactados e otimização guiada por perfil, que ajuda o compilador a um gerar código mais eficiente.

O GraalVM está incluído nos produtos Java SE sem custo adicional. Inclui suporte 24 horas por dia, 7 dias por semana da Oracle com acesso a correções de segurança e atualizações de caminho crítico para desempenho e confiabilidade mais previsíveis. Para a migração do Java para a nuvem, o GraalVM é gratuito para uso na Oracle Cloud Infrastructure (OCI).

Por que usar o Oracle GraalVM

O GraalVM pode permitir que os desenvolvedores criem códigos mais eficientes, com melhor isolamento e maior agilidade para ambientes de nuvem ou híbridos. Veja alguns dos motivos pelos quais mais e mais empresas atualmente usam o GraalVM:

  • Adapte-se rapidamente a um mercado em constante mudança. As aplicações de negócios de hoje precisam processar volumes de dados cada vez maiores e responder rapidamente às solicitações dos clientes. As aplicações Java podem evoluir para acompanhar o ritmo, ajudando os desenvolvedores a aumentar a eficiência do desempenho das aplicações enquanto reduz os custos de TI.
  • Capacidade de criar aplicações Java modernas que usam microsserviços e contêineres para nativos da nuvem. Microsserviços são miniaplicações pequenas e independentes que executam uma única função. As aplicações de negócios normalmente aproveitam centenas de serviços e cada um precisa começar rapidamente para minimizar a latência e reduzir os custos de consumo da nuvem. Em outras palavras, só pague pelo que usar.
  • Melhore a produtividade do desenvolvedor cultivando um ecossistema em que diferentes linguagens de programação podem trabalhar juntas em uma JVM.

Casos de uso do GraalVM

Aumente o desempenho e amplie as aplicações Java existentes

As inovações do GraalVM ajudam o código Java a acompanhar as demandas de computação de hoje com desempenho mais rápido para responder logo às necessidades do cliente. O otimizador avançado melhora o throughput de pico. Ele também otimiza o consumo de memória minimizando alocações de objeto para reduzir o tempo gasto na execução de coleta de lixo. O GraalVM em execução no modo JIT pode aumentar o desempenho em até 50%. Isso libera a memória antes, para que você possa executar outras cargas de trabalho na mesma infraestrutura e reduzir os custos de TI.

Crie aplicações nativas da nuvem

O utilitário de imagem nativa do Oracle GraalVM compila aplicações Java de bytecode antecipadamente em binários de máquina. Os executáveis nativos são inicializados quase 100 vezes mais rápido e consomem até 5 vezes menos memória em comparação com a execução em uma JVM.

Nativo do GraalVM Enterprise
Figura 1 - Os executáveis nativos são inicializados quase instantaneamente e consomem pouca memória em comparação com Go ou Java HotSpot.

À medida que as organizações transferem cargas de trabalho para a nuvem e pagam por hora pelo uso de recursos do sistema, o GraalVM pode ajudar a obter economias de custo operacionais. Esses resultados tornam os executáveis nativos gerados pelo GraalVM ideais para implementação de microsserviços, uma área suportada pelas principais estruturas de microsserviços, como Helidon, Micronaut, Quarkus e Spring Boot.

Desenvolva programas em várias linguagens e melhore a produtividade

Você pode executar o Java e outras linguagens, como o JavaScript, no JVM com excelente desempenho. O SuiteScript do Oracle NetSuite é uma linguagem de extensão para que os usuários finais personalizem as aplicações em execução no NetSuite. O Oracle GraalVM permitiu que o NetSuite incorporasse um tempo de execução de JavaScript baseado em Truffle que pode compilar JavaScript em código de máquina que é executado 4 vezes mais rápido que o SuiteScript executado na JVM.

Como melhorar o desempenho e a eficiência da aplicação

O GraalVM inclui um compilador de otimização avançada que gera código de máquina enquanto o programa executa JIT para acelerar o desempenho da aplicação Java. Compilando antecipadamente, a imagem nativa se inicia rapidamente e usa menos memória, tornando-a ideal para implementação nativa da nuvem. Ela suporta programas de várias linguagens para melhorar a produtividade, permitindo que os desenvolvedores usem as melhores bibliotecas necessárias para resolver problemas de negócios, independentemente da linguagem em que são escritos.