fbpx

GraalVM: IL SANTO GRAAL DELLE VIRTUAL MACHINE

INSIGHT

GraalVM: IL SANTO GRAAL DELLE VIRTUAL MACHINE

Con un nome così pretenzioso, Oracle presenta quello che ritiene il Santo Graal delle Virtual Machine.
Ma di che si tratta?
GraalVM è un ecosistema basato su JDK 8 (Java Development Kit 8), che include una Universal Virtual Machine con runtime condiviso.

E cosa farebbe di così speciale? GraalVM esegue applicazioni poliglotte utilizzando un mix dei punti di forza dei vari linguaggi di programmazione supportati. Potremmo avere, ad esempio, una web application come “Weather predictor” dove JavaScript, Ruby e R lavorano insieme senza alcun compromesso e con prestazioni molto elevate.

Allo stato attuale, i linguaggi supportati sono JavaScript, Python, Ruby, R, linguaggi JVM-based come Java, Scala, Kotlin, e linguaggi LLVM-based come C e C++.

Essendo un ecosistema, GraalVM è un insieme di componenti, ognuno con la propria funzione specifica:

usare graalvm

Graal

Un compilatore JIT (Just In Time) dinamico che migliora l’efficienza e la velocità delle applicazioni.

usare graalvm

API Graal Polyglot

API per combinare i linguaggi di programmazione in un runtime condiviso.

usare graalvm

Graal SDK

API utili per l’integrazione di linguaggi Graal e la configurazione di immagini native.

usare graalvm

JVM Oracle HotSpot

Ambiente di runtime per linguaggi basati su JVM.

LE FUNZIONALITÀ DI GraalVM

La soluzione di Oracle fornisce, oltre alla possibilità di eseguire applicazioni poliglotte, nuove prospettive sull’elaborazione dei dati contenuti all’interno dei database Oracle 12c e MySQL.
Sfruttando il MLE (Multilingual Engine) del database, è infatti possibile eseguire moduli Node.js scritti in JavaScript all’interno di query e procedure dei due db.

GraalVM è anche in grado di rendere le applicazioni Java più veloci con una nuova tecnologia di compilazione just in time, e cosa non da poco, compilare il bytecode Java in codice macchina.

Al suo interno ha infatti una funzione per creare immagini native per le applicazioni esistenti basate su JVM. Il processo di generazione dell’immagine utilizza l’analisi statica per trovare qualsiasi codice raggiungibile dal metodo Java principale e quindi eseguire la compilazione AOT (Ahead Of Time).

Il binario nativo che ne risulta contiene l’intero programma sotto forma di codice macchina per la sua immediata esecuzione.
Tali funzionalità permettono di creare una Native Java Function, come descritto in questo tutorial. Oppure si può collegare ad altri programmi nativi e includere il compilatore in maniera facoltativa.

GraalVM può anche eseguire applicazioni JavaScript scritte per Node.js, sostituendo V8 (il JavaScript engine di Google usato anche da Node.js). I principali vantaggi di tale operazione sono ovviamente nelle applicazioni poliglotte (ad esempio, utilizzare librerie Java, R o Python), oppure nell’eseguire processi con configurazioni di heap di grandi dimensioni e garbage collector Java, oppure, non da ultimo, utilizzare l’interoperabilità di GraalVM per definire le strutture di dati in C / C ++ da condividere con JavaScript. Queste caratteristiche consentono l’uso di librerie Java esistenti o framework Java, come Spark, da parte di processi Node.js. Inoltre, si può usare ad esempio R o Python per effettuare data science direttamente da un’applicazione JavaScript.

I 3 FILONI DI APPLICAZIONE IN INTERLOGICA

Attualmente in Interlogica stiamo testando le potenzialità di questa tecnologia in tre filoni principali, considerando anche il fatto che Twitter sta già usando GraalVM in produzione, con ottimi risultati, a quanto affermano.

  1. Il primo filone riguarda l’ottimizzazione nell’utilizzo delle risorse e l’aumento delle prestazioni da parte di applicazioni Java esistenti;
  2. il secondo la creazione di soluzioni poliglotte, andando ad utilizzare al meglio i punti di forza di ogni linguaggio, in particolar modo in ambiti come data science e machine learning, dove Python sta facendo la parte del leone, ma C / C++ continuano ad avere le prestazioni migliori;
  3. terzo la possibilità di creare codice macchina per la sua immediata esecuzione all’interno di dispositivi embedded ed IoT (Internet of Things), dove le risorse sono minori ed è essenziale che il codice sia minimo, sia rispetto all’occupazione di memoria, sia rispetto al tempo di esecuzione.

GraalVM presenta ancora alcuni errori di gioventù, ma del tutto comprensibili visto che la versione 1.0 si trova ancora in release candidate.

Le potenzialitá di questo prodotto rimangono comunque alte, ed aprono nuovi scenari nello sviluppo di una moltitudine di soluzioni software.

2018-08-29T15:32:42+00:00 Scritto da |Categories: Insight|Tags: , |

About the Author:

ULTIMI ARTICOLI

Scritto da | novembre 30, 2018|

ENTERPRISE SERVICE BUS: COME UTILIZZARLO

Leggi di più

Scritto da | novembre 26, 2018|

WEB SUMMIT 2018

Leggi di più

Scritto da | novembre 13, 2018|

ALVISE, TU CI FAI RESTARE UMANI

Leggi di più