jugnsk JUGNsk Meetup #3 (23.08.2018 — 23.08.2018)

Escape from Jar Hell with Jigsaw Layers

img

Модульную систему Java aka JPMS или Jigsaw часто критикуют из-за отсутствия версионирования, которое есть в альтернативных модульных системах для Java, таких как OSGi.

Одна из главных целей версионирования - это решать проблему Jar Hell, которая возникает, когда приложение зависит от двух разных версий одной и той же библиотеки.

Хотя Jigsaw может детектировать такую конфликтную ситуацию через детектирование так называемых split пакетов, Jigsaw не позволяет загрузить две версии одного модуля, присутствующих в module path. Однако, не всегда возможно избавиться от конфликта версий в большом приложении, потому что конфликтующие версии могут появляться в приложении через транзитивные зависимости, которые не всегда под контролем разработчика. К счастью, в Jigsaw предусмотрели возможность бороться с этой проблемой с помощью так называемых слоев Jigsaw (Jigsaw Layers). В этом докладе мы разберемся, какие проблемы могли бы возникнуть, если бы в Jigsaw были явные версии для модулей, и как слои Jigsaw вместе с Jigsaw сервисами могут помочь решать проблему Jar Hell безопасно.