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:

Graal
Un compilatore JIT (Just In Time) dinamico che migliora l’efficienza e la velocità delle applicazioni.
API Graal Polyglot
API per combinare i linguaggi di programmazione in un runtime condiviso.
Graal SDK
API utili per l’integrazione di linguaggi Graal e la configurazione di immagini native.
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.

TI È PIACIUTO QUESTO ARTICOLO? LEGGI ANCHE:

Autenticazione: SCRAM-SHA256 feat. DH Key Exchange
8 modi per prevenire un attacco Ransomware

Blog

UN NUOVO ATTERRAGGIO: BENVENUTO NUOVO BRAND

UN NUOVO ATTERRAGGIO: BENVENUTO NUOVO BRAND

PRONTI AD ANDARE SU MARTE? È da molto tempo che ci lavoriamo. Ma come dire, ora era proprio il momento giusto.Eccolo, il nostro nuovo marchio, che giunge al culmine di un lungo lavoro compiuto sull’identità del brand. Questo indirizzo rinnovato riflette il fatto...

MISSION E VISION: COME DEFINIRLE? IL NOSTRO VIAGGIO

MISSION E VISION: COME DEFINIRLE? IL NOSTRO VIAGGIO

VIVI I VALORI CHE VUOI PROMUOVERE – Cluetrain Manifesto, nuova edizione, Tesi n°114 È da un po’ che non scrivo un articolo a mia voce. Perché, mi domando. Sarà che con il tempo non mi è più scattata l’urgenza di esprimermi in prima persona.Ora voglio riprendere la...