Sprievodca po jlink

1. Prehľad

jlink je nástroj, ktorý generuje vlastný runtime obraz Java, ktorý obsahuje iba moduly platformy, ktoré sú požadované pre danú aplikáciu.

Takýto runtime obrázok funguje presne ako JRE, ale obsahuje iba moduly, ktoré sme vybrali, a závislosti, ktoré musia fungovať. Koncept modulárnych runtime obrázkov bol predstavený v JEP 220.

V tomto tutoriále sa naučíme, ako vytvoriť vlastné JRE pomocou jlink, a tiež spustíme a otestujeme, či náš modul funguje správne v našom JRE.

2. Je potrebné vytvoriť vlastné JRE

Poďme na príklade pochopiť motiváciu za vlastnými runtime obrázkami.

Vytvoríme jednoduchú modulárnu aplikáciu. Ak sa chcete dozvedieť viac o vytváraní modulárnych aplikácií, prečítajte si náš článok o modulárnosti.

Najskôr vytvorme a HelloWorld trieda a zodpovedajúci modul:

public class HelloWorld {private static final Logger LOG = Logger.getLogger (HelloWorld.class.getName ()); public static void main (String [] args) {LOG.info ("Hello World!"); }}
modul jlinkModule {vyžaduje java.logging; }

Na spustenie tohto programu nám stačí HelloWorld,String, Loggera Objekt triedy.

Aj keď tento program potrebuje na spustenie iba štyri triedy, vykonajú sa aj všetky preddefinované triedy v JRE, aj keď ich náš program nevyžaduje.

Preto, aby sme spustili malý program, musíme udržiavať úplné JRE, čo je jednoducho strata pamäti.

Náš príklad je teda prispôsobeným JRE.

S jlink, môžeme vytvoriť naše vlastné malé JRE, ktoré obsahuje iba príslušné triedy, ktoré chceme používať, bez plytvania pamäťou, a vo výsledku uvidíme zvýšený výkon.

3. Vytváranie vlastných runtime obrázkov Java

Vykonáme sériu jednoduchých krokov k vytvoreniu vlastných obrázkov JRE.

3.1. Zostavenie modulu

Najskôr si z príkazového riadku zostavíme vyššie uvedený program:

javac -d out modul-info.java
javac -d out --module-path out com \ baeldung \ jlink \ HelloWorld.java

Teraz spustíme program:

java --module-path out --module jlinkModule / com.baeldung.jlink.HelloWorld

Výstupom bude:

13. marca 2019 10:15:40 com.baeldung.jlink.HelloWorld hlavné INFO: Hello World!

3.2. Použitím jdeps do zoznamu závislých modulov

Aby bolo možné použiť jlink, musíme poznať zoznam modulov JDK, ktoré aplikácia používa a ktoré by sme mali zahrnúť do nášho vlastného JRE.

Použime jdeps príkaz na získanie závislých modulov použitých v aplikácii:

jdeps --module-cesta von -s --module jlinkModule

Výstupom bude:

jlinkModule -> java.base jlinkModule -> java.logging

To dáva zmysel, ako java.base je minimálny modul potrebný pre knižnice kódov Java a java.logovanie je používaný záznamníkom v našom programe.

3.3. Vytvorenie vlastného JRE pomocou jlink

Na vytvorenie vlastného JRE pre modulovú aplikáciu môžeme použiť jlink príkaz. Tu je jeho základná syntax:

jlink [možnosti] –module-path modulepath –add-modules modul [, modul…] ​​- výstup 

Teraz poďme vytvorte vlastné JRE pre náš program pomocou Java 11:

jlink --module-path "% JAVA_HOME% \ jmods"; out --add-modules jlinkModule --output customjre

Tu hodnota po –Pridat moduly parameter hovorí jlink ktorý modul zahrnúť do JRE.

Nakoniec customjre vedľa -výkon parameter definuje cieľový adresár, kde by sa malo vygenerovať naše vlastné JRE.

Upozorňujeme, že na vykonanie všetkých príkazov v tomto výučbe používame shell systému Windows. Používatelia systémov Linux a Mac ich možno budú musieť mierne upraviť.

3.4. Spustenie aplikácie s vygenerovaným obrázkom

Teraz máme naše vlastné JRE vytvorené používateľom jlink.

Aby sme otestovali naše JRE, skúsme spustiť náš modul navigáciou vo vnútri kôš priečinok nášho customjre adresár a spustite príkaz nižšie:

java --module jlinkModule / com.baeldung.jlink.HelloWorld

Opäť platí, že shell systému Windows, ktorý používame, hľadá v aktuálnom adresári akýkoľvek spustiteľný súbor, až potom prejde na cestu PATH. Musíme venovať osobitnú pozornosť tomu, aby sme skutočne spustili naše vlastné JRE, a nie java vyriešené proti PATH, keď sme na Linuxe alebo Macu.

4. Vytvorenie vlastného JRE pomocou skriptov Launcher

Voliteľne môžeme tiež vytvoriť vlastné JRE so spustiteľným súborom launcher skriptov.

Na to musíme spustiť jlink príkaz, ktorý má navyše –Spúšťač parameter na vytvorenie nášho launchera s našim modulom a hlavnou triedou:

jlink --launcher customjrelauncher = jlinkModule / com.baeldung.jlink.HelloWorld --module-path "% JAVA_HOME% \ jmods"; out --add-modules jlinkModule --output customjre

Takto sa vygenerujú dva skripty: customjrelauncher.bat a customjrelauncher vo vnútri nášho customjre / bin adresár.

Spustíme skript:

customjrelauncher.bat

A výstup bude:

18. marca 2019 0:34:21 com.baeldung.jlink.HelloWorld hlavné INFO: Hello World!

5. Záver

V tomto tutoriáli sme sa naučili, ako môžeme vytvoriť vlastné modulárne JRE pomocou jlink ktorý obsahuje iba nevyhnutné minimum súborov potrebných pre náš modul. Pozreli sme sa tiež na to, ako vytvoriť vlastné JRE pomocou spúšťacích skriptov, ktoré je možné ľahko spustiť a odoslať.

Špeciálne modulárne runtime obrázky Java sú výkonné. Ciele pre vytvorenie vlastných JRE sú jasné: šetria pamäť, zlepšujú výkon a tiež zvyšujú bezpečnosť a udržiavateľnosť. Ľahké prispôsobené objekty JRE nám tiež umožňujú vytvárať škálovateľné aplikácie pre malé zariadenia.

Útržky kódu použité v tejto príručke sú k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found