The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Анализ проблем с поставкой Java-приложений в Linux-дистрибутивах

27.09.2010 16:46

Терри Каррез (Thierry Carrez), возглавляющий разработку серверной сборки Ubuntu, подытожил в своем блоге проблемы, возникающие при поставке программ на языке Java в составе Linux-дистрибутивов и приводящие к тому, что множество Java-программ не доступны в пакетах для Linux-дистрибутивов или поставляются через сторонние репозитории.

Главная проблема возникает из-за наличия в Java собственных унифицированных инструментов сборки и распространения пакетов, что приводит к тому, что фактически разработчики открытых проектов на Java не выпускают готовый для пересборки релиз в исходных текстах, а занимаются поставкой уже готовых бинарных пакетов, включающих откомпилированный набор классов и связанных внешних Java-библиотек. Преобразовать такой Java-пакет в другой формат пакетов для включения в репозиторий Linux-дистрибутива не так просто, так как каждая Java-программа может требовать для своей работы разные версии Java-библиотек. Привязка к разным версиям библиотек идет в разрез со стремлением Linux-дистрибутивов избежать дублирования кода и затрудняет выпуск обновлений, связанных с безопасностью.

Дистрибутивы стремятся к поставке единой версии библиотеки для всех программ, в то время как Java-приложения проповедуют принцип поставки нужного набора библиотек в составе каждого пакета. Попытка перевести Java-программу на другую, стандартную для дистрибутива версию библиотеки, приводит к возникновению непредвиденных проблем и требует отдельной отладки и исправления кода. Чем сложнее Java-проект, тем больше наблюдается зависимость от библиотек. К сожалению решение проблем так и не найдено и дистрибутивам приходится комбинировать различные подходы: от поставки нескольких версий библиотек или включения всех библиотек в пакет, до отказа от поставки Java-программ и придумывания отдельных надстроек для доустановки библиотек.

  1. Главная ссылка к новости (http://lwn.net/Articles/406884...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/28082-linux
Ключевые слова: linux, packet, java
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (54) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, User294 (ok), 17:24, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Невольно вспомнился анекдот. Смотрит доктор пациента.
    - Хорошо.... Хорошо.... Очень хорошо!
    - А что хорошо, доктор?
    - Хорошо то что это - не у меня.
     
     
  • 2.5, Fcuku (ok), 17:51, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +6 +/
    На деле-то все проще:
    Разработчики дают бинарь с исходниками, обвязанными ТАКИ-И-ИМИ XML для сборки, что без ПОЛНОГО проникновения в тему собрать на Фре, скажем, просто нереально :)

    И ОТТАТПТЫВАЮТ СЕБЕ, таким образом, "кормовую площадку" :)

    Поза такая: GPL, бинарь под пару магистральных Линей, исходники, "вот XML, мы сами, мамой клянусь, этим XML ночные сборки делаем!!!"

    А дальше - "можно купить поддержку" :)
    Или сам давай сырцы читай, жадина :)

     
  • 2.23, iZEN (ok), 20:16, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Дохтур, и это тоже у тебя, только ты об этом не знаешь. Ты же на Ubuntu живёшь, а значит проблемы кучи пакетиков .deb для обеспечения нормальной работы Java тебя не миновали. К примеру, на Debian-based для русификации Java всё ещё требуется доустанавливать sun-java6-fonts.deb. В то время, как на взрослых системах поддержка i18n/l10n идёт в одном пакете c JDK или с JRE и доустанавливать ничего не надо.
     
     
  • 3.25, User294 (ok), 20:33, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Ты же на Ubuntu живёшь, а значит проблемы кучи пакетиков .deb
    >для обеспечения нормальной работы Java тебя не миновали.

    У меня нет ни 1 программы на яве. И ни 1 сервака с ней. Поэтому да, у *меня* никаких проблемой с явой и ее нормальной работой - *нет*. Вот глядя на все это мне и вспомнился анекдот :)))

    > К примеру, на Debian-based для русификации Java всё ещё требуется доустанавливать

    Вам требуется? Вы и доустанавливайте, имхо.

     
  • 3.59, Zenitur (?), 09:43, 29/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь понятно, почему в любом дистрибутиве Azureus, он же Vuze, работает сразу. А в Убунте пакетнй менеджер тянет много других пакетов. Если верить юзеру. Потому-то он явой и не пользуется, что в Убунте это затруднено.
     
     
  • 4.62, stimpack (?), 13:45, 12/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Азуреус-азуреус...
    Мастера делать простое сложным, мастера жрать проц и память, чертов комбайн вместо торрента... Слава богу, что есть нормальные аналоги. Тот же transmission - выглядит чуть ли не модальным окном, а функций - столько же. И работает на порядок приятнее.
     

  • 1.3, аноним (?), 17:33, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Дистрибутивы стремятся к поставке единой версии библиотеки для всех программ, в то время как Java-приложения проповедуют принцип поставки нужного набора библиотек в составе каждого пакета.

    при чём тут проповедуют, если просто вынуждены так делать.

     
     
  • 2.4, Аноним (-), 17:35, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Это почему же? В репозиториях иногда встречаются рахные версии одних и тех же библиотек.
     
  • 2.55, Andrey Mitrofanov (?), 12:33, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > просто вынуждены так делать.

    Вильям наш Гейц Третий с Усамой Беновичем Ладданом стояли над ними и... о! принуждали. Бе-е-е-едненькие!

     

  • 1.9, none (??), 18:11, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    есть спецификации на jvm
    есть jdk, кот. спокойно уживаются, в разных версиях, на компе (alternative для jre)
    ИМХО - достаточно "притянутые" проблемы
    а для ОСС особенно
     
     
  • 2.57, nuclight (ok), 22:39, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Это Вы, видимо, не сталкивались с программами, требующими конкретную версию JDK.
     
     
  • 3.58, iZEN (ok), 00:15, 29/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Это Вы, видимо, не сталкивались с программами, требующими конкретную версию JDK.

    Я сталкивался с программами, требующими конкретную версию JDK для определённой архитектуры команд CPU. Ничего — уживаются два разных JDK для [i386] и [amd64] на одной машине в одной операционной системе. ;)

     

  • 1.10, pro100master (ok), 18:13, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    очень энтерпрайзно так - каждой тулзе по своей версии libc :))) (саpказмъ)
     
     
  • 2.12, Аноним (-), 18:29, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Тут не .so имеются в виду, а .jar
     

  • 1.13, Аноним (-), 19:06, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Подотрите сопли, истерика ни к чему.
    В моей gentoo сосуществуют как минимум 3 версии одной и той же jpeg либы.
    Сосущесвуют? Да.
    Без проблем? Нет, не без проблем.

    Где тут джава? В воспаленном воображении спорщиков.
    Пакетные менеджеры не так хороши, как хотелось бы, вот и все.

     
     
  • 2.15, szh (ok), 19:30, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > как минимум 3 версии одной и той же jpeg либы.

    когда будет 300 версий комбинаций из десятков библиотек весом в xx мегабайт,
    для 300 программ, когда ты будешь оплачивать доп расходы на поддержку такой кучи,
    тогда и порассуждаешь о сопельках.

     
     
  • 3.16, Аноним (-), 19:37, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    ты мне не тыкай, и не передергивай. В реальном мире версии зависимостей единицами считают, а не сотнями.
     
     
  • 4.18, szh (ok), 19:52, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    вводная аргументация "Подотрите сопли, истерика ни к чему." располагает.

    > В реальном мире версии зависимостей единицами считают, а не сотнями.

    по ссылке другое мнение.

    Package all versions of libraries

    The next obvious solution is to make separate packages for every version of library that the software uses. The problem is that there is no real convergence on “commonly-used” versions of libraries. There is no ABI protection, nor general guidelines on versioning. You end up having to package each and every minor version of a library that the software happens to want. That doesn’t scale well: it creates an explosion in the number of packages, code duplication, security update nightmares, etc. Furthermore, sometimes the Java project patches the libraries they ship with to include a specific feature they need, so it doesn’t even match with a real library version anymore.

     
     
  • 5.24, Аноним (-), 20:30, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +3 +/
    1 Различные приложения не джава требуют различные версии либы не джава П... большой текст свёрнут, показать
     
     
  • 6.30, Fcuku (ok), 21:23, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нет, проблемы существуют на уровне совести разработчиков, НЕ предоставляющих исходники в пригодном для мультиплатформенной сборки виде.
    Немножко жилят, вымогая денежек с тех, кому надо перебрать пакет, а сил вникать нету.
    Соответственно, разводится такой зверинец, от которого страдают и дистры.
     
     
  • 7.33, Аноним (-), 21:37, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Нет, проблемы существуют на уровне совести разработчиков, НЕ предоставляющих исходники в пригодном
    >для мультиплатформенной сборки виде.
    >Немножко жилят, вымогая денежек с тех, кому надо перебрать пакет, а сил
    >вникать нету.
    >Соответственно, разводится такой зверинец, от которого страдают и дистры.

    Оpenoffice уж на что монстр, а собирается в gentoo из исходников. Выходит проблема не в джаве, а в конкретных разработчиках.

     
     
  • 8.61, Frank (??), 14:45, 30/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Оpenoffice написан на сях, не на яве... текст свёрнут, показать
     
  • 7.37, VoDA (ok), 23:19, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Нет, проблемы существуют на уровне совести разработчиков, НЕ предоставляющих исходники
    > в пригодном для мультиплатформенной сборки виде.
    > Немножко жилят, вымогая денежек с тех, кому надо перебрать пакет, а сил
    > вникать нету.
    > Соответственно, разводится такой зверинец, от которого страдают и дистры.

    Java сама по себе мультиплатформенна - СЮРПРИЗ =))) Исходники кстати сразу идут в мультиплатформенном виде, maven вообще сам подтянет из центрального репо требуемые либы.

    Дело в том, что C/C++ приложения точатся под отдельный дистр и для них делаются скрипты привинчивающие к определенной системе. Java для платформо и дистро независимости не привинчивается к системе, потому и вынуждена таскать набор либок.


     
     
  • 8.53, Fcuku (ok), 12:28, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Читаете ли вы то, что комментируете И насколько вы способны собрать Java п... текст свёрнут, показать
     
  • 6.48, б.б. (?), 05:38, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Различные приложения(!не джава!) требуют различные версии либы(!не джава!). Проблема
    > версионирования вообще не из джавы, ею все страдают. Взять хоть эпопею
    > с двумя питонами, ведь ужас какой-то.

    У меня в дебиане одновременно сразу 4 питона (Пусть эта змеюка подавится!).

     
  • 2.26, mike lee (?), 20:48, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > В моей gentoo сосуществуют как минимум 3 версии одной и той же jpeg либы.

    зачем? у меня например одна 8b.

     
     
  • 3.29, Аноним (-), 21:08, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> В моей gentoo сосуществуют как минимум 3 версии одной и той же jpeg либы.
    >
    >зачем? у меня например одна 8b.

    А зачем на торрентах лежат N сезонов симпсонов? Оставили бы последний, чего на остальные место тратить?
    Разным людям нравятся разные сезоны, а разным приложениям нравятся разные версии либы.

     
     
  • 4.31, Fcuku (ok), 21:25, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>> В моей gentoo сосуществуют как минимум 3 версии одной и той же jpeg либы.
    >>
    >>зачем? у меня например одна 8b.
    >
    >А зачем на торрентах лежат N сезонов симпсонов? Оставили бы последний, чего
    >на остальные место тратить?
    >Разным людям нравятся разные сезоны, а разным приложениям нравятся разные версии либы.
    >

    Это у вас симлинки "сосуществуют" :)
    А библиотека - одна :)

     
     
  • 5.34, Аноним (-), 21:42, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >[оверквотинг удален]
    >>>
    >>>зачем? у меня например одна 8b.
    >>
    >>А зачем на торрентах лежат N сезонов симпсонов? Оставили бы последний, чего
    >>на остальные место тратить?
    >>Разным людям нравятся разные сезоны, а разным приложениям нравятся разные версии либы.
    >>
    >
    >Это у вас симлинки "сосуществуют" :)
    >А библиотека - одна :)

    Я Вас покусаю :) В гентушном менеджере есть "слоты", позволяющие иметь в системе несколько версий одной либы, это факт. Ведь не городили бы огород, не будь версий библиотеки более одной.

     
     
  • 6.54, Fcuku (ok), 12:31, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Я Вас покусаю :) В гентушном менеджере есть "слоты", позволяющие иметь в
    > системе несколько версий одной либы, это факт. Ведь не городили бы
    > огород, не будь версий библиотеки более одной.

    К теме!
    Libjpeg - сколько?
    "Три" или, все же единственный экземпляр 8.х?

     
  • 5.51, Андрей (??), 11:21, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    не всегда. например, тот же nxclient хочет openssl-0.9.8, хотя все остальное прекрасно пересобралось с openssl-1.0.0. или тот же вайн@этерсофт, не смотря на то, что libpng разделили на два слота - >=1.4.3 и <1.4.3, не собирается, пока в системе присутствует >=1.4.3 (не смотря на присутствие так же <1.4.3). Но потом прекрасно (насколько это возможно ;) ) работает, когда вернешь >=1.4.3.
     
  • 4.49, б.б. (?), 05:40, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>> В моей gentoo сосуществуют как минимум 3 версии одной и той же jpeg либы.
    >>
    >>зачем? у меня например одна 8b.
    > А зачем на торрентах лежат N сезонов симпсонов? Оставили бы последний, чего
    > на остальные место тратить?
    > Разным людям нравятся разные сезоны, а разным приложениям нравятся разные версии либы.

    Сколько нынче дядек дают за одну бузину на центральном рынке Киева?

     

  • 1.14, Аноним123321 (ok), 19:18, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    все проблемы лучше даже саазать вот так все эти вендовенькие проблемы -- ре... большой текст свёрнут, показать
     
     
  • 2.17, segoon (ok), 19:39, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У меня 13 программ в $PATH хотят питон, 10 из них весят 2-100 кб.  На каждый из них ставить свой питон со всеми питонолибами? :0)
     
  • 2.20, Aquarius (ok), 19:57, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    это концепция, выпускай дистрибутив
     
     
  • 3.27, Прохожий (??), 20:50, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >это концепция, выпускай дистрибутив

    Такой дистр уже есть. В нем каждая прога ставиься в свою структуру каталогов вместе со всеми зависимостями - все свое ношу с собой :) Название дистра не помню и он непопулярен.

     
     
  • 4.28, Ytch (?), 21:00, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Такой дистр уже есть. В нем каждая прога ставиься в свою структуру каталогов вместе со всеми зависимостями - все свое ношу с собой :) Название дистра не помню и он непопулярен.

    Windows? :)

     
  • 4.35, Motif (ok), 22:26, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    GoboLinux.

    http://distrowatch.com/table.php?distribution=gobo

     
  • 4.50, б.б. (?), 05:43, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>это концепция, выпускай дистрибутив
    > Такой дистр уже есть. В нем каждая прога ставиься в свою структуру
    > каталогов вместе со всеми зависимостями - все свое ношу с собой
    > :) Название дистра не помню и он непопулярен.

    Это примерно как решать проблемы пробок созданием сотни изолированных друг от друга дорог - "Базар-Вокзал" "Базар-Баня" "Вокзал-Баня" и т.п., вместо проектирования грамотной развязки.

     
     
  • 5.56, Aquarius (ok), 13:35, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>>это концепция, выпускай дистрибутив
    >> Такой дистр уже есть. В нем каждая прога ставиься в свою структуру
    >> каталогов вместе со всеми зависимостями - все свое ношу с собой
    >> :) Название дистра не помню и он непопулярен.
    > Это примерно как решать проблемы пробок созданием сотни изолированных друг от друга
    > дорог - "Базар-Вокзал" "Базар-Баня" "Вокзал-Баня" и т.п., вместо проектирования грамотной
    > развязки.

    в реальной жизни это абсурд, а в информационном - вполне себе решение

     
     
  • 6.60, Aquarius (ok), 14:07, 29/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>>>это концепция, выпускай дистрибутив
    >>> Такой дистр уже есть. В нем каждая прога ставиься в свою структуру
    >>> каталогов вместе со всеми зависимостями - все свое ношу с собой
    >>> :) Название дистра не помню и он непопулярен.
    >> Это примерно как решать проблемы пробок созданием сотни изолированных друг от друга
    >> дорог - "Базар-Вокзал" "Базар-Баня" "Вокзал-Баня" и т.п., вместо проектирования грамотной
    >> развязки.
    > в реальной жизни это абсурд, а в информационном - вполне себе решение

    поправка: в реальном мире это абсурд, а в информационном - вполне себе решение
    так лучше звучит

     
  • 2.38, VoDA (ok), 23:22, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хоть одно адекватное мнение =)))
     

  • 1.22, iZEN (ok), 20:08, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Осильте уже Apache Maven и перестаньте ныть!
     
     
  • 2.32, Fcuku (ok), 21:29, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Осильте уже Apache Maven и перестаньте ныть!

    Э-э-э...
    Вы уверены, что в Каноникал про Maven ничего не слышали?
    А вы им - письмо! :)
    Пусть прозреют! :)
    Ссылку кинуть не забудьте!!! :)

     
     
  • 3.36, iZEN (ok), 23:02, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>Осильте уже Apache Maven и перестаньте ныть!
    > Э-э-э...
    > Вы уверены, что в Каноникал про Maven ничего не слышали?
    > А вы им - письмо! :)
    > Пусть прозреют! :)
    > Ссылку кинуть не забудьте!!! :)

    Какой там Maven — они JDK не могут собрать в один пакет, чтобы "как у всех всё работало". Пользователям приходится по кусочкам целостную платформу собирать, ища пакетики по ключевым словам траблов из серии "русский язык в Java не работает в Ubuntu" в Гугле. Вот до чего доводит концепция "рекомендуемых, но необязательных пакетиков".


     
     
  • 4.39, VoDA (ok), 23:24, 27/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Это 3.14дец =)))

    так в Ubuntu получается не JavaDK? ибо Java должна уметь по дефолту кучку языков и т.п. Если не могет - не java, а подобие типа gcj...

     

  • 1.40, VoDA (ok), 23:27, 27/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    По мне проблемы две.
    1. не доведенная до ума модульность в java. Проект jugsaw, пара JSR на эту тему. Обещают в JDK 8 асилить.
    2. пакетные менеджеры дистрибутивов не умеют работать с java-менеджером зависимостей maven. А java разработчики конечно же не будут запиливаться на один дистр, если можно остаться кроссплатформенными.

    Выход научиться из apt-get использовать maven и его зависимости + при запуске приложения грамотно собирать CLASSPATH.

     
     
  • 2.41, iZEN (ok), 00:12, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > По мне проблемы две.
    > 1. не доведенная до ума модульность в java. Проект jugsaw, пара JSR
    > на эту тему. Обещают в JDK 8 асилить.

    Чем .class файлы не модули? Помниться, до изобретения JAR, апплеты загружались в браузеры только class-файлами и начинали работать сразу, как только скачается первый из них. По мере задействования нового байткода подгружались недостающие class-файлы. То есть программа на Java уже работала даже тогда, когда ещё не все её части подгрузились на клиентский компьютер.

    > 2. пакетные менеджеры дистрибутивов не умеют работать с java-менеджером зависимостей maven.

    Пакетные менеджеры умеют запускать предварительно сконфигурированные скрипты для обеспечения корректной инсталляции бинарного пакета. mvn — это скрипт с параметрами для сопровождения всего жизненного цикла программных сущностей (приложений и библиотек) различных версий, всех фаз сборки/тестирования/инсталляции/запуска.


     
     
  • 3.44, VoDA (ok), 01:07, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Чем .class файлы не модули? Помниться, до изобретения JAR, апплеты загружались в браузеры только class-файлами и начинали работать сразу, как только скачается первый из них. По мере задействования нового байткода подгружались недостающие class-файлы. То есть программа на Java уже работала даже тогда, когда ещё не все её части подгрузились на клиентский компьютер.

    java либы очень маленькие и узкоспециализированные, потому их просто немеренно даже для малого проекта. Либо приходится поднимать JavaEE compatible сервер и пользоваться еще бОльшим набором либ/систем в комплекте. Косяк именно в большом кол-ве различных либ.

    Если jar B зависит от A версии 1 и jar C зависит от A версии 2, при этом версии 1 и 2 несовместимы, то нет возможности написать java приложение зависящее от B и C одновременно. Будут феерические баги из-за двух несовместимых либ в класс-пасе или попытки подоткнуть не ту jar-ку.

    java modules это фикс для подобной ситуации. Все остальное в java могут сделать maven & OSGi

    > Пакетные менеджеры умеют запускать предварительно сконфигурированные скрипты для обеспечения корректной инсталляции бинарного пакета. mvn — это скрипт с параметрами для сопровождения всего жизненного цикла программных сущностей (приложений и библиотек) различных версий, всех фаз сборки/тестирования/инсталляции/запуска.

    1. по сути нужно вытащить зависимости из mvn и уложить на пакетную базу целевого дистрибутива.
    2. Дальше перегнать mvn repo в репо для целевой системы.
    3. В результирующих WAR / EAR / иных сборках заменить jar из lib на ссылки на установленные пакеты из п.2

    По сути куча механической работа + оттестировать. Только кто заплатит за развлечение?

     
     
  • 4.47, iZEN (ok), 03:49, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, class-файлов немеряно, да Гранулированность Java-приложений, несмотря ... большой текст свёрнут, показать
     
     
  • 5.52, VoDA (ok), 11:51, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Я думаю, косяк в перепаковке и потере целостности. Дебианщики упускают целостное восприятие Java-кода в погоне за его перепаковкой в DEB.

    Это есть.

    > Да, в Maven это разруливается легко на основе информации о версии в
    > имени файлов jar.
    > Но зачем? Перепаковка портабельного кода ничего не даёт кроме головной боли мантейнерам.
    > (что и наблюдаем)
    > Гораздо лучше работать с локальным репозиторием Maven из пакетного менеджера, рулить mvn,
    > чтобы тот производил все необходимые действия по сопровождению кода Java.
    > Жизненный цикл (загрузка, выгрузка, обновление) WAR/EAR — вотчина сервера пиложений
    > Java EE, а не пакетного менеджера.

    Вы читали задачи которые должна решать система java modules?

    Там не только сборка приложения и подтыкание правильных jar для сборки (это делает mvn), но и создание системного репо и каждое приложение вместо того, чтобы тянуть с собой кучу либ - просто запрашивает требуемые либы (по версиям) у java, сама java уже ищет/качает с центрального сайта и т.п.

    В этом одна из задач jugsaw.

     
  • 2.43, Marbleless (?), 00:36, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >не доведенная до ума модульность в java.

    Это просто у многих дистростроителей бзик с этой модульностью. Упаковывают Жабу в 5 разных пакетов, а потом "У меня русский язык в Жабе не работает". Особенно хорошо когда есть "Полная версия", "Почти полная версия" и "Совсем маленькая версия". А особенно хорошо, когда часть программ в дистре зависит от, скажем, OpenJDK а часть от GCJ, причем оба их поставить одновременно нельзя.

    Жаба привыкла скачиваться и ставиться одним пакетом. На всех. Вообще. И чтобы на всех платформах ПО на Java работало одинаково. Но нет ведь, и тут надо взять и сделать чертов зоопарк.

     

  • 1.42, Аноним (-), 00:33, 28/09/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С переменными окружения надо быть аккуратнее.
    Если, к примеру задаем LD_LIBRARY_PATH, и запускаем файловый менеджер, то все программы запущенные этим файловыйм менеджером, могут получить неправильное окружение, и вследствии чего подгрузить не те библиотеки.
    То же самое касается CLASSPATH.
    Лучше использовать rpath или манифесты.
     
     
  • 2.45, VoDA (ok), 01:10, 28/09/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > С переменными окружения надо быть аккуратнее.
    > Если, к примеру задаем LD_LIBRARY_PATH, и запускаем файловый менеджер, то все программы
    > запущенные этим файловыйм менеджером, могут получить неправильное окружение, и вследствии
    > чего подгрузить не те библиотеки.
    > То же самое касается CLASSPATH.
    > Лучше использовать rpath или манифесты.

    Не совсем. CLASSPATH формируется независимо для каждого запускаемого приложения.

    По другому дела идут в контейнерах и АппСерверах - там клиентские надстройки (WAR/EAR) запускаются в рамках контейнера и контейнер модифицирует класс-лоадинг для выполнения своих задач. К примеру для DI или поддержки штатных функций, потому часть либ-ок шарится между АппСервером и приложениями им запускаемыми.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру