Començando com a GraalVM utilizando Java, Javascript e NodeJs.

Hoje vamos iniciar os primeiros passos com a maquina virtual poliglota desenvolvida pela Oracle. Sim, estamos falando da famosa GraalVM.

Na matéria de hoje, focaremos na instalação da GraalVM, no momento da publicação dessa matéria, a versão é a 20.0.0 baseada no JDK 11. Além de executar códigos Java, Javascript e subir um servidor em NodeJs, tudo isso com a GraalVM.

A poucas semana falamos um pouco sobre essa maquina virtual e o lançamento da sua versão 20.0.0. De qualquer modo vamos recapitular um pouco sobre.

O que é a GraalVM?

A GraalVM é uma máquina virtual universal Open Source criada pela Oracle que executa aplicativos escritos em JavaScript, Python, Ruby, R, linguagens que já rodam na JVM, como Java, Scala, Groovy, Kotlin, Clojure e linguagens baseadas em LLVM, como C e C ++.

A GraalVM remove o isolamento entre linguagens de programação e permite a interoperabilidade em um tempo de execução compartilhado. As imagens podem ser executadas standalone ou nos contextos do OpenJDK, Node.js ou Oracle Database. Essa interoperabilidade permite desenvolver em java e acessar funcionalidades de outras linguagens.

Instalação da GraalVM.

Para realizar o download e instalar a GraalVM, vamos utilizar um gerenciador de pacotes. Como estou no Windows 10, vou utilizar o Chocolatey.

Para realizar o download e instalação do Chocolatey, acesse esse link.

Para fazer instalação da GraalVM com o Chocolatey basta executarmos no terminal o comando:


>choco install graalvm

Automaticamente o Chocolatey já cria as variáveis de ambiente Path e o java_home. Caso já tenha um JDK instalado, ele ira sobrepor o java_home, mas duplicar o path, desse forma preste atenção nisso.

Apenas para auxiliar, minhas variáveis de ambiente ficaram conforme tabela abaixo:

Variável de ambiente Valor
JAVA_HOME C:\Program Files\GraalVM\graalvm-ce-java11-20.0.0
Path C:\Program Files\GraalVM\graalvm-ce-java11-20.0.0\bin

Após verificar e ajustar suas variáveis de ambiente, reinicie seu terminal e execute o comando java –version.

A instalação será parecida nos demais sistemas operacionais, mas de uma googlada antes de começar. De qualquer modo, há a possibilidade de utilizar um container Docker e subir uma imagem da GraalVM.

Utilizando a GraalVM com Docker.

Para isso use o comando docker pull:

>docker pull oracle/graalvm-ce:20.0.0

E realize o Start do container com o docker run com bash:

>docker run -it oracle/graalvm-ce:20.0.0 bash

Apresentada essa forma, vamos partir para o código.

Executando Javascript com a GraalVM.

Para executar códigos javascript, basta escrever no terminal “js” seguido de um enter. Feito isso você já pode dar “printar” um Hello World, ou melhor, Hello Home devido a quarentena, direto na linha de comando conforme exemplo abaixo:

Executando Java com a GraalVM.

Como de costume utilizaremos o famoso “javac” para compilar as classes java e o comando “java” para executar. Crie um arquivo HelloHome.java conforme código abaixo:

public class HelloHome {
    public static void main(String[] args) {
      System.out.println("Hello Home! Estamos em quarentena!");
    }
  }

Compile e o execute no terminal:

Subindo um servidor com NodeJS.

Primeiramente, vamos criar um workspace e acessa-lo com o terminal. Apenas para auxílio, criei da seguinte forma abaixo:

Execute o comando “npm init” para a criação do package.json. Serão questionados alguns parâmetros, por hora, apenas pressione enter até finalizar os questionamentos.

>npm init

Instale com o npm os módulos colors e ansispan que serão registrados no package.json:

>npm install colors ansispan

Ao final, seu workspace terá os arquivos abaixo:

Com um editor de texto, crie um arquivo app.js com o script abaixo e salve no mesmo workspace, junto dos arquivos de configuração que acabamos de criar.

const http = require("http");
const span = require("ansispan");
require("colors");

http.createServer(function (request, response) {
    response.writeHead(200, {"Content-Type": "text/html"});
    response.end(span("Hello Graal.js! Estamos em quarentena".green));
}).listen(8000, function() { console.log("Graal.js server running at http://127.0.0.1:8000/".red); });

De volta ao terminal, execute o arquivo app.js com a GraalVM utilizando o comando node.

>node app.js

Agora com o navegador, acesse seu localhost:

Caso queira derrubar o servidor, na linha de comando pressione Ctrl + c.

Epilogo

Conforme prometido, nessa matéria abordamos a instalação da GraalVM e executamos códigos Java, Javascript além de subir um servidor em NodeJs, tudo isso com a GraalVM.

Não houve nenhum mistério para essas atividades básicas. Caso queira saber mais sobre a versão 20.0.0, falei um pouco nessa matéria.

Muito obrigado e até a próxima.

Lançado a versão 20.0.0 da GraalVM

Nessa terça feira dia 18/02/20, a equipe da GraalVM disponibilizou sua versão 20.0.0. Plataforma Poliglota, que compila seus programas em imagens nativas reduzindo drasticamente o tempo de start e o consumo de memória.

O que é a GraalVM?

A GraalVM é uma máquina virtual universal Open Source criada pela Oracle, que executa aplicativos escritos em JavaScript, Python, Ruby, R, linguagens que já rodam na JVM, como Java, Scala, Groovy, Kotlin, Clojure e linguagens baseadas em LLVM, como C e C ++.

A GraalVM remove o isolamento entre linguagens de programação e permite a interoperabilidade em um tempo de execução compartilhado. As imagens podem ser executadas standalone ou nos contextos do OpenJDK, Node.js ou Oracle Database. Essa interoperabilidade permite desenvolver em java e acessar funcionalidades de outras linguagens.

Abaixo, gráficos de tempo de start e utilização inicial de memória das imagens nativas compiladas pela GraalVM. Os programas foram desenvolvidos respectivamente com os frameworks voltados para microserviços Helidon, Micronaut e Quarkus.

Tempo de start de microserviços Java
Memória utilizada inicialmente com microserviços Java

O que mudou nessa nova versão?

A versão 20 aprimora significativamente os builds da GrallVM para plataforma Microsoft. O suporte permanece experimental, no entanto, as compilações realizadas no Windows, agora contêm o “gu”, que é um utilitário funcional para instalar os componentes. A Engine do JavaScript e o Node.js foram incluídas na distribuição voltada para Windows. O engine JavaScript foi atualizada e agora é compatível com Node.js 12.15.0. O toolchain agora é baseado na versão 9.0.0 do interpretador LLVM suportando novas libs.

Mais sobre a GraalVM

A GraalVM foi apresentada pela Oracle no meio de Abril de 2018 e a sua versão 1.0 foi lançada para Linux e Mac. Como dito anteriormente, já há a versão para plataforma windows, mas com suporte experimental.
Na versão atual, a Community Edition GraalVM é baseada no OpenJDK 1.8.0_242 e no OpenJDK 11.0.6. Já a Enterprise Edition é baseado no 1.8.0_241 e 11.0.6 do JDK.

Caso queira saber mais e começar a utilizar, acesse https://www.graalvm.org/