Realizzato dalla londinese Leaning Technologies, CheerpJ 3.0 dovrebbe vedere la luce entro la fine dell'estate 2023. Si tratta di un'implementazione della JVM (Java Virtual Machine) basata su due tecnologie completamente Web based come WebAssembly e HTML5. A render ancora più interessante il progetto è il supporto per i class loader e per la compilazione JIT (Just in Time).
CheerpJ cos'è e come funziona
CheerpJ 3.0 è stato pensato per riportare le applet nei browser Internet ma garantendo un livello di sicurezza più elevato. La sua esecuzione avviene totalmente lato client, senza la necessità di alcun componente lato server. Nello stesso modo non è richiesto l'accesso al codice sorgente, questo perché tutto avviene coinvolgendo direttamente bytecode Java, file .class
e .jar
.
Nonostante queste caratteristiche risultano utilizzabili diverse funzionalità avanzate di Java tra cui le classi generate a runtime, la reflection e il multithreading. La piattaforma è compatibile anche con OpenJDK in quanto è basata su un ambiente animato da quest'ultimo senza alcuna modifica al codice originale. Ciò garantisce anche il funzionamento di diversi sotto-sistemi tra cui Networking, Filesystem e Clipboard.
Nelle versioni attualmente disponibili il modello di esecuzione sfrutta un compilatore AOT (Ahead-of-time) che ha il compito di generare un file .jar.js
ottimizzato per ciascun .jar
originale dell'applicazione di riferimento. CheerpJ ha poi il compito di caricare questi file a runtime con i .jar
ad essi associati. Tale procedura dovrebbe garantire un livello di prestazioni elevato in molteplici scenari.
Con l'integrazione della compilazione JIT in CheerpJ 3.0 le performance dovrebbero essere ancora superiori rispetto ad AOT. Nel contempo l'integrazione nelle pagine HTML dovrebbe essere ancora più semplice.
Ambiti di applicazione
Come sottolineato dal team di sviluppatori che lo ha realizzato, CheerpJ dovrebbe trovare applicazione in diversi ambiti. È infatti una soluzione adatta per le implementazioni in ambito enterprise ma può essere utilizzato anche nella didattica. È disponibile infatti un JavaFiddle con il quale si può digitare ed eseguire codice Java direttamente da browser.
Data la sua architettura, CheerpJ può essere considerato un sostituto completo della JVM in WebAssembly. Il supporto JNI (Java Native Interface) permetterà di compilare codice nativo OpenJDK direttamente da WebAssembly.