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.

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

CIO Hungary 2025: hogyan válhat veszélyessé egy félrenevelt MI?

Beszámolónk harmadik része a 16. CIO Hungary konferencia második napjáról, ahol a stresszes témák mellett a stresszcsökkentésről is sokat megtudhattunk.
 
Hirdetés

Digitalizáció a mindennapokban: hogyan lesz a stratégiai célból napi működés?

A digitális transzformáció sok vállalatnál már nem cél, hanem elvárás – mégis gyakran megreked a tervezőasztalon. A vezetői szinten megfogalmazott ambiciózus tervek nehezen fordulnak át napi működéssé, ha hiányzik a technológiai rugalmasság vagy a belső kohézió.

Azok a vállalatok, amelyek gyorsabban, intelligensebben és empatikusabban tudnak reagálni ügyfeleik kérdéseire, összességében értékesebb, hosszabb távú kapcsolatokat építhetnek ki.

CIO KUTATÁS

AZ IRÁNYÍTÁS VISSZASZERZÉSE

Valóban egyre nagyobb lehet az IT és az IT-vezető súlya a vállalatokon belül? A nemzetközi mérések szerint igen, de mi a helyzet Magyarországon?

Segítsen megtalálni a választ! Töltse ki a Budapesti Corvinus Egyetem és a Bitport anonim kutatását, és kérje meg erre üzleti oldalon dolgozó vezetőtársait is!

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

LÁSSUNK NEKI!

Amióta a VMware a Broadcom tulajdonába került, sebesen követik egymást a szoftvercégnél a stratégiai jelentőségű változások. Mi vár az ügyfelekre? Vincze-Berecz Tibor szoftverlicenc-szakértő (IPR-Insights) írása.

Nyílt forráskód: valóban ingyenes, de használatának szigorú szabályai vannak

Különösen az early adopter vállalatoknak lehet hasznos. De különbözik ez bármiben az amúgy is megkerülhetetlen tervezéstől és pilottól?

Sok hazai cégnek kell szorosra zárni a kiberkaput

Ö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.
© 2025 Bitport.hu Média Kft. Minden jog fenntartva.