Converti js in jar

Converti JS in JAR

Impacchetta JavaScript in un JAR oppure eseguilo tramite un motore JavaScript incorporato.

Come convertire js in jar file

  • Archivi

Un dispositivo o un programma basato su Java può richiedere un pacchetto .jar, mentre il sorgente disponibile è un file JavaScript .js. La soluzione corretta dipende dal fatto che sia necessario solo archiviare lo script oppure riscriverlo ed eseguirlo tramite un JavaScript engine compatibile con Java.

Cos'è il formato JS

Un file .js contiene normalmente codice sorgente JavaScript utilizzato da web browser, Node.js, Electron, applicazioni Adobe, build system o Windows Script Host. JavaScript viene eseguito in un engine come V8, SpiderMonkey, JavaScriptCore o GraalJS.

JavaScript e Java sono linguaggi diversi. Modificare .js in .jar, rinominare il file o inserirlo in un archivio ZIP non lo compila in Java class files. Gli script per browser possono inoltre dipendere da API come document e window, mentre gli script Node.js possono dipendere da require, pacchetti npm o API specifiche di Node.

Cos'è il formato JAR

Un JAR, ovvero Java ARchive, è un pacchetto basato su ZIP per Java class files, librerie, risorse e metadati. Le applicazioni e le librerie Java utilizzano i JAR perché consentono di raggruppare molti file in un unico pacchetto distribuibile, supportano la compressione e possono includere un manifest in META-INF/MANIFEST.MF. I JAR possono anche essere firmati per garantire l'integrità e verificare il publisher.

Un JAR può contenere JavaScript come risorsa ordinaria, ma un JAR contenente solo uno script non è automaticamente eseguibile. Un JAR eseguibile richiede una Java entry class compilata e una voce del manifest come Main-Class; questa classe deve quindi avviare o interpretare JavaScript.

Inserire il file JS in un JAR

Utilizzare l'utility jar inclusa in un JDK quando il requisito è semplicemente un archivio JAR contenente lo script originale.

  1. Installare un JDK come Eclipse Temurin, Oracle JDK o un'altra distribuzione compatibile; unicamente un JRE non fornisce i normali strumenti di packaging.
  2. Inserire script.js e le relative risorse in una directory del progetto, mantenendo i percorsi a cui fa riferimento lo script.
  3. Aprire un terminale nella directory del progetto ed eseguire jar --create --file app.jar script.js. Aggiungere directory o file secondo necessità, ad esempio jar --create --file app.jar script.js lib config.
  4. Controllare l'archivio con jar --list --file app.jar.

Nelle versioni precedenti del JDK, il comando equivalente è jar cf app.jar script.js. Questo processo conserva il sorgente JavaScript e lo inserisce in un pacchetto; non fa sì che java -jar app.jar esegua lo script.

Creare un wrapper Java eseguibile

Per distribuire un'applicazione Java che esegue lo script, creare un progetto Java con una launcher class. Il launcher carica script.js dal JAR, crea un contesto JavaScript engine, fornisce gli argomenti o gli host object richiesti e valuta lo script.

GraalJS può essere incorporato tramite la GraalVM Polyglot API e le relative dipendenze Java. Aggiungere le dipendenze necessarie di GraalVM SDK e JavaScript engine tramite Maven o Gradle, scrivere il launcher, compilarlo e inserire nel pacchetto la launcher class, lo script, le risorse e le dipendenze. La configurazione di GraalJS varia in base alla versione di GraalVM e delle dipendenze; utilizzare quindi le versioni delle dipendenze supportate dal runtime selezionato invece di copiare un esempio Nashorn obsoleto.

Nashorn è stato rimosso dalle distribuzioni standard del JDK a partire da JDK 15. Il codice che dipende da Nashorn deve utilizzare una distribuzione di compatibilità mantenuta separatamente oppure essere migrato a un altro engine; un JDK attuale normalmente non include Nashorn.

In IntelliJ IDEA, un'opzione ordinaria di packaging desktop è File → Project Structure → Artifacts → JAR → From modules with dependencies. Selezionare la launcher class come main class, scegliere se estrarre le dipendenze in un fat JAR o mantenerle accanto all'applicazione e compilare l'artifact. Una build Maven o Gradle è generalmente più riproducibile per i progetti con molte dipendenze. Eseguire un pacchetto configurato correttamente con java -jar app.jar.

Se il file originale è un'applicazione Node.js, mantenerlo come progetto Node.js è solitamente l'opzione tecnicamente corretta. Un wrapper Java può avviare node come processo esterno, ma il sistema di destinazione richiede comunque Node.js e il risultato non è una conversione in Java bytecode.

Opzioni online e desktop

Non esiste un convertitore online affidabile in grado di tradurre arbitrariamente JavaScript in Java classes equivalenti o in un JAR eseguibile autonomo. Gli strumenti online per gli archivi possono talvolta creare un pacchetto simile a uno ZIP, ma non possono determinare un Java entry point, installare un JavaScript engine, risolvere le dipendenze npm o del browser né verificare il comportamento a runtime.

Per un archivio non sensibile costituito da un singolo file, un creatore di ZIP online può essere utilizzabile solo se il destinatario accetta un archivio semplice e si verifica in seguito il relativo contenuto; rinominare un .zip scaricato in .jar non sostituisce la creazione tramite il JDK. Utilizzare il comando jar del JDK locale, IntelliJ IDEA, Maven o Gradle per il codice sorgente e i progetti composti da più file, evitando di caricare script proprietari su un servizio online.

Controlli di compatibilità

Testare lo script nell'esatto runtime destinato al JAR. Le variabili globali del browser non esistono in Node.js o GraalJS, i moduli Node.js non funzionano automaticamente in GraalJS e l'accesso agli host Java può richiedere una configurazione esplicita. Verificare i percorsi relativi, i permessi dei file, la codifica dei caratteri, le librerie native, l'accesso alla rete, le variabili d'ambiente e tutte le dipendenze di terze parti.

Un JAR contenente solo script.js è un archivio. Un pacchetto eseguibile richiede un Java launcher, un JavaScript engine compatibile, una voce manifest Main-Class valida e un layout delle dipendenze funzionante sul JDK di destinazione.

Confronto formato: JS vs JAR

Come i formati JS e JAR si confrontano sulle proprietà più importanti per questa conversione.

Confronto dei formati JS e JAR
Proprietà .JS JavaScript .JAR Java Archive
Standard aperto Sì Sì
Compressione Non compresso Entrambi
Dimensione tipica del file Piccolo Medio
Si apre in un browser web Sì, nativamente No
Modifica successiva Facile Limitato
Supporto metadata Base Base
Leggibile come testo semplice Sì No
Ideale per Pubblicazione web Incorporamento nelle applicazioni
Introdotto 1995 1996
Sviluppatore Netscape (originally); now standardized by Ecma International Oracle (originally Sun Microsystems)
Tipo MIME text/javascript application/java-archive

Il database attualmente non contiene alcun convertitore di file js.

Altre conversioni di file .js

Conversione inversa

Conversione in .jar
da altri formati

Condividi sui social media: