No toto je velmi zajímavá diskuse. Jelikož mám za sebou spolupráci na stavbě několika Linuxových distribucí na jedné straně, instaláky distribucí velkých Java aplikací a Javu používám na Linuxu na desktopu i na velkém serveru, zkusím si přidat také svoji trošku do mlýna.
a) momentálně mám na svém notebooku 14. souborů junit.jar, a to na něm vyvíjím jednu J2EE aplikaci v IntelliJ a jinak ho používám jako Osobní Počítač :-) Nechci ani vědět, kolik jich mám na vývojářském stroji, kde se to Java aplikacemi jenom hemží. b) v OpenSuSE mám možnost nainstalovat si kompletní Java prostředí, ale k vývoji bych to nepoužil. c) oproti tomu Ubuntu má systém Java balíků propracovaný poměrně hezky a pro používání aplikací nebo jednoduchý vývoj je to dostačující. Sám teď uvažuji o jednoduchém balíku, který bude integrovat balíky z distribuce do systému globálních knihoven, abych se nemusel o ně nijak dramaticky starat. d) úzus z C světa o major minor a release verzích (převzaný světem Perlu, Pythonu či Ruby) ve světě Javy moc nefunguje. Změna chování i překopání API mezi minor verzemi je celkem běžný jev. Proč? Nikdo to neřeší. e) díky poměrně překotném vývoji Javích aplikací a přecházení na stále novější a novější verze balíků se stěží najdou dvě "velké" aplikace, které by mohly kompletně sdílet všechny balíky. f) je třeba si uvědomit, že balíčkovací systémy Linuxových distribucí jsou navrženy s jediným podstatným úmyslem - umožnit VŠEM UŽIVATELŮM TÉHOŽ POČÍTAČE používat stovky a tisíce aplikací, které nebudou mezi sebou vzájemně kolidovat a budou co nejbezpečnější a nejstabilnější. A to na úkor toho, že VŠICHNI uživatelé budou používat stejnou, ne zrovna nejaktuálnější verzi jejich oblíbené aplikace. g) I uživatelé Linuxových distribucí mají možnost používat vlastní verze vlastních aplikací. Ve všech distribucích je k dispozici Bitva o Wesnoth, Céčková strategická fantasy hra, na které se také trochu podílím, ale přesto ji nepoužívám - vždy v den, kdy vyjde nová verze, si ji už u sebe překládám. Co z toho všeho plyne? Nějaký balíčkovací systém pro Javu není vůbec zlá myšlenka. Jinak by tu nebyl JPackage či repozitáře Mavenu. Díky jednoduchému způsobu distribuce knihoven má každý vývojář Javích aplikací poměrně volné ruce v používání knihoven a není v ničích silách donutit tvůrce aplikací, aby sdíleli stejné verze knihoven. Z toho plyne, že takový balíčkovací systém, který by měl být šířeji použitelný, musí podporovat více verzí téže knihovny, a tedy nemůže být bez těžkého ohýbání použit systém té které distribuce. Proto je systém ala CPAN či GEMS naprosto dostatečný. Jediné, co by mne dávalo smysl, je sdílená lokální maven repository s možností jednotné instalace. Co by se mi ale líbilo by byl systém obdobný UNIXovým modulům, které by jednoduše rozšiřovaly CLASSPATH a tedy klasickým Javím způsobem umožňovaly sdílet knihovny napříč aplikacemi.
