GraalVM, una máquina virtual políglota que proporciona un tiempo de ejecución compartido para ejecutar aplicaciones escritas en múltiples lenguajes como Java, C, Python y JavaScript, ha lanzado la versión 19.3 con soporte para JDK 11. Las versiones anteriores de GraalVM se basaban en JDK 8.
Las numerosas funciones de lenguaje y mejoras de plataforma como cadenas compactas, inferencia de tipo variable, Java Platform Module System (JPMS) y cliente HTTP, que se entregaron entre la versión Java 9 y la versión Java 11 ahora pueden ser utilizadas por aplicaciones JVM creadas en GraalVM.
Por ejemplo, el siguiente fragmento muestra cómo se puede construir e invocar una solicitud simple a una API REST de bitcoin utilizando el nuevo cliente HTTP Java 11:
public class BPI {
public static void main(String... args) {
var request = HttpRequest
.newBuilder()
.uri(URI.create("https://api.coindesk.com/v1/bpi/currentprice.json"))
.GET()
.build();
var response = HttpClient
.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofInputStream());
var json = Json
.createReader(response.body())
.readObject()
.getJsonObject("bpi");
…
System.out.printf("Current Bitcoin Price: $%s %s", price, indicator);
}
}
Con JAVA_HOME y PATH apuntando a una instalación de GraalVM, las clases basadas en Java 11 como la clase de ejemplo anterior se pueden compilar utilizando el compilador javac o una herramienta de compilación como Maven.
La utilidad de generación de imágenes nativas de GraalVM también se ha actualizado para admitir Java 11 como una característica de tecnología. Una imagen nativa es un código de bytes Java compilado con anticipación empaquetado como un ejecutable independiente. La imagen nativa generalmente logra un tiempo de inicio más rápido. La imagen nativa no es compatible con Java Platform Module System y no tiene introspección de módulo en tiempo de ejecución de imagen. La utilidad de imagen nativa es un paquete opcional que se puede instalar usando el Actualizador GraalVM, gu. gu es un administrador de paquetes que descarga e instala paquetes no incluidos en la distribución principal de GraalVM.
Para aquellos que usan Maven como herramienta de compilación, se proporciona un complemento Maven para ayudar en el proceso de generación de imágenes.
También tenga en cuenta que dado que el recolector de basura Garbage-First (G1) es el recolector de basura predeterminado en Java 11, se debe tener cuidado al migrar aplicaciones sensibles al rendimiento de GraalVM basado en JDK 8 a GraalVM basado en JDK 11.
Además del soporte para JDK 11, esta primera versión de soporte a largo plazo (LTS) de GraalVM proporciona mejoras en la generación de imágenes nativas, el compilador GraalVM, herramientas como cobertura de código y GraalVM VisualVM junto con actualizaciones en tiempo de ejecución de los lenguajes NodeJS, Python y R.
Dejo link: https://www.graalvm.org/