|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
сам топлю за переход на 16,но вот эти модули тоже не понял) нужны очень сильно рекорды и еще сильней новые свитчи ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 21:50 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
asv79 сам топлю за переход на 16,но вот эти модули тоже не понял) нужны очень сильно рекорды и еще сильней новые свитчи Расслабся. Просто они тебе не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 23:37 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton asv79 сам топлю за переход на 16,но вот эти модули тоже не понял) нужны очень сильно рекорды и еще сильней новые свитчи Расслабся. Просто они тебе не нужны. Я бы сказал - они просто не нужны. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 06:32 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Для разработчиков JDK сама-то фича безусловно полезная, но было бы гораздо лучше если бы её не экспозили на уровень пользовательского кода. Это же когда через 10-15 лет все уйдут с java 8 быстро патчить сторонние библиотеки через подкладывание исправленного класса в classpath на первое место больше не получиться, ибо JPMS запрещает размытие пакета по нескольким jar, в итоге придётся замарачиваться пересборкой всей third-party dependency целиком даже если там одну строчку нужно подправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 08:30 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
asv79 сам топлю за переход на 16 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 11:29 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
доклад Никиты Липского который отлично разъясняет чем прекрасен Jigsaw: ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 13:22 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
[quote=gmugar]доклад Никиты Липского который отлично разъясняет чем прекрасен Jigsaw: ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 15:00 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
[quote=Lelouch] [quote=gmugar]доклад Никиты Липского который отлично разъясняет чем прекрасен Jigsaw: ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 15:10 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton Lelouch пропущено... И что делать в этом "универсальном лекарстве" если 2 модуля декларируют одинаковые exports? Расчехлять старый добрый shade plugin? При этом даже может не быть пересечения по классам Насколько я понимаю, модульность не предполагает взлома jar-ников. Нужно использовать модули as is. А экспорты не должны быть одинаковыми хотя-бы потому-что package обычно определяет поставщика ПО и этот поставщик обычно не создает внутренних конфликтов имен внутри себя. К сожалению это не так, точно видел проблему с пересечением exports: Код: plaintext
P.S. Естественно, это "ошибка" авторов указанных модулей, но это не снимает с Module System вопроса "а что делать в таком случае?" AFAIK, стандартных путей решения нет вообще и приходится "расчехлять старый добрый shade plugin" (ну или другими способами заниматься переупаковкой модулей) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 15:18 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Давай развернем термин "расчехлять старый добрый shade plugin". Тоесть я хотел спросить как далеко мы готовы зайти в попытке исправить ошибку декларации модулей. В моём понимании шейд-плагин это реверс-инжинеринг и ассемблер зависимостей заново. И возможен ли альтернативный вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:14 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
@Lelouch вы привели прекрасный пример я надеюсь что все согласны, что когда два разных JARа содержат один и тотже пакет, а тем более класс, это признак болезни, и потонцеальная проблема в рантайме. вы такое в своей системе иметь точно не хотите класс из aspectj в axiom-impl - это как раз такая история и, к слову, признанный косяк: http://svn.apache.org/viewvc/webservices/axiom/branches/1.2.x/src/site/markdown/release-notes/1.2.23.md?view=markup&pathrev=1858616 который, вроде как, исправили в следующей версии (которая релизанется непонятно когда :( ) когда такая хрень во внешних библиотеках, разумных пути ровно два: либо избавляться от такой библиотеки (к счастью, экосистема Java самая здоровая из всех ЯП, и достойную альтернативу можно найти почти всегда) либо пинать ее разработчиков, чтобы чинили это трудно, дорого, лениво: в итоге 65% из всех Java-проектов все еще на Java 8. но это не отменяет того факта, что переход на модули сделает вашу систему чище и надежней. усилия стоят того. И уже тем паче стоят того, когда речь о новом проекте а не о замшелом легаси ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:23 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
gmugar @Lelouch вы привели прекрасный пример я надеюсь что все согласны, что когда два разных JARа содержат один и тотже пакет, а тем более класс, это признак болезни, и потонцеальная проблема в рантайме. вы такое в своей системе иметь точно не хотите класс из aspectj в axiom-impl - это как раз такая история и, к слову, признанный косяк: http://svn.apache.org/viewvc/webservices/axiom/branches/1.2.x/src/site/markdown/release-notes/1.2.23.md?view=markup&pathrev=1858616 который, вроде как, исправили в следующей версии (которая релизанется непонятно когда :( ) когда такая хрень во внешних библиотеках, разумных пути ровно два: либо избавляться от такой библиотеки (к счастью, экосистема Java самая здоровая из всех ЯП, и достойную альтернативу можно найти почти всегда) либо пинать ее разработчиков, чтобы чинили это трудно, дорого, лениво: в итоге 65% из всех Java-проектов все еще на Java 8. но это не отменяет того факта, что переход на модули сделает вашу систему чище и надежней. усилия стоят того. И уже тем паче стоят того, когда речь о новом проекте а не о замшелом легаси 1) Честно - не вижу никакого смысла, есть и другие способы решения проблемы jar hell 2) А из оставшихся 35% (которые не на java 8) модули использует сколько процентов? 5? 10? (вот тут https://snyk.io/wp-content/uploads/jvm_2020.pdf на 19 странице сказано, что в 2020 году таких было аж 7%). И да - показательно, что никто не торопиться переходить на java 9+ - модули мало кому нужны. Темпы экспансии java 8 были гораздо выше. 3) У меня есть проекты где я специально переопределяю классы сторонних библиотек, чтобы добавить им функциональность, которая не предусмотрена. Что я должен в таком случае с модулями делать? Предупреждая вопрос - стандартного способа расширения функционала автором в этом месте не предусмотрено. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:30 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Lelouch, А я вообще считаю, что выпуск 9-й версии есть ни что иное, как самая настоящая диверсия сами знаете кого. Убрали всё нужное и полезное, наложили кучу какого-то непонятного г... и потихому свалили. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:45 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
gmugar, И кстати, если на то пошло, то "из коробки" модульная система в Java вообще хреново решает проблему jar hell - просто не дает запустить приложение. Если нужно (например из-за несовместимости в версиях) загрузить 2 разные версии классов - то нужно или "руками" мутить с ModuleLayer или опять же "ломать" модульную систему и переупаковывать классы. Никаких стандартных решений модульная система для такой задачи не предоставляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:46 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
В сентябре 21 года релизнется Java-17 LTS. Это будет уже третий LTS. И восьмерка станет не просто старой. Она станет дважды старой. А 11-тка перейдет в раздел уже чего-то вторичного. Стоит ли нам в этом топике обсуждать восьмерку? Ссылаясь на статистику использований, может быть. Но по топику - неконструктивно. Тема топика - модули. Вот давайте про модули. Если кто хочет OSGI - то давайте просто отдельным топиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:46 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton В сентябре 21 года релизнется Java-17 LTS. Это будет уже третий LTS. И восьмерка станет не просто старой. Она станет дважды старой. А 11-тка перейдет в раздел уже чего-то вторичного. Смотрели даты окончания поддержки 8-й и 17-й версий? mayton Стоит ли нам в этом топике обсуждать восьмерку? Ссылаясь на статистику использований, может быть. Но по топику - неконструктивно. Тема топика - модули. Вот давайте про модули. Если кто хочет OSGI - то давайте просто отдельным топиком. Так вроде уже выяснили - никому не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 16:53 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Java9+ это не только модули, но и фичи. Пилятся, например, API для внешней памяти и векторизации. Есть доработки сетевого стека. Есть (Java 11+) расширенные права доступа для вложенных классов, чтобы компилятору не требовалось генерировать прокси-классы только для того, чтобы работать с "внутренностями" объемлющего класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 17:05 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
LelouchИ кстати, если на то пошло, то "из коробки" модульная система в Java вообще хреново решает проблему jar hell - просто не дает запустить приложение. Если нужно (например из-за несовместимости в версиях) загрузить 2 разные версии классов - то нужно или "руками" мутить с ModuleLayer или опять же "ломать" модульную систему и переупаковывать классы. Никаких стандартных решений модульная система для такой задачи не предоставляет. Вы видите это как недостаток, я - как достоинство. Lelouch1) Честно - не вижу никакого смысла, есть и другие способы решения проблемы jar hell Вообще-то нет. Вы конечно можете обложится анализаторами и организационными процедурами, которые дадут вам уверенность в том, что с зависимостями всё OK. Но уверенность - это не гарантия. Модули, как раз, дают гарантию , что приложение с определенными проблемами в зависимостях просто не стартует. Это гораздо лучше, чем получить мистику в рантайме. Lelouch3) У меня есть проекты где я специально переопределяю классы сторонних библиотек, чтобы добавить им функциональность, которая не предусмотрена. Что я должен в таком случае с модулями делать? Предупреждая вопрос - стандартного способа расширения функционала автором в этом месте не предусмотрено. OK. вы воспользовались нюансами classloader и/или Reflection, чтобы "взломать" API внешней библиотеки в нарушение принципов здорового ОOП. Вот только это, согласить, грязный путь. Да, очень редко, бывает, что другого путь нет. Признаю. Но это не аргумент против модулей. Вы, собственно, говорите, что модули плохи именно тем, что закрывают, лазейки, для закрытия которых, они, собственно, и придуманы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 18:21 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
gmugar Lelouch1) Честно - не вижу никакого смысла, есть и другие способы решения проблемы jar hell Вообще-то нет. Вы конечно можете обложится анализаторами и организационными процедурами, которые дадут вам уверенность в том, что с зависимостями всё OK. Но уверенность - это не гарантия. Модули, как раз, дают гарантию , что приложение с определенными проблемами в зависимостях просто не стартует. Это гораздо лучше, чем получить мистику в рантайме. Lelouch3) У меня есть проекты где я специально переопределяю классы сторонних библиотек, чтобы добавить им функциональность, которая не предусмотрена. Что я должен в таком случае с модулями делать? Предупреждая вопрос - стандартного способа расширения функционала автором в этом месте не предусмотрено. OK. вы воспользовались нюансами classloader и/или Reflection, чтобы "взломать" API внешней библиотеки в нарушение принципов здорового ОOП. Вот только это, согласить, грязный путь. Да, очень редко, бывает, что другого путь нет. Признаю. Но это не аргумент против модулей. Вы, собственно, говорите, что модули плохи именно тем, что закрывают, лазейки, для закрытия которых, они, собственно, и придуманы :) 1.1) Как же бедные разработчики до java 9 справлялись?) 1.2) Пока не будет описана как модули большая часть готовых библиотек (а затем не будут вычищены проблемы, как например приведенные выше) их использование будет постоянной головной болью 1.3) На мой вкус, сами по себе модули сделаны "не очень", как минимум в сравнении с теми же сборками в .net 3.1) Они делают эту лазейку чуть сложнее к использованию, но ничего не закрывают 3.2) КМК модули хорошо сделаны только для 1 цели - модуляризация самой java. Потому что в текущем виде они удобны только, если весь код решения контролируется разработчиком. Использование сторонних модулей сейчас скорее похоже на хождение по граблям - модулей или нет (большая часть библиотек) или могут быть собраны не так. P.S. Если модули такие замечательные, почему ими практически никто не пользуется вот уже 3 года (или когда там java 9 вышла)? Почему не загнулся "страшный и костыльный" OSGi? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 21:59 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
gmugar, Дополнительно в копилку проблем: Насколько я знаю (если поправите - буду рад), модули в текущем виде вообще не работают при сборке условного uber-jar. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 22:11 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Lelouch1.1) Как же бедные разработчики до java 9 справлялись?) 1.2) Пока не будет описана как модули большая часть готовых библиотек (а затем не будут вычищены проблемы, как например приведенные выше) их использование будет постоянной головной болью 1.3) На мой вкус, сами по себе модули сделаны "не очень", как минимум в сравнении с теми же сборками в .net 3.1) Они делают эту лазейку чуть сложнее к использованию, но ничего не закрывают 3.2) КМК модули хорошо сделаны только для 1 цели - модуляризация самой java. Потому что в текущем виде они удобны только, если весь код решения контролируется разработчиком. Использование сторонних модулей сейчас скорее похоже на хождение по граблям - модулей или нет (большая часть библиотек) или могут быть собраны не так. P.S. Если модули такие замечательные, почему ими практически никто не пользуется вот уже 3 года (или когда там java 9 вышла)? Почему не загнулся "страшный и костыльный" OSGi? Ну а как бедные разработчики до Java 5 (~10 лет) справлялись без volatile? Жить-то можно и без новых фич. Как-то. Моя мысль в том, что модули полезная функциональность, которая позволяет улучшить приложение и открывает некоторые новые возможности. Не правильно ее игнорировать. И я не согласен, с тем что модули сделаны "не очень". Правильно они сделаны. И, по моему опыту, нет никакой особой проблемы их использовать, если у вас новый проект и сразу на Java 9+. Проблема не в модулях, а в экосистеме Java Вдруг выяснилось, что лазить в закрытые части API и таскать себе в JARы куски кода вместе оригинальными пакетами - это норма. Типа, что не запрещено, то, значит, можно. В итоге имеем, то что имеем. Lukas Eder (создатель JOOQ) писал год назад на reddit : I tried twice to modularise jOOQ. I fought a gazillion IDE bugs and it ended up not working because of transitive dependencies that had split packages. Postponed again for a few years... B это 3 года после релиза Java 9. Но опять же, это не проблема модулей, а проблема повсеместной "грязи" в библиотеках и фреймфорках. Ну и OSGi не надо тоже идеализировать. За пределами экосистемы IBM, его тоже не особо видно. В библиотеках тоже никто особо не утруждает себя "Bundle-" свойства в MANIFEST.MF добавлять (хотя это не стоит усилий почти что совсем и спецификации, к слову, уже 20 лет!) И мой личный опыт проектов с OSGi совершенно не позитивный: все то о чем Никита Липский рассказывал я видел своими глазами. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2021, 14:44 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Недавно таки решил попробовать перейти. И сразу обломался, потому как есть много зависимостей которые их не объявляют. И их не заставить работать если есть две библиотеки с одинаковыми пакетами. Может кто-то таки использует? Идея кажется интересной, но как будто бы слишком мудрено все. В Java и так трудно начать че-то понимать новичкам, а тут еще такие сложности добавились.. Поэтому не понятно стоит ли усложнять свои проекты (если это не библиотека). это называется jar hell вроде как есть решения на основе ospj ( не помю точно абревиатуру) ,есть кастомные фичи ,мы например юзаем плагин от одной конторы который позвляет нам все это конфигрурировать и транзитивные зависимости в порядок приводить и выглядит это типо вот так guajava '1.15'='1.20' тоесть когда разные либы тянут проблемную гужаву 1.15 они будут тянуть 1.20 тем самым мы избегаем джар хел ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2021, 19:31 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
gmugar Вдруг выяснилось, что лазить в закрытые части API и таскать себе в JARы куски кода вместе оригинальными пакетами - это норма А в чем собственно проблема-то? Мне вот кажется, что величина "бедствия", из-за которого "придумали" модули, уж очень сильно преувеличена: - вот если вы разработчик какого-то модуля/библиотеки, какое вам вообще дело до того, каким образом этот модуль/библиотеку используют в конечном приложении? Ну зашьется там кто-то на непубличную реализацию чего-то в каком-то определенном релизе, ну и что? ничего же страшного не произойдет от этого - тот кто это делает и так все риски понимает, а здесь получается, что фактически ваш модуль/библиотека на самом деле "так себе" (приходится же в кишки залазить) да еще вы сами запрещаете там что-либо менять, в конечном итоге это приведет к тому, что при подобном подходе вашему модулю/библиотеке довольно быстро найдут более гибкую альтернативу - если вы заказчик/эксплуатант, то нужно хорошенько так подумать, чтобы подобные "новшества" тащить в продуктовую среду: сегодня мы можем в случае беды, взять что-то и отдельно опакетить/дернуть через рефлексию и решить проблему, а завтра уже не сможем (и здесь у меня есть стойкое ощущение, что все идет к тому, что все эти модули придуманы исключительно только для того, чтобы в дальнейшем на каждый чих впаривать коммерческую поддержку) потребность в наличии модулей вроде как понятна со стороны безопасности, но есть кое-какая "проблема": апплеты еще лет 10 назад отменили, и никто теперь жавскую песочницу через рефлексию не пробивает, и за те же последние 10 лет я не могу припомнить, чтобы кому-то пришло в голову деплоить в одну JVM несколько разных приложений - от кого защищаемся-то? Выглядит вся эта история примерно также как с хранимыми процедурами в БД: уже 20 лет никто к БД напрямую пользователей не подключает, а старперы продолжают по-старинке писать хранимые процедуры, чтобы защитить непонятно что непонятно от кого. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2021, 19:43 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Проблема в том, что "всякое" делают не конечные пользователи, которые могут разрулить всё, что надо в конкретной ситуации, а разработчики библиотек. Т.е. разруливать надо не ситуацию, которую ты сам создал у себя, а гонять свинью, которая подложена кем-то другим. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 07:49 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Garrick mayton В сентябре 21 года релизнется Java-17 LTS. Это будет уже третий LTS. И восьмерка станет не просто старой. Она станет дважды старой. А 11-тка перейдет в раздел уже чего-то вторичного. Смотрели даты окончания поддержки 8-й и 17-й версий? mayton Стоит ли нам в этом топике обсуждать восьмерку? Ссылаясь на статистику использований, может быть. Но по топику - неконструктивно. Тема топика - модули. Вот давайте про модули. Если кто хочет OSGI - то давайте просто отдельным топиком. Так вроде уже выяснили - никому не надо. Как выяснилось не нужны LTS версии большим компаниям, не 17 не 117 и даже версия по годам (2021.4, 2022.1) не помогут (пример: LTS ядро Linux за неделю обновилось раз 7 - arch linux :), LTS бл. ). Нужно стабильное развитие и добавление фич решающих проблемы бизнеса, а не затаскивание все большего кол-во сахара, увеличивая сложность и чтение на чтение кода (в том числе джунами). В текущей реализации модули отчасти решают некоторые проблемы, но с другой создают новые, причем их решение обходится очень дорого и долго . В быстроменяющемся мире такие решения не нужны, всегда должен оставаться способ быстро поставить временную заплатку. Бизнесу нужна java 1.9 или уже 2.0. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 13:18 |
|
|
start [/forum/topic.php?fid=59&msg=40071733&tid=2120439]: |
0ms |
get settings: |
28ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
599ms |
get tp. blocked users: |
1ms |
others: | 385ms |
total: | 1088ms |
0 / 0 |