A ze sveta Fedory...
Fedora konecne migruje na JDK11 jako systemove JDK, bude v F33, ktera vychazi na podzim..... JDK11 je ve Fedora uz dlouho, ale do ted bylo systemovou javou JDK8 a JDK11 (spolu s latest JDK, nyni 14) zde bylo vicemene na hrani, ci pro aplikace jez ho opravdu potrebuji.
Od F33 bude sstemova java JDK11, JDK8 (spolu s lates, tedy nyni JDK14) zde dale zustavaji, na hrani, a pro aplikace jez opravdu legacy/future JDK potrebuji.
Prekvapive je to problem. Systemove JDK je to ktere ten java stack buildi (a vetsinou i jede). Jdk8 a jdk11 nejsou 100% kompatibilni, cili se to muselo poopravovat. Fajlu bylo na pocatku prez 600. neco se spravilo samo, nakonec jeden silenec (Fabio Vallenti) pospravoval poslednich 150 fajlu sam....
Dal k tam strasi rozhodnuti jakou bytecode kompatibilitu zachovat. Fedora (a mylsim ze zadne distro) toto "abi" neresi, no a nas to ted kouslo. Nektere aplikace potrebovay jdk8, ale jejich depndence uz byli prelozene source/target 11... atd...
Sam mam jdk na masine jen 5, z otho 3 od Fedory (openjdk 8,11 a 14), a dve custom co si buildim, a ano, pro vyvojare je to jednoduche. V ramci distribuce... opravdu ne. Diky za rypanec!
Práve preto je vhodné aplikácie prevádzkovať iba s JRE/JDK z distribúcie, ale nie s ďalšími zdieľanými dependencies, tie nech si prinesú vlastné. Aj Redhaťácky JBoss/WildFly/whatever si prináša vlastné. No a veci ako XA drivery je možné zabaliť vo viacerých ABI, aj tak treba konfigurovať cestu ku konkrétnemu jar.
Nie je to problém len javy, python alebo nodejs trpia presne na to isté, preto majú virtualenv alebo node_modules. Go sa na nejaké verziovanie dependencies ani len nehrá, všetko staticky zbuildujú a dovi-dopo.
Od jdk9 je mozny udelat multi-release jary. Tedy jar ktery obsahuje modul jar pro jdk8, modul pro jdk 11 a modul pro jdk14 [jeli tohle secko potreba..] Ale neni to uplne primocare a distribuce zatim nemaji sanci.
Jo je to osina :)
Staticky linkovani ma zase jine problemy... Nejznamejis - zmeni se depndence, a rebuildis cely vesmir... Hybridni pristupy se taky moc neosvedcili.
Ted se to zaclo resit ruznymi container-like resenimi (ala flatpak) a zda se tama opravdu cesta pujde. (nejsem zrovna tonainer fanda, ale neco na nich je)
Co se tyce rpm-modulu a software collections... no pokus dobry... ale... (na scl je ovsem perfektni jejich jednoduchost:)
Dik!