Learn · concepts
Cosa sono gli script JavaScript di GraalVM?
GraalVM JavaScript è un motore JS veloce che funziona sulla JVM. Permette alle app Java di incorporare JavaScript, consentendo agli utenti di scriptare funzionalità e ricaricarle istantaneamente.
Cos'è GraalVM JavaScript?
GraalVM JavaScript è un motore JavaScript veloce e conforme agli standard che funziona sulla JVM, parte del progetto GraalVM. Le applicazioni Java lo integrano per consentire agli utenti di scrivere JavaScript che richiama il programma host e si ricarica al volo. In un'applicazione Java, ciò significa aggiungere o modificare il comportamento in JavaScript senza ricompilare il codice Java.
Immaginatelo come una sandbox per aggiungere funzionalità. L'applicazione espone determinati oggetti e metodi a uno script, e lo script chiama tali metodi per svolgere il lavoro all'interno dell'app. Quando si modifica lo script e lo si salva, il motore lo ricarica immediatamente, senza riavvio richiesto
Perché le app integrano motori di scripting
Applicazioni come i client di Minecraft integrano motori JavaScript per diverse ragioni pratiche:
- Hot reload: modifica uno script e osserva l'effetto senza riavviare o ricostruire.
- Un ambiente sicuro: l'host decide esattamente quali oggetti e classi Java uno script può raggiungere.
- Iterazione rapida: testa nuovi comportamenti in secondi invece che in minuti di tempo di compilazione.
- Personalizzazione da parte dell'utente: consenti ai giocatori di scrivere le proprie funzionalità in un linguaggio familiare
Come si manifesta in un cliente
Un cliente che integra GraalVM JavaScript di solito fornisce agli script un punto di ingresso per la registrazione, quindi un piccolo set di oggetti proxy che fungono da ponte tra JavaScript e gli interni del programma. Gli utenti scrivono uno script, lo inseriscono in una cartella di script e il motore lo carica. In questo modo, un cliente può consentire agli utenti di aggiungere funzionalità in JavaScript invece di compilare una mod.
GraalVM JavaScript vs Node.js
| Aspetto | GraalVM JavaScript | Node.js |
|---|---|---|
| Runtime | Esegue sulla JVM | Runtime autonomo basato su V8 |
| Caso d'uso | Incorporato in applicazioni Java | JavaScript lato server o strumenti CLI |
| Avvio | Parte del processo host | Processo separato |
| Accesso | L'host espone oggetti specifici | Accesso completo al sistema operativo |
| Performance | Compilato JIT, molto veloce | Anch'esso molto veloce, compromessi diversi |
Entrambi sono eccellenti nell'esecuzione di JavaScript; sono semplicemente progettati per contesti diversi. GraalVM è la scelta giusta quando si desidera che un'applicazione Java consenta agli utenti di scrivere script in JavaScript.
FAQ
No. Entrambi eseguono JavaScript, ma il motore di GraalVM è progettato per essere incorporato all'interno di un'applicazione JVM, mentre Node.js è un runtime autonomo basato su V8.
Non di solito. Si scrive JavaScript contro gli oggetti esposti dall'app host. Conoscere a cosa corrispondono quegli oggetti aiuta per un uso avanzato, ma gli script di base richiedono solo JavaScript.
Velocità di iterazione. Uno script si ricarica istantaneamente, mentre una mod compilata deve essere ricostruita e rilanciata. Per testare rapidamente nuove funzionalità o per l'automazione personale, la scrittura di script è molto più veloce.
Sì, l'applicazione host decide esattamente quali oggetti e classi uno script può raggiungere. Un client può esporre lo stato del gioco, i dati del giocatore e altre informazioni interne tramite tali oggetti proxy.