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.