Спасение от Jar Hell с помощью Jigsaw Layers

День 1 /  / Зал 3  /  RU /

Комментарий Программного комитета:

Классика Joker.

Модульную систему Java aka JPMS или Jigsaw часто критикуют из-за отсутствия версионирования, которое есть в альтернативных модульных системах для Java, таких как OSGi. Одна из главных целей версионирования — это решать проблему Jar Hell, которая возникает, когда приложение зависит от двух разных версий одной и той же библиотеки.

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

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


Скачать презентацию
Никита Липский
Excelsior LLC

Один из инициаторов и руководителей проекта Excelsior JET, сертифицированной реализации Java SE, разрабатываемой компанией Excelsior. Работая над проектом с 1997 года, поучаствовал в исследовании и разработке практически всех компонентов продукта от ядра до продуктовых свойств. В частности, является одним из авторов поддержки OSGI на уровне JVM в Excelsior JET, технологии Java Runtime Slim Down (модуляризация Java SE, реализованная в Excelsior JET с 2007 года), обоих верификаторов Java-байткода в Excelsior JET и многого другого.

Прошлые выступления спикера