Převod souboru JS do JAR
Zabalte JavaScript do souboru JAR nebo jej spusťte prostřednictvím vestavěného JavaScript engine.
Jak převést soubor js do formátu jar
- Komprimované soubory
- Dosud nehodnoceno.
Zařízení nebo program založený na Java může vyžadovat balíček .jar, zatímco dostupný zdrojový kód je soubor JavaScript .js. Správné řešení závisí na tom, zda potřebujete skript pouze archivovat, nebo jej potřebujete přepsat a spouštět pomocí Java-kompatibilního JavaScript engine.
Co je formát JS
Soubor .js běžně obsahuje zdrojový kód JavaScript používaný webovými prohlížeči, Node.js, Electron, aplikacemi Adobe, build systémy nebo Windows Script Host. JavaScript běží v engine, jako jsou V8, SpiderMonkey, JavaScriptCore nebo GraalJS.
JavaScript a Java jsou různé jazyky. Změna .js na .jar, přejmenování souboru ani jeho vložení do ZIP archivu jej nezkompiluje do Java class souborů. Skripty pro prohlížeč mohou také záviset na API, jako jsou document a window, zatímco skripty Node.js mohou záviset na require, balíčcích npm nebo API specifických pro Node.
Co je formát JAR
JAR neboli Java ARchive je balíček založený na ZIP pro Java class soubory, knihovny, prostředky a metadata. Java aplikace a knihovny používají JAR, protože umožňuje seskupit mnoho souborů do jednoho distribuovatelného balíčku, podporuje kompresi a může obsahovat manifest v umístění META-INF/MANIFEST.MF. JAR lze také podepsat pro ověření integrity a vydavatele.
JAR může obsahovat JavaScript jako běžný prostředek, ale JAR obsahující pouze skript není automaticky spustitelný. Spustitelný JAR potřebuje zkompilovanou Java entry class a položku manifestu, jako je Main-Class; tato class pak musí JavaScript spustit nebo interpretovat.
Zabalení souboru JS do JAR
Pokud je požadavkem pouze JAR archiv obsahující původní skript, použijte nástroj jar dodávaný s JDK.
- Nainstalujte JDK, například Eclipse Temurin, Oracle JDK nebo jinou kompatibilní distribuci; samotný JRE neposkytuje běžné nástroje pro vytváření balíčků.
- Vložte
script.jsa jeho prostředky do adresáře projektu a zachovejte cesty odkazované skriptem. - Otevřete terminál v adresáři projektu a spusťte
jar --create --file app.jar script.js. Podle potřeby přidejte adresáře nebo soubory, napříkladjar --create --file app.jar script.js lib config. - Ověřte archiv pomocí
jar --list --file app.jar.
Ve starších verzích JDK je ekvivalentním příkazem jar cf app.jar script.js. Tento proces zachová zdrojový kód JavaScript a zabalí jej; nezpůsobí však, že java -jar app.jar skript spustí.
Vytvoření spustitelného Java wrapperu
Chcete-li distribuovat Java aplikaci, která spouští skript, vytvořte Java projekt s launcher class. Launcher načte script.js z JAR, vytvoří kontext JavaScript engine, poskytne požadované argumenty nebo host objects a skript vyhodnotí.
GraalJS lze vložit prostřednictvím GraalVM Polyglot API a jeho Java dependencies. Přidejte požadované závislosti GraalVM SDK a JavaScript engine prostřednictvím Maven nebo Gradle, napište launcher, zkompilujte jej a zabalte launcher class, skript, prostředky a dependencies. Nastavení GraalJS se liší podle verze GraalVM a dependencies, proto použijte verze dependencies podporované vybraným runtime, místo abyste kopírovali zastaralý příklad s Nashorn.
Nashorn byl od JDK 15 odstraněn ze standardních distribucí JDK. Kód závislý na Nashorn musí používat samostatně udržovanou compatibility distribution nebo být migrován na jiný engine; aktuální JDK Nashorn běžně neposkytuje.
V IntelliJ IDEA je běžnou možností vytvoření desktopového balíčku File → Project Structure → Artifacts → JAR → From modules with dependencies. Vyberte launcher class jako main class, zvolte, zda se dependencies mají extrahovat do fat JAR, nebo zůstat vedle aplikace, a sestavte artifact. Build pomocí Maven nebo Gradle je u projektů s velkým množstvím dependencies obvykle lépe reprodukovatelný. Správně nakonfigurovaný balíček spusťte pomocí java -jar app.jar.
Pokud je původní soubor aplikací Node.js, je obvykle technicky správnou volbou ponechat jej jako projekt Node.js. Java wrapper může spustit node jako externí proces, cílový systém však stále potřebuje Node.js a výsledkem není převod do Java bytecode.
Online a desktopové možnosti
Neexistuje žádný důvěryhodný online converter, který by libovolný JavaScript spolehlivě přeložil do ekvivalentních Java classes nebo samostatného spustitelného JAR. Online nástroje pro archivaci mohou někdy vytvořit balíček podobný ZIP, nemohou však odvodit Java entry point, nainstalovat JavaScript engine, vyřešit dependencies npm nebo prohlížeče ani otestovat chování za běhu.
U necitlivého archivu s jediným souborem může být online ZIP creator použitelný pouze v případě, že příjemce akceptuje běžný archiv a jeho obsah následně ověříte; přejmenování staženého .zip na .jar není náhradou za vytvoření archivu pomocí JDK. Pro zdrojový kód a projekty s více soubory použijte lokální příkaz JDK jar, IntelliJ IDEA, Maven nebo Gradle a nenahrávejte proprietární skripty do online služby.
Kontroly kompatibility
Otestujte skript v přesném runtime určeném pro JAR. Globální objekty prohlížeče neexistují v Node.js ani GraalJS, moduly Node.js nefungují automaticky v GraalJS a přístup k Java host objects může vyžadovat explicitní konfiguraci. Ověřte relativní cesty, oprávnění k souborům, kódování znaků, nativní knihovny, přístup k síti, proměnné prostředí a všechny dependencies třetích stran.
JAR obsahující pouze script.js je archiv. Spustitelný balíček vyžaduje Java launcher, kompatibilní JavaScript engine, platnou položku manifestu Main-Class a rozložení dependencies, které funguje v cílovém JDK.
JS vs JAR: srovnání formátů
Jak si formáty JS a JAR stojí v nejdůležitějších vlastnostech pro tento převod.
| Vlastnost | .JS JavaScript | .JAR Java Archive |
|---|---|---|
| Otevřený standard | Ano | Ano |
| Komprese | Bez komprese | Obojí |
| Typická velikost souboru | Malé | Střední |
| Otevírá se ve webovém prohlížeči | Ano, nativně | Ne |
| Další úpravy | Snadné | Omezeně |
| Podpora metadat | Základní | Základní |
| Čitelný jako prostý text | Ano | Ne |
| Nejvhodnější pro | Webové publikování | Vkládání do aplikací |
| Zavedeno | 1995 | 1996 |
| Vývojář | Netscape (originally); now standardized by Ecma International | Oracle (originally Sun Microsystems) |
| MIME typ | text/javascript | application/java-archive |
Databáze v současné době neobsahuje žádný program na konverzi souborů js.