Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Java |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
questioner Member Откуда: Сообщений: 1882 |
Разбираюсь с jigsaw. Хочется понять чуть глубже, чем export/requires Вот наткнулся на доклад. Интересно, но непонятно что он там на практике делает. Есть что-то подобное в текстовом виде? |
19 апр 19, 21:29 [21867534] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51130 |
Судя по всему, модули. Но я надеюсь что читателям не придётся целый час слушать его лекцию? Может выдержки там... цитаты. Есть? |
20 апр 19, 01:30 [21867622] Ответить | Цитировать Сообщить модератору |
alex55555 Member Откуда: Сообщений: 2128 |
questioner, если "разбираюсь", то просто погуглить текстовое описание никак? Их немало, вообще-то. |
||
20 апр 19, 11:18 [21867710] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
первоисточник 404 возвращает https://jokerconf.com/2018/talks/5w689rr9m42uy6cwcukuie/ |
||||
20 апр 19, 11:55 [21867728] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1965 |
1. Липицкий не для даунов рассказывает. У него очень сложные задачи и он рассказывает о боли, которая 90% разработчиков вообще не понятны. 2. Если мозги есть- его надо слушать. Пересказ не нужен- не то. 3. Решает просто- две библиотеки будут жить внутри приложения и не мешаться. Во многих библиотеках, к примеру, вкостылен asm с помощью переименования пакетов. Думаю, что у многих живут 2-3 копии разных версий :) Jigsaw автоматизирует этот процесс, заменяя костыли на нормальные решения. |
||
20 апр 19, 11:59 [21867731] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
За дауна спасибо. Вот нашёл репку: https://github.com/pjBooms/Jigsaw-Layers-Example Вот честно из его выступления ни разу не ясен код: public class JavaConfCollector { private static ModuleLayer createLayer(String from, String module) { var finder = ModuleFinder.of(Paths.get(from)); var parent = ModuleLayer.boot(); var cf = parent.configuration().resolve(finder, ModuleFinder.of(), Set.of(module)); return parent.defineModulesWithOneLoader(cf, ClassLoader.getSystemClassLoader()); } public static void main(String[] args) { var layer = createLayer(args[0], "devoxx.ukraine.provider"); var services = ServiceLoader.load(layer, JavaConfProvider.class); services.stream() .map(ServiceLoader.Provider::get) .forEach(confProvider -> System.out.println(confProvider.provide()) ); } } |
||||
20 апр 19, 12:11 [21867736] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1965 |
А это не к Вам. Это к тому, что если кажется, что он говорит фигню- задумайтесь о себе :)
Его выступлениях нет ничего, что можно применить сразу. Там идеи, которые позволят что-то лучше понять. Но надо знать много, чтобы это понять. |
||||
20 апр 19, 18:59 [21867880] Ответить | Цитировать Сообщить модератору |
redwhite90 Member Откуда: Сообщений: 1907 |
Вот и хочется понять что почитать, чтобы закрыть дыру между простыми примерами и тем о чем он говорит. В интернете куча примеров с requires/export но у него помимо модулей есть сервисы и слои |
||||||
20 апр 19, 19:34 [21867893] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
Вот неплохой introduction: Я вот только не понял, что значит, что библиотека поддерживает модульную систему |
22 апр 19, 15:12 [21868923] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3812 |
|
||
22 апр 19, 15:25 [21868939] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51130 |
Модули это техническое бремя особо крупных проектов. Можно прожить долгую и счастливую хипстерскую жизсть и никогда не нюхнуть тех страшных проблем о которых толкует Липский и прочие. |
22 апр 19, 16:03 [21869002] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
Года 4 назад страдал с OSGI. Так страдал, что решил свалить оттуда и жизнь и правда как-то наладилась. А вот про JPMS даже не слышал. |
||||
22 апр 19, 16:10 [21869015] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
Ну jarhell то уж очень такая популярная проблема. В контектсте неё хотелось и понять Jigsaw |
||
22 апр 19, 16:12 [21869017] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3812 |
|
||||
22 апр 19, 16:17 [21869024] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
ааа, вот оно что.... Я думал, что уже времени прошло много и должно быть кем-то разжовано для всех эта тема и не смысла ломать голову над сухим техническим текстом. |
||||||
22 апр 19, 17:58 [21869151] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3812 |
![]() 1. пилим наш набор классов на две условных части: одна не тащит конфликтующие зависимости (API), вторая тащит (IMPL) 2. API сразу помещаем в класслоадер нашего приложения 3. IMPL часть в класслоадер приложения не помещаем, а кладем где-то сбоку, а в приложение кладем описание того как нам все эти классы и зависимости достать, если мы хотим получить экземпляр класса, реализующего наш API 4. когда начинаем искать реализацию нужного API просто создаем дочерний класслодер, в него сгружаем все зависимости и, в принципе, все: класслоадеры модулей друг с другом не конфликтуют, приложение общается с модулями через API как по мне так никакой новизны тут нет - так еще и 15 лет назад делали |
||
22 апр 19, 19:46 [21869231] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
Давайте по порядку: Картинка из выступления [youtube=] ![]() Это про OSGI. Вот вообще не понятно. Можно это простыми фразами пояснить без причастных оборотов? |
22 апр 19, 19:47 [21869233] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3812 |
|
||
22 апр 19, 19:57 [21869243] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
Полагаю, что кто-то из пристуствующих смотрел этот доклад и возможно даже понял, что он имел ввиду |
||||
22 апр 19, 20:12 [21869254] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3812 |
- OSGi в особо клинических случаях "внезапно" не работает - в JPMS все работает, но там ничего нет Вообще чувак забавный, на одних и тех же слайдах умудрился два разных доклада сделать ![]() |
||
22 апр 19, 20:35 [21869262] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1965 |
Он разработчик AOT компилятора java с 20, что ли, летним стажем. Ему не модули писать, ему потом это компилировать. "Вы смотрели на молоток со стороны гвоздя?" Ничего практически ценного в его докладах нет. Но после доклада могут возникнуть некоторые вопросы, поиск ответа на которые сделает Вас умнее. Или не возникнут. И в памяти отложится нечто, кто когда-то выстрелит и поможет. Или не отложится. Или не выстрелит. Ну и можно получить эстетическое удовольствие. Или не получится :) Есть ещё Сергей Куксенко (он вроде уже не в России, и не приезжает, но старые доклады есть). Там тоже- открываются такие проблемы, о которых мы даже не подозреваем и нафиг не надо. Почти никогда. Большинству- никогда. |
||||
23 апр 19, 06:48 [21869387] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3812 |
|
||
23 апр 19, 11:46 [21869653] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 51130 |
questioner, у тебя есть какой-нибуть толстый проект где дофига зависимостей? |
23 апр 19, 12:00 [21869674] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1965 |
Да никак ![]() |
||||
23 апр 19, 19:43 [21870086] Ответить | Цитировать Сообщить модератору |
questioner Member Откуда: Сообщений: 1882 |
конечно. А вот что делать с библиотеками я так и не понял. Мне надо самому ручками каждую либу прописывать в module-info.class ? |
||
24 апр 19, 00:46 [21870204] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Java | ![]() |