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

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

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

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

©  OpenNet