|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Недавно таки решил попробовать перейти. И сразу обломался, потому как есть много зависимостей которые их не объявляют. И их не заставить работать если есть две библиотеки с одинаковыми пакетами. Может кто-то таки использует? Идея кажется интересной, но как будто бы слишком мудрено все. В Java и так трудно начать че-то понимать новичкам, а тут еще такие сложности добавились.. Поэтому не понятно стоит ли усложнять свои проекты (если это не библиотека). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 00:30 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Я тоже не нашел смысла использовать. Даже в чем идея в отличии от тебя не понял. Спринг народу лучше зашел. И стримы)). Примерно за квартал-год. Тема была одна всего и то пару фраз. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 07:00 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Пока сборщики не понимают Java modules, складывается забавная ситуация. Есть maven-modules и Java-modules. И как нам различать эту семантику? Нужна какая-то теория которая это все обобщит. Иначе будет хаос терминологии и непонимание. И нужен какой-то эффективный семпл проекта гда без Java модулей - ну вообще просто никак. Из примеров я на хабре видел статьи с GraalVM которые использовали эти возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 12:10 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Для начала рекомендую почитать эту книгу. Щас её потихоньку штудирую. Stanislav Bashkyrtsev Недавно таки решил попробовать перейти. И сразу обломался, потому как есть много зависимостей которые их не объявляют. И их не заставить работать если есть две библиотеки с одинаковыми пакетами. Скажем так. Во время активной разработки модулей, там натолкнулись на NP-полную задачу при опредлении зависимостей. Поэтому волевым решением сделали ограничение на работу с модулями с одинаковыми пакетами. Stanislav Bashkyrtsev Может кто-то таки использует? Идея кажется интересной, но как будто бы слишком мудрено все. В Java и так трудно начать че-то понимать новичкам, а тут еще такие сложности добавились.. Поэтому не понятно стоит ли усложнять свои проекты (если это не библиотека). Я лично только в теории. Т.к. тот же SpringBoot и использует модули, но как бы мне пока беспокоиться не надо, т.к. все нужные модули уже есть в зависимостях SpringBoot. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 12:32 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton Пока сборщики не понимают Java modules, складывается забавная ситуация. Есть maven-modules и Java-modules. И как нам различать эту семантику? Нужна какая-то теория которая это все обобщит. Иначе будет хаос терминологии и непонимание. И нужен какой-то эффективный семпл проекта гда без Java модулей - ну вообще просто никак. Из примеров я на хабре видел статьи с GraalVM которые использовали эти возможности. Насколько я понял. Java-модули нужны только для создания компактных приложений. Т..е. мы берем только нужное, явно это указывая. В связи со Spring'ом головного мозга, мне это как бы не нужно. Но вот думаю для каких нибудь вещей типа AWS Lambda возможно и актуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 12:37 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mad_nazgul, Где спринг использует если их не видно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 12:38 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mad_nazgul Насколько я понял. Java-модули нужны только для создания компактных приложений. В самом начале книги, которую вы штудируете, объясняются цели и задачи создания модульной инфраструктуры. Ну и о проблемах и ограничениях тоже сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 12:44 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mad_nazgulНасколько я понял. Java-модули нужны только для создания компактных приложений.Я так понимаю что задача в том чтоб не экспортировать все публичные классы наружу. Т.е. пишем либу, в которой несколько пакетов. Чтоб пакеты были видны в другом пакете приходится делать классы public. Но это также дает доступ к этим классам и всем проектам кто будет использовать либу. Что значит что менять эти классы нельзя, ибо ломает обратную совместимость. Т.е. модули должны предоставить больше инкапсуляции. maytonПока сборщики не понимают Java modules, складывается забавная ситуация. Есть maven-modules и Java-modules.Ну Maven умеет с модулями работать. Он автоматически создает модули из библиотек которые их не поддерживают и передает их в module-path. А все что для тестирования продолжает жить в class-path. Хотя насколько я понимаю зависимости все равно надо в двух местах описывать. Сначала в pom.xml, затем в module-info.java. Но соответственно не все зависимости там нужны будут, от транзитивных модулей мы зависеть не будем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 13:15 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Скрывать методы/не пущать слишком мало чтобы взлетело ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 13:41 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mad_nazgul Насколько я понял. Java-модули нужны только для создания компактных приложений. В самом начале книги, которую вы штудируете, объясняются цели и задачи создания модульной инфраструктуры. Ну и о проблемах и ограничениях тоже сказано. Ну как-то для меня не убедительно пишут. :-) Т.е. те же самые задачи раньше решались вроде бы не хуже. Лично я понял, что можно собрать только нужные модули, не пихая в приложение всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 13:45 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mad_nazgul Т.е. те же самые задачи раньше решались вроде бы не хуже. Как быть, когда вы делаете библиотечный модуль, использовать который будут самые разные люди самой разной квалификации? При том, что "библиотечным" может стать любой пакет вашего собственного проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 14:14 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mad_nazgul Лично я понял, что можно собрать только нужные модули, не пихая в приложение всё. Модуляризация серьёзным образом развязывает руки разработчикам JRE/JDK, позволяя чётко отделить общедоступное API от деталей реализации, хотя технически эти детали реализованы публичными методами классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 14:19 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Вот тут основные цели описаны. https://www.oracle.com/corporate/features/understanding-java-9-modules.htmlReliable configuration—Modularity provides mechanisms for explicitly declaring dependencies between modules in a manner that’s recognized both at compile time and execution time. The system can walk through these dependencies to determine the subset of all modules required to support your app. Strong encapsulation—The packages in a module are accessible to other modules only if the module explicitly exports them. Even then, another module cannot use those packages unless it explicitly states that it requires the other module’s capabilities. This improves platform security because fewer classes are accessible to potential attackers. You may find that considering modularity helps you come up with cleaner, more logical designs. Scalable Java platform—Previously, the Java platform was a monolith consisting of a massive number of packages, making it challenging to develop, maintain and evolve. It couldn’t be easily subsetted. The platform is now modularized into 95 modules (this number might change as Java evolves). You can create custom runtimes consisting of only modules you need for your apps or the devices you’re targeting. For example, if a device does not support GUIs, you could create a runtime that does not include the GUI modules, significantly reducing the runtime’s size. Greater platform integrity—Before Java 9, it was possible to use many classes in the platform that were not meant for use by an app’s classes. With strong encapsulation, these internal APIs are truly encapsulated and hidden from apps using the platform. This can make migrating legacy code to modularized Java 9 problematic if your code depends on internal APIs. Improved performance—The JVM uses various optimization techniques to improve application performance. JSR 376 indicates that these techniques are more effective when it’s known in advance that required types are located only in specific modules. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 14:24 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton, И как там решены взаимозависимости? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 14:33 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Опиши проблему в других словах. А то мне непонятно что такое взаимозависимости. Транзитивные что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 14:46 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton, В твоей ссылке непонятен первый абзац. Что то бла бла рекламное ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 14:52 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, В твоей ссылке непонятен первый абзац. Что то бла бла рекламное А что тебе непонятно? Декларируешь что модуль А зависит от модуля B. И в скоуп компилляци больше ничего не попадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 15:13 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton, Формат какой? По русски писать? На литературном? На матерном? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 15:38 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, мы падаем в какую-то профанацию. В девятке есть описательный механизм для зависимостей. Ты это хотел спросить. Мне кажется тема топика - более сложная и не про формат. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 15:52 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton Декларируешь что модуль А зависит от модуля B. И в скоуп компилляци больше ничего не попадает. А вот во время исполнения JRE сможет обнаружить целый класс ошибок и неоднозначностей уже на этапе загрузки. А не "когда-нибудь потом в неожиданное время". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 15:57 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Да. Аналогичная ситуация у меня была с JavaSecurity Manager. Сколько ни продумывай на этапе разработки - в рантайме все равно стрельнет что-то неоднозначное. Причем даже отладка SecurityManager не дает внятного пояснения какой привилегии не хватате. Если выдать всем все - работает. А начнешь выдавать вручную - куча потоков упали. Тоже - тема пятничного топика. Есть у меня парочка приложений которые нив какую не хотят дружить с SecurityManager. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 16:39 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton, Я понимаю тему буквально. Использовал ли ты модули и как описывал зависимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 16:45 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Я использовал OSGI в реализации Apache Karaf. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:22 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
mayton, Ты же печалился что у сишников нет менеджера зависимостей. Дак его нет и в java именно для модулей. А у шарпистов есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:25 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Сишники это особая порода людей. У них даже если такой менеджер появится - его будет очень долго игнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:34 |
|
Использует ли кто-то 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 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
L(ong)T(erm)S(upport) и Stable - попиндикулярны, как те палочки. Gentoo/Arch и прочая маргинальщина - "непрерывно обновляемые". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 14:30 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov L(ong)T(erm)S(upport) и Stable - попиндикулярны, как те палочки. . Бизнесу нужно Stable, а не "попиндикулярный" LTS и обновлениями по 7 раз в неделю * на зоопарк реализаций и надеждой через "пяток" лет стать "Stable". Если не будет внятных изменений, то будет 8 жить до 2030 года, а там "Либо ишак сдохнет, либо падишах" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 17:47 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Тогда несколько глупо сравнивать политику обновлений ядра в "непрерывно обновляемых" дистрибутивах линукса и политику обновлений в OpenJDK. Они разные, мягко говоря. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 18:44 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov глупо Возможно вы правы, но предлагаю посмотреть с другой стороны. Вот такие ядра по default предлагает Arch Linux (rolling release). Ниже видно, что есть возможность установить LTS L(ong)T(erm)S(upport) ядро. Когда выбирают LTS часто подразумевают, что это что-то стабильное (готовое в production), но это не так, по больше части просто фриз фич на какой-то момент, но сами фичи могут вообще не работать или падать при любом чихе и самое интересно, что может оказаться, что в этом LTS их не починят, а следующего LTS пока нет (прошу обратить на это внимание - это важно). Код: php 1. 2. 3. 4.
Обновил пакеты и получил (обратите внимание 39-1 ) Код: php 1. 2. 3.
Что-же делать если bug есть, а исправления не будет?
... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 20:06 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
И в добавок по пунктам (по ролику). - Модульность с циклами - всё в ваших руках, не нужны - так не делайте их; - Hot Redeploy - классная штука, если у вас большое приложение, которое деплоится по 30 мин, то при разработке + удаленная отладка это прямо глоток воздуха - "тыкнул" и уже поправил. Да есть ограничения (но даже если нужно reboot 2 модулей из 15 - то это супер). И опять же на проде вас так делать никто не заставлять, а на dev в случае проблем и EE можно ребутнуть или не заморачиваться и пилить микросервисы со Spring Boot. Сервис меньше/билд короче, сервер приложений встроенный; - Нет защиты от loading constraints, да не все гладко. Пример: Проблема/решение: https://www.ibm.com/support/pages/javalangverifyerror-jvmvrfy013-class-loading-constraint-violated-error-occurs-websphere-application-server-using-ibm-technology-jvm - Нет защиты от доступа через Reflection - и не нужно, это классная штука, сделал правку (быстро решил проблему), открыл issue у вендора.... месяцев ~ может и поправят. Бизнес должен работать, а не ждать вендора. Не все библиотеки открытые. - Порядок активации - боль, но её нужно решать как-то по другому. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 20:49 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Некоторые банки имеют свой собственный форк OpenJDK. Его сертифицируют для себя и на него разрабатывают и накатывают собственные фиксы безопасности. И разумеется смена мажорной версии здесь будет смерти подобна IMHO. Поэтому и LTS лучше IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 23:57 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Bsplesk Возможно вы правы, но предлагаю посмотреть с другой стороны. Вот такие ядра по default предлагает Arch Linux (rolling release). Ниже видно, что есть возможность установить LTS L(ong)T(erm)S(upport) ядро. Когда выбирают LTS часто подразумевают И это ваш осознанный выбор. Даже если вы плохо подумали или не подумали вообще.а теперь внимательно смотрим ролик и отказ от разных версий и что это будет значить - только не на только технические моменты, но и макретинговые/монитизационные.Ролик, вроде как, был про Java. Это совершенно другой продукт и совершенно другая политика обновления. 1. Oracle, после покупки SUN, перевёл разработку в OpenJDK . Собственная сборка Oracle стала отличаться наличием JavaFX и (лицензируемых) коммерческих фич; 2. Далее, после некоторых пертурбаций (изменено лицензирование пророческой сборки), из Java выкинули Java WebStart, а JavaEE и JavaFX выделили в отдельные проекты. Базовая часть (условная Core Java) передана в Eclipse и оформлена как AdoptOpenJDK ; 3. IBM передала в OpenJDK собственный вариант (J9), а Oracle - коммерческие фичи своей сборки. AdoptOpenJDK собирает HotSpot и J9 для Java 8+ под разные платформы и предоставляет репозитории/установщики для разных систем; 4. Версии OpenJDK Java9+ делятся на "проходные" и "долгосрочные". Отличаются сроком поддержки: полгода и не менее шести(?) лет, соответственно. "Проходные" это все версии Java 9+ , кроме Java 11 (как минимум до 2024 года). На проходных версиях отрабатывают разные экспериментальные фичи. Долгосрочные формируют из стабильного набора фич и, по мере возможности, в них портируют наработки из проходных версий. Сборки всех версий выходят раз в три месяца и включают как исправления ошибок, так и новые возможности. Кроме AdoptOpenJDK и Oracle, сборки JRE/JDK делают многие компании. Пророки лицензируют свою сборку исключительно на коммерческой основе. Остальные, насколько я могу судить, свободно предоставляют бинарники и продают техническую поддержку. Поддержка включает внеочередные сборки с исправлениями уязвимостей/ошибок или/и "персонально ваших проблем", а также расширенные сроки поддержки версий. Осторожнее, в общем, с кванторами всеобщности и не надо проецировать местечковые особенности своей эпсилон-окрестности на весь мир, "даже если вы гугль". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 05:06 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, автор"В одно окно смотрели двое. Один увидел дождь и грязь, Другой — листвы зеленой вязь, Весну и небо голубое. В одно окно смотрели двое. " Модули и запрет версий, введение LTS/не LTS - это как раз и есть rolling release. Смотрите - при обновлении модуля a он подтянул за собой обновление модулей b,c,d,e. Модули (ранние их версии) b,c,d,e. используются в модулях q,w,e,r,y, Чтобы выкатить поставку вам нужно обновить их все! Теперь посчитайте в $ какой объём работы вам нужно проделать, по большей части пустой, т.к. модули q,w,e,r,y прекрасно работали со старой версией, а в модуле a разработчик просто решил использовать последнюю версию. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 10:03 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Bsplesk Модули и запрет версий, введение LTS/не LTS - это как раз и есть rolling release. Список фич LTS известен сильно заранее. LTS версии выходят раз в три года, а проходные - позволяют посмотреть/опробовать то, что потенциально войдёт в очередную LTS версию. Кроме того, никто не заставляет немедленно обновляться при выходе новой LTS. LTS17 выйдет этой осенью, а LTS11 продолжит обновляться, как минимум, до 2024 года.Смотрите - при обновлении модуля a он подтянул за собой обновление модулей b,c,d,e.Это всё, конечно, замечательно, но при чём тут Java-рантайм??? Если разработчики конкретной библиотеки забили модуляризацию или/и забили на обратную совместимость, то в каком месте это проблема Java-рантайма? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 12:09 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov asv79 сам топлю за переход на 16 что такое стабильность?) не 15 багов в час а 10?)) по факту переезды зависят от того,насколько креативен ваш лид- если там за 50 - то будете на 8ке сидеть до конца своих дней если помоложе- 11я светит,ну а если совсем молодой то в сентябре или когда там 16я ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 19:00 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
Bsplesk Basil A. Sidorov, автор"В одно окно смотрели двое. Один увидел дождь и грязь, Другой — листвы зеленой вязь, Весну и небо голубое. В одно окно смотрели двое. " Модули и запрет версий, введение LTS/не LTS - это как раз и есть rolling release. Смотрите - при обновлении модуля a он подтянул за собой обновление модулей b,c,d,e. Модули (ранние их версии) b,c,d,e. используются в модулях q,w,e,r,y, Чтобы выкатить поставку вам нужно обновить их все! Теперь посчитайте в $ какой объём работы вам нужно проделать, по большей части пустой, т.к. модули q,w,e,r,y прекрасно работали со старой версией, а в модуле a разработчик просто решил использовать последнюю версию. ты можешь юзать плагин,который будет определять модулям те зависимости,которые ты хочешь и если как ты пишешь кто то решил тянуть новую версию в модуле- ты можешь это дело легко контролировать указывая какие версии библиотек ты хочешь видеть тоесть по факту $объем как ты выразился будет лишь в том- чтобы протестировать совместимости- что равно ровно пара дошираков + кофе для тестировщика ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 19:06 |
|
Использует ли кто-то Java Modules?
|
|||
---|---|---|---|
#18+
asv79, Ну смех же. Кого контролировать? авторов сторонних библиотек, которые используешь (в случае OpenSource, часто халявно). Так вот авторам - совершенно фиолетово, что вы у себя там контролируете. Поставили вас перед фактом - в новой версии с исправленным критичным bug используется новая major (обратнонесовместимая) версия/версии библиотек и всё - будьте добры обновите все чужие и свои модули. Так, что - пару дошираков, пожалуйста, в $, каждому разработчику, тестировщику, кто использует эту библиотеку на обновление своих модулей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 20:00 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120439]: |
0ms |
get settings: |
17ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
37ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
1068ms |
get tp. blocked users: |
1ms |
others: | 358ms |
total: | 1493ms |
0 / 0 |