A közelmúltban alaposan körbejártuk, milyen lehetőségek közül választhat, aki nem tud lemondani a Javáról. Most bemutatunk egy konkrét megoldást is. Hegedüs Tamás (IPR-Insights) írása.
Hirdetés
 

A Java platform 9-11-es kiadása idején bejelentett nagy horderejű változások meglehetősen közismertek – modularitás, önálló JRE megszüntetése, Oracle Java fizetőssé tétele. Mindhárom körülmény olyan, ami fejtörést, vagy inkább fejfájást okoz azoknak a nagyvállalati szoftverüzemeltetőknek, akiknek feladata volna naprakész, biztonságos JRE-t, Java Runtime Environmentet biztosítani a felhasználóknak. A közelmúltban bemutattam, hogyan lehet felmérni a Java-használatot/igényt, most viszont egy megoldást mutatok arra, hogyan oldható meg a biztonságos JRE biztosítása.

Szűk mezsgyén kell egyensúlyoznunk

A Java 8-as vagy korábbi verziók esetében a mozgásterünk meglehetősen korlátozott. Az Oracle Java ugyanis nem egyezik meg az Open Javával, ezért egy Oracle Java JRE-vel megfelelően működő szoftver Open Java JRE a alatt másképpen fog viselkedni. Ennek ellenére, és feltéve hogy nincs szükség terméktámogatásra, csak frissítésekre, mindenképpen érdemes megkísérelni az átállást Open Javára, például az Amazon Corretto, az AdoptOpenJDK vagy a Bellsoft Liberica csomag valamelyikére, hiszen ha a szoftverek működésében nincs gond, elkerülhető az Oracle Java-támogatás tetemes költsége.  Hogy mennyire is életképes az Open Java, mutatja az is, hogy egy nagyobb, Magyarországon is jelenlévő bank a licencelési változásokat úgy követte le, hogy a Java 8-alapú netbank alkalmazása mellé már Open Java környezetet biztosít.

(Zárójelben megjegyzem: ideiglenesen megoldást jelenthet az is, ha korábbi, még ingyenes verzión tartjuk a Java-környezetünket, de emiatt idővel egyre nagyobb csörtéket kell majd vívni az informatikai biztonság felelőseivel.)

Az Open Java újabb, nevezetesen 11-es, LTS támogatottságú verzió esetében már jobbak a kilátásaink kompatibilitás terén is. Az Open JDK lett a Java Standard Edition (SE) platform referencia implementációja (értsd: minden más Java disztribúció, beleértve az Oracle Javát, is erre épül). Nyilván megoldást jelent, ha minden eszközünkre komplett JDK-t terítünk, de ettől kifinomultabb megoldás is létezik.

Itt jön a képbe a már említett modularitás és a jlink. A Java 9-es kiadása óta meglévő jlink lehetővé teszi, hogy az általunk választott modulokból egyedi futtatókörnyezetet készítsünk, ami a szükséges modulok mellett tartalmazza JVM-et is.

Ez elsősorban a fejlesztőknek létrehozott eszköz, amit a Java 14-es kiadásában kiegészítettek a natív telepítőkészletet létrehozó jpackage-dzsel. Ennek segítségével kompakt futtatókörnyezetet tudunk az alkalmazás mellé csomagolni. Így már nem a végfelhasználó terhe lesz a futtatókörnyezet beszerzése és naprakészen tartása.

A lehetőségek: fogjunk neki

Két lehetőségünk van. Minden Javát használó szoftverhez egyedi runtime-ot generálunk – ez nyilván a fejlesztő feladata volna. Ha ő nem teszi meg, vagy pótolhatjuk ezt a hiányosságot, vagy – és az a másik lehetőség – készítünk egy olyan runtime-ot, amiben benne van minden olyan modul, amire egy átlagos szoftver futtatására szükség lehet, és uniformizálhatjuk a környezetünkben terítendő futtatókörnyezetet. A jlink gyakorlatilag leválasztja a kiválasztott modulokat a JDK-ról.

Előbbi megoldás esetében először ki kell listázni a csomag függőségeit a jdeps segítségével, például ha van java környezeti változó beállítva, akkor jdeps -s c:\Útvonal\A\Fájlhoz.jar (nem kötelező a jar, helyette class-t is használhatunk).

Összehasonlításképp, ha kilistázzuk a telepített JDK moduljait (java --list-modules), látható, hogy mennyi, e szoftver szempontjából "felesleges" modul is található benne.

A függőségek ismeretében készíthetjük el a saját JRE-t jlinkkel: jlink --output C:\Útvonal\A\Leendő\Jrehez --add-modules előbb,listázott,modulok.

Elkészült a JRE, ami már nyugodtan használható azzal a szoftverrel, amelynek függőségeit megvizsgáltuk. Ha szükséges vagy kívánatos a minél kisebb méret, akkor fenti parancsot kiegészíthetjük a --no-header-files --no-man-pages --strip-debug opciókkal, további, esetünkben szükségtelen fájloktól könnyíthetjük meg a JRE-t. (Fontos: szoftverfejlesztői oldalról a jlink nem így használandó.)

Ha univerzálisabb megoldásra lenne szükség, lehetőség van a jlinknek megadni a “java.se” modult, ami minden alapmodult tartalmazni fog, így képes kiszolgálni a Javát használó szoftverek jelentős részét.
 

A java.se modul tartalma, azaz függőségei, melyek importálásra kerülnek. Forrás: Oracle (Kattintson a képre a nagyobb méretért)


Nem vagyunk teljesen magunkra utalva, ha JRE-re van szükségünk. Például a Bellsoft (amely a Java platform fejlesztésében jelentős szerepet vállal) ingyenesen készít JRE csomagokat a fent vázolthoz hasonló módon, akár openjfx-szel együtt csomagolva. Ilyen lehetőséget még az Oracle JDK-ban sem találunk, lévén az kikerült a standard modulok közül. De, annak ellenére, hogy a moduláris rendszer bevezetésével elvileg ütött az önálló JRE utolsó órája, ha szükségünk van rá, a Bellsoft, a Red Hat vagy más disztrubútor révén mégis lehet naprakész, biztonságos – és nem mellesleg ingyenes – JRE-nk újabb Java verziókra is.
 

 Nem biztos, hogy visszafelé kompatibilis...

A Java 11-es verziója volt az első, ahol bizonyos osztályok (és ekkorra már modulok) kikerültek a platformból. Ha egy viszonylag újabb szoftver esetében azt tapasztaljuk, hogy nem fut Java 11-gyel, akkor nem a platform a hibás. Évek, sőt már bő egy évtized óta figyelmezteti a Java a fejlesztőket, hogy egyes osztályok, könyvtárak elavultak, és bármikor kikerülhetnek a platformból. Ez a "fenyegetés" a Java 11-gyel vált valósággá, így azok a szoftverek, amik vagy nagyon régiek, és kifejezetten a platform régebbi verzióira íródtak, vagy bár újabbak, de a fejlesztők a figyelmeztetéseket figyelmen kívül hagyva, nem optimálisan készítették el a szoftvert, nem fognak együtt működni az újabb verziókkal. Tipikus példa erre a már említett Java FX, azaz ha a szoftver használja Pair adatstruktúrát, Java 11 alatt nem fog működni, mert a Pair csak a Java FX-ben (és az OpenJavaFX-ben) található meg .


Licencelési kérdések nem merülnek fel. Az így elkészített, illetve letöltött JRE mappáján belül a használt modulok licencei megtalálhatók a /legal mappában. De ami ennél is fontosabb, hogy ott van a Classpath Exceptionre vonatkozó engedély: ha tehát csak meghívjuk a JRE-t szoftverek futtatásához, nem érvényesül a GPL virális hatása.

Dr. Hegedüs Tamás

A szerző jogász, 2018-ban csatlakozott az IPR-Insights Hungaryhez, ahol licencelési tanácsadóként dolgozik.

A JRE használatával tárhelybéli előnyhöz jutunk a JDK-val szemben, hiszen például a Corretto 11 majd 300 megabájtos méretéhez képest az egyedi/Libreica JRE mérete 40 megabyte és 160 megabájt között mozog (utóbbi már tartalmazza az OpenJavaFX-et!). A valódi mögöttes elképzelés a modularitás bevezetésekor valószínűleg ehhez kapcsolódhatott – moduláris futtatókörnyezetekkel hatékonyabb, kisebb méretű docker képek hozhatók létre.

Értelemszerűen hosszú távon jobban járhatunk, ha a Java alkotói szándékainak megfelelve nem one-size-fits-all JRE-ket terítünk, hanem az alkalmazásfejlesztőtől várjuk el a jlink használatát és a szükséges modulok és a JVM szállítását.

Piaci hírek

Hasznos trükköt tanult a Gemini

A Google generatív MI-asszisztense mostantól a felhasználói kívánalmak alapján egy sor népszerű fájlformátumban is képes prezentálni válaszát már magában a beszélgetési ablakban.
 
Hirdetés

A jövőálló digitális megoldások sikere az üzleti értékteremtésben mérhető

Az informatikai fejlesztések gyakran technológiai kérdésként jelennek meg, pedig egy kódsor vagy digitális megoldás önmagában soha nem lehet végcél. A 4D Soft több mint 35 éve ennek szellemében fókuszál a projektek negyedik dimenziójára: az üzleti értékteremtésre.

A biztonság ’balra tolódása’ az alkalmazásfejlesztésben nem csak technikai kérdés. A DevSecOps-elvek érvényesüléséhez az IT-szervezet működését és más területekhez való viszonyát is újra kell szabni.

a melléklet támogatója a Clico

Hirdetés

A hibakeresés nem egyenlő az alkalmazásbiztonsággal

Építsünk olyan AppSec környezetet, amely csökkenti az alkalmazásfejlesztés kockázatait, de nem válik a gyors leszállítás akadályává!

CIO kutatás

Merre tart a vállalati IT és annak irányítója?

Hiánypótló nagykép a hazai nagyvállalati informatikáról és az IT-vezetőkről: skillek, felelősségek, feladatkörök a múltban, a jelenben és a jövőben.

Töltse ki Ön is, hogy tisztábban lássa, hogyan építse vállalata IT-ját és saját karrierjét!

Az eredményeket május 8-án ismertetjük a 17. CIO Hungary konferencián.

LÁSSUNK NEKI!

Egy kormányrendelet alapjaiban formálják át 2026-tól az állami intézmények és vállalatok szoftvergazdálkodási gyakorlatát.

Projektek O-gyűrűje. Mit tanulhat egy projektvezető a Challenger tragédiájából?

A Corvinus Egyetem és a Complexity Science Hub kutatói megmérték: a Python kódok közel harmadát ma már mesterséges intelligencia írja, és ebből a szenior fejlesztők profitálnak.

Rengeteg ország áll át helyi MI-platformra

Ön sem informatikus, de munkája során az információtechnológia is gyakran befolyásolja döntéseit? Ön is informatikus, de pénzügyi és gazdasági szempontból kell igazolnia a projektek hasznosságát? Mi közérthető módon, üzleti szemmel dolgozzuk fel az infokommunikációs híreket, trendeket, megoldásokat. A Bitport tizennegyedik éve közvetít sikeresen az informatikai piac és a technológiát hasznosító döntéshozók között.
© 2010-2026 Bitport.hu Média Kft. Minden jog fenntartva.