GraalVM
GraalVM é uma Java VM e JDK baseada em HotSpot / OpenJDK, implementada em Java. Ele oferece suporte a linguagens de programação e modos de execução adicionais, como compilação antecipada de aplicativos Java para inicialização rápida e baixo consumo de memória. A primeira versão pronta para produção, GraalVM 19.0, foi lançada em maio de 2019. Já a versão mais recente é a GraalVM 22.3.0, disponibilizada em 25 de outubro de 2022.
Imagem: jimgris · BY-NC-SA · Openverse
GraalVM tem suas raízes no projeto Maxine Virtual Machine no Sun Microsystems Laboratories (agora Oracle Labs ). O objetivo era escrever uma máquina virtual Java no próprio Java, esperando solucionar o desenvolvimento dos problemas do desenvolvimento em C++, particularmente o gerenciamento manual de memória, e se beneficiar de otimizações metacirculares . Ao perceber que escrever tudo em Java era uma tarefa bastante complicada para um primeiro passo, decidiu-se focar apenas no compilador e conectá-lo ao Hotspot, para reutilizar o máximo possível o tempo de execução do Hotspot. O compilador GraalVM foi iniciado convertendo manualmente o código do compilador cliente Hotspot (denominado "C1") em Java, substituindo o compilador Maxine anterior. Graal foi incluído em versões de Java VM baseadas em HotSpot como OpenJDK de Java 9 a 15, a fim de oferecer suporte à compilação experimental antecipada. Ele foi removido no Java 16, pois manter a versão no JDK e o lançamento independente do GraalVM causava esforço duplicado. Uma funcionalidade semelhante para criar executáveis nativos a partir de projetos Java é fornecida pela ferramenta de imagem nativa de versões independentes do GraalVM.
Imagem: jimgris · BY-NC-SA · Openverse
GraalVM está disponível como Community Edition para uma licença de código aberto e como Oracle GraalVM Enterprise Edition acessível ao aceitar o "Contrato de Licença OTN Oracle GraalVM Enterprise Edition Incluindo Licença para Versões de Adoção Inicial". A Oracle Corporation anunciou o lançamento do Oracle GraalVM Enterprise Edition em 8 de maio de 2019. GraalVM pode substituir um JDK padrão em plataformas Linux e macOS em sistemas x86 de 64 bits.
Graal VM 22
GraalVM 22.3.0 GraalVM 22.3.0 foi lançado em outubro de 2022. GraalVM 22.2.0 GraalVM 22.2.0 foi lançado em julho de 2022. GraalVM 22.1.0 GraalVM 22.1.0 foi lançado em abril de 2022. GraalVM 22.0.0 GraalVM 22.0.0 foi lançado em janeiro de 2022.
Graal VM 20
GraalVM 20.3.0 foi lançado em novembro de 2020. Foi marcada como a primeira versão corporativa LTS do GraalVM e como o lançamento final para 2020. Esta versão suporta compartilhamento de código no tempo de execução GraalVM LLVM, permitindo que o AST e o código compilado de bibliotecas de bitcode comuns sejam compartilhados entre vários contextos em um único mecanismo. GraalVM 20.3.0 foi lançado em novembro de 2020. Foi marcada como a primeira versão corporativa LTS do GraalVM e como o lançamento final para 2020. Esta versão suporta compartilhamento de código no tempo de execução GraalVM LLVM, permitindo que o AST e o código compilado de bibliotecas de bitcode comuns sejam compartilhados entre vários contextos em um único mecanismo.
Graal VM 19
O suporte no Windows está atualmente em desenvolvimento e lançado como uma funcionalidade de adoção inicial no GraalVM 19.0. O GraalVM 19.0 é baseado no JDK versão 8u212.
Imagem: jimgris · BY-NC-SA · Openverse
O compilador GraalVM é enviado com os componentes de uma máquina virtual Java normal ( OpenJDK ). Componentes adicionais estão incluídos no GraalVM para suportar novos modos de execução ( GraalVM Native Image ) ou linguagens de programação ( LLVM runtime, GraalVM JavaScript como um possível substituto para o obsoleto mecanismo Nashorn, TRegex como um mecanismo de expressão regular ).
GraalVM Compiler
O GraalVM Compiler é um moderno compilador Java just-in-time . Ele complementa ou substitui os compiladores existentes (C1/C2 em HotSpot ). Em contraste com os compiladores existentes, o compilador GraalVM é escrito de maneira modular, sustentável e extensível no próprio Java. É lançado sob GPL versão 2 com a exceção de classpath .
GraalVM Native Image
GraalVM Native Image é uma tecnologia de compilação avançada que produz binários executáveis de arquivos de classe. Ele é lançado como um plug-in de adoção inicial, o que significa que está pronto para produção, mas pode incluir atualizações incompatíveis de backport em versões futuras. Esta funcionalidade suporta linguagens baseadas em JVM, mas opcionalmente pode executar linguagens dinâmicas, desenvolvidas sobre GraalVM com framework Truffle. O arquivo executável não é executado em uma JVM e usa componentes de tempo de execução necessários como agendamento de encadeamento ou GC de “Substrate VM” - uma versão trivial de uma máquina virtual. Como o binário nativo resultante já inclui classes de aplicativos, dependências JDK e bibliotecas, o tempo de inicialização e execução é reduzido significativamente.
Truffle Language Implementation Framework
Em associação com o GraalVM, o Oracle Labs desenvolveu um interpretador de árvore de sintaxe abstrata de linguagem chamado "Truffle" que permitiria a implementação de linguagens sobre o GraalVM. Muitas linguagens foram implementadas no Truffle, incluindo um interpretador C que afirma ser tão rápido quanto o GCC e o Clang . O framework Truffle e sua parte dependente, GraalVM SDK, são lançados sob a Licença Permissiva Universal, versão 1.0, para encorajar o uso do framework para projetos que não querem estar vinculados aos direitos autorais ou outros direitos dos pais.
Suporte de ferramenta baseado em instrumentação
Uma grande vantagem do ecossistema GraalVM é o suporte de instrumentação totalmente dinâmica e independente de linguagem integrada diretamente no tempo de execução da VM. Eventos de execução podem ser capturados por clientes de API com sobrecarga extremamente baixa em código totalmente otimizado. A instalação principal do GraalVM fornece um depurador independente de idioma, criador de perfil, visualizador de heap e outros com base em instrumentação e outro suporte de VM. O GraalVM também inclui uma implementação de back-end do protocolo de depuração remota do Chrome Inspector. Embora projetado originalmente para depuração de JavaScript, ele pode ser usado para depurar todas as linguagens GraalVM a partir de um navegador.
Imagem: jimgris · BY-NC-SA · Openverse
GraalVM é escrito em e para o ecossistema Java . Ele pode executar aplicações escritas em todas as linguagens que compilam no formato Java bytecode, por exemplo Java, Scala, Kotlin e muito mais. Com base na estrutura de implementação de linguagem Truffle, idiomas adicionais podem ser suportados no GraalVM. O suporte para idiomas adicionais pode ser implementado pelos usuários do GraalVM. Algumas implementações importantes para linguagem de terceiros são grCuda, SOMns, TruffleSqueak, e Yona.


