Re[3]: Java в shareware
От: Gt_  
Дата: 02.03.23 12:35
Оценка:
Иль>Я бы напротив не стал бы с нуля связываться со Spring Boot. По личному опыту любое нестандартное требование приводит к необходимости ковыряться в исходниках самого спринга. И в этом даже людям с опытом можно увязнуть надолго.

как раз в этом и преимущество популярного инструмента — на любую нестандартную задачу будут сотни и тысячи гвайдов и топиков стековерфлова. всякие орм + рест с простенькой секьюрити вполне докой и гвайдами покрывается.
Отредактировано 02.03.2023 13:06 Gt_ . Предыдущая версия .
Re[4]: Java в shareware
От: gyraboo  
Дата: 02.03.23 12:55
Оценка:
Здравствуйте, Gt_, Вы писали:

Иль>>Я бы напротив не стал бы с нуля связываться со Spring Boot. По личному опыту любое нестандартное требование приводит к необходимости ковыряться в исходниках самого спринга. И в этом даже людям с опытом можно увязнуть надолго.


Gt_>как раз в этом и преимущество популярного инструмента — на любое нестандартную задачу будут сотни и тысячи гвайдов и топиков стековерфлова. всякие орм + рест с простенькой секьюрити вполне докой и гвайдами покрывается.


Вообще, все обсуждаемые в теме проблемы (миграции БД и их откаты, деплой и его откат и т.д.) имеют в джава энтерпрайзе стандартные типовые надежные и достаточно простые решения, отработанные годами бизнесом, который на этой самой джава энтепрайзе сидит (уже третий десяток лет пошёл). ТС может нанять на месяц джависта и девопсера с корпоративным опытом, они всё под ключ наладят на типовой инфраструктуре, типовыми стандартными инструментами и подходами, напишут инструкцию по сопровождению, и бинго, профит.
Re[3]: Java в shareware
От: vsb Казахстан  
Дата: 02.03.23 13:20
Оценка:
Здравствуйте, Иль, Вы писали:

Иль>Я бы напротив не стал бы с нуля связываться со Spring Boot. По личному опыту любое нестандартное требование приводит к необходимости ковыряться в исходниках самого спринга. И в этом даже людям с опытом можно увязнуть надолго.


А какие альтернативы? Спринг бут это 90% жава "рынка". Библиотек, конечно, миллион, но по буту хотя бы есть ответы на все возможные вопросы.

Не, если есть много времени и желания заниматься интересным, я бы даже на com.sun.net.httpserver-е сделал веб-сервер, работающий с базой через JDBC, с кучкой своих велосипедов и итоговым размером жарки в пару сотен килобайтов. Которую потом вполне реально можно в полноценный бинарник преобразовать размеров мегабайтов в 15. Но... Так не делают.

Иль>Gradle + shadow даст JAR со всеми зависимостями, который можно запускать как java — jar myjar.jar . По моему проще некуда.


Ну речь же о том, чтобы сделать веб-сервер, работающий с базой, а не чтобы запустить jar. Исполняемую жарку можно сделать тремя консольными командами примерно, без всяких грэдлов, но цель же не в этом. Это всё технические мелочи. Какая вообще разница, как её запускать. Честно признаться никогда не понимал этой моды. Всё равно скрипт пишут в том или ином виде. Одним параметром больше.
Отредактировано 02.03.2023 13:25 vsb . Предыдущая версия . Еще …
Отредактировано 02.03.2023 13:25 vsb . Предыдущая версия .
Отредактировано 02.03.2023 13:23 vsb . Предыдущая версия .
Отредактировано 02.03.2023 13:23 vsb . Предыдущая версия .
Отредактировано 02.03.2023 13:22 vsb . Предыдущая версия .
Re[4]: Java в shareware
От: Gt_  
Дата: 02.03.23 14:44
Оценка: +1
vsb>Ну речь же о том, чтобы сделать веб-сервер, работающий с базой, а не чтобы запустить jar. Исполняемую жарку можно сделать тремя консольными командами примерно, без всяких грэдлов, но цель же не в этом. Это всё технические мелочи. Какая вообще разница, как её запускать. Честно признаться никогда не понимал этой моды. Всё равно скрипт пишут в том или ином виде. Одним параметром больше.

тут же шаравара. не будешь же ты писать скрипт который поставит жаву нужной тебе версии, поломав клиенту весь остальной софт. так что тут достаточно важно как запускать и чего делать если апгрейд скрипты базы выполнились с ошибкой.
Re[4]: Java в shareware
От: Иль  
Дата: 02.03.23 14:49
Оценка:
Здравствуйте, Gt_, Вы писали:


Иль>>Я бы напротив не стал бы с нуля связываться со Spring Boot. По личному опыту любое нестандартное требование приводит к необходимости ковыряться в исходниках самого спринга. И в этом даже людям с опытом можно увязнуть надолго.


Gt_>как раз в этом и преимущество популярного инструмента — на любую нестандартную задачу будут сотни и тысячи гвайдов и топиков стековерфлова. всякие орм + рест с простенькой секьюрити вполне докой и гвайдами покрывается.


Парадоксальным образом именно в этом проблема и кроется. Версий спринга — множество. Причём значительные отличия зачастую присутствуют даже в минорных версиях. При этом понять для какой версии и какой конфигурации написано то или иное руководство или дан тот или иной ответ — решительно невозможно.

Я, помнится, мучился примерно день методом тыка пытаясь подобрать решение какой-то проблемы (ЕМНИП я пытался реализовать полноценное логгирование для какой-то RPC-библиотеки). Но у меня так ничего и не получилось. Отчаявшись я полез в исходники, через какое-то время нашёл нужный вид параметра в настройках и методы которые потребовалось переопределить — и всё в итоге заработало как надо. Но я решил проверить — было ли какое-то руководство с упоминанием этого параметра и этого метода. Так вот нет, не было!

С того времени я особо на руководства не надеюсь. Да, какие-то базовые вещи типа @Service @Scope или @Autowired там описаны внятно и с версиями не меняются. Но что-то более или менее специфичное — напрочь отсутствует.
Re[5]: Java в shareware
От: vsb Казахстан  
Дата: 02.03.23 14:49
Оценка:
Здравствуйте, Gt_, Вы писали:

vsb>>Ну речь же о том, чтобы сделать веб-сервер, работающий с базой, а не чтобы запустить jar. Исполняемую жарку можно сделать тремя консольными командами примерно, без всяких грэдлов, но цель же не в этом. Это всё технические мелочи. Какая вообще разница, как её запускать. Честно признаться никогда не понимал этой моды. Всё равно скрипт пишут в том или ином виде. Одним параметром больше.


Gt_>тут же шаравара. не будешь же ты писать скрипт который поставит жаву нужной тебе версии, поломав клиенту весь остальной софт. так что тут достаточно важно как запускать и чего делать если апгрейд скрипты базы выполнились с ошибкой.


Жаву не нужно ставить. Жава прекрасно работает из папки, никому не мешая. Просто распространяешь jre рядом со своей программой и всё. Есть и другие способы, к примеру jlink выдергивает из JRE нужные для твоей программы куски, но это уже сложней.
Отредактировано 02.03.2023 14:50 vsb . Предыдущая версия .
Re[4]: Java в shareware
От: Иль  
Дата: 02.03.23 15:08
Оценка:
vsb>А какие альтернативы? Спринг бут это 90% жава "рынка". Библиотек, конечно, миллион, но по буту хотя бы есть ответы на все возможные вопросы.

Есть ответы на базовые и/или стандартные вопросы. Есть ответы на некоторые нестандартные вопросы. Но тут уже надо чтобы совпала версия спринга, по которой отвечали и той, которую используешь. А ответов на большинство нестандартных вопросов нет.

vsb>Не, если есть много времени и желания заниматься интересным, я бы даже на com.sun.net.httpserver-е сделал веб-сервер, работающий с базой через JDBC, с кучкой своих велосипедов и итоговым размером жарки в пару сотен килобайтов. Которую потом вполне реально можно в полноценный бинарник преобразовать размеров мегабайтов в 15. Но... Так не делают.


ИМХО спринг часто ошибочно воспринимают как такое самостоятельное универсальное решение. В реальности же помимо самых базовых вещей — (spring core кажется оно называется) — типа позднего связывания через Reflection (что, кстати, не так уж и сложно сделать и без спринга при желании) и т. п. — спринг просто объединяет кучу сторонних библиотек. Но что мешает использовать те же самые библиотеки без спринга? Т. е. не подтягивая кучу ненужных зависимостей через Spring Boot?

Например Srping data прикольная вещь для больших проектов. Но иногда она не нужна. А надо, допустим, исполнить запрос к БД хотя бы через тот же spring jdbc. Так вот spring boot отдельно spring jdbc не подтягивает, а только в комплекте с чем-то монструозным.

vsb>Ну речь же о том, чтобы сделать веб-сервер, работающий с базой, а не чтобы запустить jar. Исполняемую жарку можно сделать тремя консольными командами примерно, без всяких грэдлов, но цель же не в этом. Это всё технические мелочи. Какая вообще разница, как её запускать. Честно признаться никогда не понимал этой моды. Всё равно скрипт пишут в том или ином виде. Одним параметром больше.


Можно, конечно. Но зависимости (а без них что-то писать это уж совсем хардкор) придётся класть рядом. Не всегда это удобно. ИМХО проще переупаковать все зависимости в один jar и его уже класть куда надо, контролировать его версию и запускать простейшей командой.
Re[5]: Java в shareware
От: vsb Казахстан  
Дата: 02.03.23 15:18
Оценка: +1
Здравствуйте, Иль, Вы писали:

vsb>>А какие альтернативы? Спринг бут это 90% жава "рынка". Библиотек, конечно, миллион, но по буту хотя бы есть ответы на все возможные вопросы.


Иль>Есть ответы на базовые и/или стандартные вопросы. Есть ответы на некоторые нестандартные вопросы. Но тут уже надо чтобы совпала версия спринга, по которой отвечали и той, которую используешь. А ответов на большинство нестандартных вопросов нет.


Мой опыт другой, я на все свои вопросы обычно ответы нахожу очень быстро. Редко бывает, что не нахожу. Обычно если хочу очень странного. Порой это признак того, что делаю что-то не так.

Иль>ИМХО спринг часто ошибочно воспринимают как такое самостоятельное универсальное решение. В реальности же помимо самых базовых вещей — (spring core кажется оно называется) — типа позднего связывания через Reflection (что, кстати, не так уж и сложно сделать и без спринга при желании) и т. п. — спринг просто объединяет кучу сторонних библиотек. Но что мешает использовать те же самые библиотеки без спринга? Т. е. не подтягивая кучу ненужных зависимостей через Spring Boot?


Какие библиотеки? Spring MVC/Spring WebFlux это вполне себе самостоятельная библиотека для роутинга. Или взять встраиваемый томкат. Я его пытался без спринга встраивать как-то раз. У меня ещё была стадия непринятия бута. Потом залез в исходники этого самого бута, оценил, сколько они там "клея" написали для того, чтобы этот самый встраиваемый томкат у них заработал, и это было одной из вех моего "принятия" бута.

Иль>Например Srping data прикольная вещь для больших проектов. Но иногда она не нужна. А надо, допустим, исполнить запрос к БД хотя бы через тот же spring jdbc. Так вот spring boot отдельно spring jdbc не подтягивает, а только в комплекте с чем-то монструозным.


Не очень понял, о чём речь. Просто добавляешь spring-jdbc в зависимости и всё, не?

У спринг бута есть два функционала.

Первый функционал это автоконфигурирование спринга. Я раньше писал без бута. Ничего страшного в этом нет, но настройка компонентов требует времени и усилий. Если пишешь огромный монолит на 100 человеколет, то нормально. А если пишешь микросервисы, по 10 штук в год, то эти усилия уже будут занимать измеримый процент, поэтому тут бут себя оправдывает.

Второй функционал это уникальный функционал. К примеру тот же упомянутый встроенный томкат. Там довольно много кода написано. Думаю, и другой функционал есть подобного рода. Хотя можно и без встроенного томката обойтись или таки самому написать что нужно.

При этом ничего не мешает тебе использовать спринг бут там, где ты хочешь и не использовать его там, где ты не хочешь. Как в примере со spring-jdbc. Просто добавь зависимость, сконфигурируй датасорс руками, jdbctemplate-ы и тд. И всё. Бут этому никак не помешает. Или подключай бут со spring data и просто игнорируй его. Он особо кушать не просит. А spring-jdbc в зависимостях уже по-любому будет и сконфигурирован будет автоматом.
Отредактировано 02.03.2023 15:27 vsb . Предыдущая версия . Еще …
Отредактировано 02.03.2023 15:26 vsb . Предыдущая версия .
Отредактировано 02.03.2023 15:20 vsb . Предыдущая версия .
Re[5]: Java в shareware
От: Gt_  
Дата: 02.03.23 16:52
Оценка:
Иль>Я, помнится, мучился примерно день методом тыка пытаясь подобрать решение какой-то проблемы (ЕМНИП я пытался реализовать полноценное логгирование для какой-то RPC-библиотеки). Но у меня так ничего и не получилось. Отчаявшись я полез в исходники, через какое-то время нашёл нужный вид параметра в настройках и методы которые потребовалось переопределить — и всё в итоге заработало как надо. Но я решил проверить — было ли какое-то руководство с упоминанием этого параметра и этого метода. Так вот нет, не было!

сопрягать вещи бывает сложно, но это не стандартная задача и уж всяко сопрягать со спрингом много проще, чем с твоими поделками без спринга. понадобиться у него столь же абсурдная задача как нахлобучивать левые логерры, ну наймет спеца. а с велоспедом от Вани никто ни за какие деньги не будет подписываться помочь.
Re[5]: Java в shareware
От: Gt_  
Дата: 02.03.23 17:03
Оценка:
Иль>ИМХО спринг часто ошибочно воспринимают как такое самостоятельное универсальное решение. В реальности же помимо самых базовых вещей — (spring core кажется оно называется) — типа позднего связывания через Reflection (что, кстати, не так уж и сложно сделать и без спринга при желании) и т. п. — спринг просто объединяет кучу сторонних библиотек. Но что мешает использовать те же самые библиотеки без спринга? Т. е. не подтягивая кучу ненужных зависимостей через Spring Boot?

обычно мешает опыт. кто и за какие деньги будет разбираться, что ты там натворил рефлекшеном ?

Иль>Например Srping data прикольная вещь для больших проектов. Но иногда она не нужна. А надо, допустим, исполнить запрос к БД хотя бы через тот же spring jdbc. Так вот spring boot отдельно spring jdbc не подтягивает, а только в комплекте с чем-то монструозным.


расскажи нам чего такого тащит spring-boot-starter-jdbc ?
Отредактировано 02.03.2023 17:27 Gt_ . Предыдущая версия .
Re[6]: Java в shareware
От: sfsoft Россия  
Дата: 02.03.23 18:50
Оценка:
Коллеги, вы столько всего написали про Джаву, что респект вам и уважение. Но знаний это не добавило )))
Есть желающие в СПб провести небольшой ликбез по этому поводу, можно даже за деньги. Ну, или, за что-нибудь другое, если деньгами не комильфо?
Re[7]: Java в shareware
От: AlexGin Беларусь  
Дата: 03.03.23 10:02
Оценка:
Здравствуйте, sfsoft, Вы писали:

S>Коллеги, вы столько всего написали про Джаву, что респект вам и уважение. Но знаний это не добавило )))


Возможно — Вам следует выделить и точно сформулировать все оговоренные выше вопросы в тематическом форуме по Java — на этом же портале.

P.S. Есть отличный механизм: Docker
https://docs.docker.com/engine

может, как уже советовали выше, ставить сервер на Java в виде Docker контейнера?
Отредактировано 03.03.2023 10:08 AlexGin . Предыдущая версия .
Re: Java в shareware
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.03.23 10:08
Оценка:
Здравствуйте, sfsoft, Вы писали:

S>Кто что скажет по этому поводу? Есть идеи как лучше сделать и что выбрать?


Может на Go? Будет все ваше приложение — один большой статически слинкованный исполняемый файл. Соответственно, при обновлении он, один, и меняется целиком.
Re[2]: Java в shareware
От: sharez  
Дата: 03.03.23 10:11
Оценка: +1
Pzz>Может на Go? Будет все ваше приложение — один большой статически слинкованный исполняемый файл. Соответственно, при обновлении он, один, и меняется целиком.

Так и на Java так же.
Re[3]: Java в shareware
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.03.23 10:15
Оценка:
Здравствуйте, sharez, Вы писали:

Pzz>>Может на Go? Будет все ваше приложение — один большой статически слинкованный исполняемый файл. Соответственно, при обновлении он, один, и меняется целиком.


S>Так и на Java так же.


Но зато, хоть это и вкусовщина, Go — гораздо более приятный язык.
Re[7]: Java в shareware
От: Gt_  
Дата: 03.03.23 10:17
Оценка:
S>Коллеги, вы столько всего написали про Джаву, что респект вам и уважение. Но знаний это не добавило )))
S>Есть желающие в СПб провести небольшой ликбез по этому поводу, можно даже за деньги. Ну, или, за что-нибудь другое, если деньгами не комильфо?

с моей локации на территорию РФ наверно проблематично теперь заехать. лучше распиши в жава топике верхний уровень. верно ли я понял, что серверную часть клиент ставит, что нужны апдейты с базой данных, соответственно что-то изобрести с откатом апдейта. что за база на сервере сейчас ? если чего хитрое, чего в простых гайдах можно и не найти ?
Re[4]: Java в shareware
От: rudzuk  
Дата: 03.03.23 10:55
Оценка: 6 (1)
Здравствуйте, Pzz, Вы писали:

Pzz> Но зато, хоть это и вкусовщина, Go — гораздо более приятный язык.


avalon/3.0.2
Re[4]: Java в shareware
От: sharez  
Дата: 03.03.23 12:08
Оценка: 1 (1) +1
Здравствуйте, Pzz, Вы писали:

Pzz>Но зато, хоть это и вкусовщина, Go — гораздо более приятный язык.


Вообще пофиг на вкус.
Главный вопрос, где программистов искать.
По PHP я могу пойти в ближайшую ночлежку и у меня будет очередь.
По Java я найду людей по объявлению на городском форуме.
А по Go я вообще их в живом виде не видел, наверное в интернете обитают, но вид довольно редкий.
Re[6]: Java в shareware
От: · Великобритания  
Дата: 03.03.23 12:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Какие библиотеки? Spring MVC/Spring WebFlux это вполне себе самостоятельная библиотека для роутинга. Или взять встраиваемый томкат. Я его пытался без спринга встраивать как-то раз. У меня ещё была стадия непринятия бута. Потом залез в исходники этого самого бута, оценил, сколько они там "клея" написали для того, чтобы этот самый встраиваемый томкат у них заработал, и это было одной из вех моего "принятия" бута.

У меня итог был другой. Я не принял бут, а понял, что "взять встраиваемый томкат" — плохая идея. Есть более вменяемые сервера, которые клеить не надо, две строчки кода и оно работает.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: Java в shareware
От: sfsoft Россия  
Дата: 03.03.23 13:55
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>лучше распиши в жава топике верхний уровень. верно ли я понял, что серверную часть клиент ставит, что нужны апдейты с базой данных, соответственно что-то изобрести с откатом апдейта. что за база на сервере сейчас ? если чего хитрое, чего в простых гайдах можно и не найти ?


Пока здесь напишу, CTRL+C, CTRL-V можно быстро сделать

СУБД: Firebird
Сервер приложений — это свой веб-сервер, отрабатывающий JSON-RPC запросы от клиентов. Естественно многопоточный, с пулом соединений с СУБД, есть собственная реализации очереди, для долгоиграющих запросов, а также генератор отчётов (а данном случае FastReport, довольно старый, именно он и "течёт" время от времени). Отчётов около 150 и их перевод на тот же birt — долгая затея... Всё это написано на Delphi (используется самая последняя версия, есть подписка на неё). Работает шустро, никто не жалуется.

По установке у пользователей. Чаще всего никаких админов у наших пользователей нет. Да и с компьютером многие из них на "вы". Поэтому работает это всё следующим образом: наш инсталлятор копирует нужные файлы, устанавливает сервис Firebird и создает необходимые ярлыки. Т.е. запустить инсталлятор и нажать несколько раз Далее юзеры могут в большинстве своём.

По обновлениям. При запуске клиентского ПО появляется плашка, что доступна новая версия. Пользователи на своем сервере (хотя обычно это такая же рабочая машина) открывают окно сервера приложений и там жмут кнопку Обновить. Программа скачивает с нашего сайта апдейт в архиве, распаковывает его, затем создает копию рабочей БД и накатывает скрипты обновления. Если всё прошло успешно у текущего exe меняем расширение на bak, а на его место записываем новый exe. И рестартим приложение. Если произошла ошибка во время накатывания скриптов (например, юзеры сунули руки в метаданные БД и что-то сломали), то программа удаляет нерабочую копию БД и восстанавливает рабочую копию из созданной ранее. Как-то вот так всё работает.

Update: сервер приложений сам регистрируется при запуске в Планировщике Windows, поэтому при перезапуске компа он сам запускается. Прав Администратора нигде не требуется, всё работает с правами обычного юзера.
Отредактировано 03.03.2023 13:58 sfsoft . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.