Vodič za jlink

1. Pregled

jlink je alat koji generira prilagođenu izvršnu sliku Java koja sadrži samo module platforme koji su potrebni za određenu aplikaciju.

Takva runtime slika djeluje točno kao JRE, ali sadrži samo module koje smo odabrali i ovisnosti koje su im potrebne za funkcioniranje. Koncept modularnih runtime slika predstavljen je u JEP 220.

U ovom uputstvu naučit ćemo kako stvoriti prilagođeni JRE pomoću jlink, a mi ćemo također pokrenuti i testirati da naš modul ispravno funkcionira unutar našeg JRE-a.

2. Treba stvoriti prilagođeni JRE

Shvatimo na primjeru motivaciju iza prilagođenih runtime slika.

Stvorit ćemo jednostavnu modularnu aplikaciju. Da biste saznali više o stvaranju modularnih aplikacija, pogledajte naš članak o modularnosti.

Prvo, izradimo a Pozdrav svijete klase i pripadajući modul:

javna klasa HelloWorld {privatni statički konačni zapisnik LOG = Logger.getLogger (HelloWorld.class.getName ()); javna statička void glavna (String [] args) {LOG.info ("Hello World!"); }}
modul jlinkModule {zahtijeva java.logging; }

Da bismo pokrenuli ovaj program, trebamo samo Pozdrav svijete,Niz, Drvosječa, i Objekt razreda.

Iako ovom programu trebaju samo četiri klase, sve unaprijed definirane klase u JRE-u također se izvršavaju, čak i ako ih naš program ne zahtijeva.

Stoga, da bismo pokrenuli mali program, moramo održavati cjeloviti JRE, što je jednostavno gubljenje memorije.

Dakle, prilagođeni JRE je najbolja opcija za pokretanje našeg primjera.

S jlink, možemo stvoriti vlastiti mali JRE koji sadrži samo relevantne klase koje želimo koristiti, bez gubljenja memorije, a kao rezultat vidjet ćemo povećane performanse.

3. Izrada prilagođenih Java Runtime slika

Izvest ćemo niz jednostavnih koraka za stvaranje prilagođenih JRE slika.

3.1. Sastavljanje modula

Prvo, kompajlirajmo gore spomenuti program iz naredbenog retka:

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

A sad, pokrenimo program:

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

Izlaz će biti:

13. ožujka 2019. 10:15:40 com.baeldung.jlink.HelloWorld main INFO: Hello World!

3.2. Koristeći jdeps za popis ovisnih modula

Da bi se koristila jlink, moramo znati popis JDK modula koje aplikacija koristi i koje bismo trebali uključiti u naš prilagođeni JRE.

Iskoristimo jdeps naredba za dobivanje ovisnih modula koji se koriste u aplikaciji:

jdeps --module-path out -s --module jlinkModule

Izlaz će biti:

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

To ima smisla, kao java.baza je minimalni modul potreban za knjižnice Java koda i java.dnevnik koristi zapisničar u našem programu.

3.3. Izrada prilagođenog JRE sa jlink

Da bismo stvorili prilagođeni JRE za aplikaciju koja se temelji na modulu, možemo koristiti jlink naredba. Evo njegove osnovne sintakse:

jlink [opcije] –module-path modulepath –add-modules module [, module…] - izlaz 

Ajmo sad stvorite prilagođeni JRE za naš program koristeći Javu 11:

jlink --module-put "% JAVA_HOME% \ jmods"; van --add-moduli jlinkModule --izlaz customjre

Ovdje je vrijednost nakon –Add-moduli parametar govori jlink koji modul uključiti u JRE.

Napokon, customjre pored -izlaz parametar definira ciljni direktorij u kojem treba generirati naš prilagođeni JRE.

Napomena: Koristimo Windows ljusku za izvršavanje svih naredbi u ovom vodiču. Korisnici Linuxa i Maca možda će ih morati malo prilagoditi.

3.4. Pokretanje aplikacije s generiranom slikom

Sada imamo svoj prilagođeni JRE koji je stvorio jlink.

Da bismo testirali naš JRE, pokušajmo pokrenuti naš modul navigacijom unutar kanta za smeće mapa našeg customjre direktorija i pokrenite naredbu ispod:

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

Opet, Windows ljuska koju koristimo traži u trenutnom direktoriju bilo koju izvršnu datoteku prije nego što nastavi na PATH. Moramo obratiti dodatnu pažnju kako bismo zapravo pokrenuli naš prilagođeni JRE, a ne Java razriješen protiv PATH-a kada smo na Linuxu ili Macu.

4. Stvaranje prilagođenog JRE sa pokretačkim skriptama

Po želji, možemo stvoriti i prilagođeni JRE s izvršnom datotekom lanser skripte.

Za to moramo pokrenuti jlink naredba koja ima ekstra –Pokretač parametar za stvaranje našeg pokretača s našim modulom i glavnom klasom:

jlink --launcher customjrelauncher = jlinkModule / com.baeldung.jlink.HelloWorld --module-path "% JAVA_HOME% \ jmods"; van --add-moduli jlinkModule --izlaz customjre

Ovo će generirati dvije skripte: customjrelauncher.bat i customjrelauncher unutar našeg customjre / bin imenik.

Pokrenimo skriptu:

customjrelauncher.bat

A izlaz će biti:

18. ožujka 2019. 00:34:21 com.baeldung.jlink.HelloWorld main INFO: Hello World!

5. Zaključak

U ovom uputstvu naučili smo kako pomoću njega možemo stvoriti prilagođeni, modularni JRE jlink koji sadrži samo minimum datoteka potrebnih za naš modul. Također smo proučavali kako stvoriti prilagođeni JRE sa skriptama pokretača koji se lako mogu izvršiti i otpremiti.

Prilagođene, modularne Java runtime slike su moćne. Ciljevi za stvaranje prilagođenih JRE-ova su jasni: oni štede na memoriji, poboljšavaju performanse i također poboljšavaju sigurnost i održivost. Lagani prilagođeni JRE-ovi također nam omogućuju izradu skalabilnih aplikacija za male uređaje.

Isječci koda korišteni u ovom vodiču dostupni su putem Github-a.


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