Java в shareware
От: sfsoft Россия  
Дата: 01.03.23 19:36
Оценка:
Вводные: есть десктоп приложение на Дельфи, которое активно работает с СУБД через собственный сервер приложений. Также написанный на Дельфи. В общем классическая трехзвенка.

Проблема: в сервере приложений есть сторонние компоненты не особо хорошего качества, которые «текут» по памяти. Плюс юзеры хотят Линукс, хотя бы на сервере.

Потенциальное решение: переписать на Лазаре или на Java. Честно — Лазарь не нравится. Да и используется часть возможностей Дельфи, которые в нем недоступны (например, аннотации к private членам класса). Но у Джавы, если выбирать ее, есть проблемы с деплойментом, нужен админ.

Кто что скажет по этому поводу? Есть идеи как лучше сделать и что выбрать?
Re: Java в shareware
От: YuriKobets Россия http://www.truelaunchbar.com — замена панели быстрого запуска
Дата: 01.03.23 19:40
Оценка: +1
Здравствуйте, sfsoft, Вы писали:

S>Но у Джавы, если выбирать ее, есть проблемы с деплойментом, нужен админ.


Это какие проблемы? Как-то столкнулся с похожей проблемой и выбрал Java, правда из другого набора. Никаких проблем не испытал.
Re: Java в shareware
От: cppguard  
Дата: 01.03.23 19:42
Оценка: +2
Здравствуйте, sfsoft, Вы писали:

S>Потенциальное решение: переписать на Лазаре или на Java. Честно — Лазарь не нравится. Да и используется часть возможностей Дельфи, которые в нем недоступны (например, аннотации к private членам класса). Но у Джавы, если выбирать ее, есть проблемы с деплойментом, нужен админ.


Нужен админ, чтобы залить .jar на сервер и запустить через java -jar?

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


У одного из моих заказчиков крутится 3 сервиса на Java. Все запущены как обычные приложения, без всяких web-application-server. Запускаются через systemd и стоит watchdog. Правда, я бы не назвал это shareware.
Re[2]: Java в shareware
От: sfsoft Россия  
Дата: 01.03.23 19:58
Оценка:
Здравствуйте, YuriKobets, Вы писали:

YK>Это какие проблемы? Как-то столкнулся с похожей проблемой и выбрал Java, правда из другого набора. Никаких проблем не испытал.


Не знаю насколько ты знаком с работой с СУБД и Джавой, но, к примеру, если мы обновляем метаданные в БД, то и в сервере приложений нужно изменить сигнатуру sql-запросов. То есть exe или jar тоже нужно заменить. Как заменить exe — мы знаем, а как заменить jar после апдейта метаданных БД в том же Tomcat без админа — увы, знаний не хватает. Возможно как раз потому, что с Джавой плохо знакомы. Потому и спрашиваю здесь.

Да, кстати, приложение B2B.
Re: Java в shareware
От: Gt_  
Дата: 01.03.23 19:58
Оценка:
https://www.graalvm.org/latest/reference-manual/native-image/guides/build-native-executable-from-jar/
Re: Java в shareware
От: rudzuk  
Дата: 01.03.23 20:00
Оценка:
Здравствуйте, sfsoft, Вы писали:

s> Проблема: в сервере приложений есть сторонние компоненты не особо хорошего качества, которые «текут» по памяти. Плюс юзеры хотят Линукс, хотя бы на сервере.


s> Потенциальное решение: переписать на Лазаре или на Java. Честно — Лазарь не нравится. Да и используется часть возможностей Дельфи, которые в нем недоступны (например, аннотации к private членам класса). Но у Джавы, если выбирать ее, есть проблемы с деплойментом, нужен админ.


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


Дельфи и сама умеет в линукс. С текучкой можно разобраться, при желании.
avalon/3.0.2
Re[3]: Java в shareware
От: GarryIV  
Дата: 01.03.23 20:09
Оценка: 7 (2)
Здравствуйте, sfsoft, Вы писали:

S>Не знаю насколько ты знаком с работой с СУБД и Джавой,

S>но, к примеру, если мы обновляем метаданные в БД, то и в сервере приложений нужно изменить сигнатуру sql-запросов.
Обычно наоборот делается — новый jar обновляет БД под себя (Liquibase, Flyway etc)

S>То есть exe или jar тоже нужно заменить. Как заменить exe — мы знаем, а как заменить jar после апдейта метаданных БД в том же Tomcat без админа — увы, знаний не хватает. Возможно как раз потому, что с Джавой плохо знакомы. Потому и спрашиваю здесь.

Не надо jar в томкат пихать. Можно пихать томкат в jar.
https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html

ЗЫЖ А еще лучше в докер завернуть
WBR, Igor Evgrafov
Re[2]: Java в shareware
От: sfsoft Россия  
Дата: 01.03.23 20:10
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Дельфи и сама умеет в линукс. С текучкой можно разобраться, при желании.


Я тоже люблю Дельфи всей душой, но в свете текущей ситуации хотим подстраховаться. Плюс Дельфи все таки в Линукс не до конца умеет, гуй только от Крюкова за отдельные деньги. И не факт, что он хороший, обезьяну до сих пор в чувство приводят. А гуй, хотя бы минимальный, нужен, апдейты только на сервере ставятся, ибо структуру БД приходится менять и делать ее бэкап на всякий случай. Вдруг клиент на бесперебойнике сэкономил и в момент апдейта комп выключится? Без прямого доступа к БД никак.
Re[2]: Java в shareware
От: GarryIV  
Дата: 01.03.23 20:12
Оценка: +1
Здравствуйте, Gt_, Вы писали:

Gt_>https://www.graalvm.org/latest/reference-manual/native-image/guides/build-native-executable-from-jar/

Добить хочешь топикстартера?
WBR, Igor Evgrafov
Re[4]: Java в shareware
От: sfsoft Россия  
Дата: 01.03.23 20:14
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Обычно наоборот делается — новый jar обновляет БД под себя (Liquibase, Flyway etc)


GIV>Не надо jar в томкат пихать. Можно пихать томкат в jar.


Супер, спасибо.
А если в момент апдейта метаданных что-то пойдет не так, например скрипт какой-то не пройдет? Сейчас у нас приложение само откатится на предыдущую версию, а здесь как , если jar уже новый?
Re[3]: Java в shareware
От: rudzuk  
Дата: 01.03.23 20:21
Оценка:
Здравствуйте, sfsoft, Вы писали:

s> Я тоже люблю Дельфи всей душой, но в свете текущей ситуации хотим подстраховаться.


Тут, конечно, да.

s> Плюс Дельфи все таки в Линукс не до конца умеет, гуй только от Крюкова за отдельные деньги. И не факт, что он хороший, обезьяну до сих пор в чувство приводят.


Если ты про FMXLinux, то она бесплатно идет для редакций с линуксом. Но она так себе, да.

s> А гуй, хотя бы минимальный, нужен


В смысле, гуй на сервере нужен? А не окажется, что у клиентов нет иксов на серверах?
avalon/3.0.2
Re: Java в shareware
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 01.03.23 20:30
Оценка:
Здравствуйте, sfsoft, Вы писали:

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

Есть инсталяторы джавовские вплоть до того что тащат нужный JRE, можно сделать пакеты отдавая их через apt-get и прописывать в /etc/init.d, написать sh скприт, сделать докер образ наконец.
P.S. Есть ещё fatJAR
Sic luceat lux!
Отредактировано 01.03.2023 20:53 Kernan . Предыдущая версия . Еще …
Отредактировано 01.03.2023 20:38 Kernan . Предыдущая версия .
Re[5]: Java в shareware
От: GarryIV  
Дата: 01.03.23 20:35
Оценка:
Здравствуйте, sfsoft, Вы писали:

S>А если в момент апдейта метаданных что-то пойдет не так, например скрипт какой-то не пройдет? Сейчас у нас приложение само откатится на предыдущую версию, а здесь как , если jar уже новый?


Примерно все то же самое, можно откатить БД назад (если писать роллбек скрипты).
Ну и изменения делать транзакционными тоже полезно.
WBR, Igor Evgrafov
Re[6]: Java в shareware
От: sfsoft Россия  
Дата: 02.03.23 04:19
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Примерно все то же самое, можно откатить БД назад (если писать роллбек скрипты).

GIV>Ну и изменения делать транзакционными тоже полезно.

Про БД вопросов нет, я про jar спросил. Как его обратно на старый заменить, если скрипты на базе не прошли? Вручную? Или есть какие-то варианты?
Re: Java в shareware
От: vsb Казахстан  
Дата: 02.03.23 05:04
Оценка: 2 (1)
Здравствуйте, sfsoft, Вы писали:

S>Вводные: есть десктоп приложение на Дельфи, которое активно работает с СУБД через собственный сервер приложений. Также написанный на Дельфи. В общем классическая трехзвенка.


S>Проблема: в сервере приложений есть сторонние компоненты не особо хорошего качества, которые «текут» по памяти. Плюс юзеры хотят Линукс, хотя бы на сервере.


S>Потенциальное решение: переписать на Лазаре или на Java. Честно — Лазарь не нравится. Да и используется часть возможностей Дельфи, которые в нем недоступны (например, аннотации к private членам класса). Но у Джавы, если выбирать ее, есть проблемы с деплойментом, нужен админ.


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


Я бы вам советовал wine. Поставьте линукс, поставьте wine, запустите ваше приложение под ним и, если будут проблемы, попробуйте их точечно исправить. Хотя с консольным приложением, с большой вероятностью, проблем никаких не будет.

Java это хорошо, но её надо уметь готовить. Судя по вашим сообщениям вы её приготовить не сумеете и она принесёт вам больше проблем. Если всё же возьмётесь, забудьте всё, что вы о ней знали, и приступите к работе с чистого листа. Вам нужен Spring Boot.
Отредактировано 02.03.2023 5:06 vsb . Предыдущая версия .
Re: Java в shareware
От: Crimson  
Дата: 02.03.23 06:54
Оценка:
S>Кто что скажет по этому поводу? Есть идеи как лучше сделать и что выбрать?

Выбирай Python. Кросплатформенный, куча либ, порог входа минимальный.

А что по поводу развертывания, в любом случае (Java или Python) делай докеры, сильно снимет боль большинству пользователей.
Re[3]: Java в shareware
От: Gt_  
Дата: 02.03.23 09:16
Оценка:
Gt_>>https://www.graalvm.org/latest/reference-manual/native-image/guides/build-native-executable-from-jar/
GIV>Добить хочешь топикстартера?

а что не так ? вроде вполне популярная штука если надо выкатывать как один выполняемый файл.
Re[2]: Java в shareware
От: sharez  
Дата: 02.03.23 09:56
Оценка: 2 (1)
Здравствуйте, cppguard, Вы писали:

C> запустить через java -jar


C>Запускаются через systemd


Более того: если писать сервер на Spring Boot (а так в Джаве сейчас и делают), то он автоматом собирает самозапускаемый .jar-файл, который может реагировать на стандаартные параметры командной строки, которые передают демону (сервису): "start", "stop", "status", и его можно тупо сразу линковать в /etc/init.d и настраивать автозапуск.

Плюсую за Java. Сам по вышеописанной схеме сервер с БД держу для всех своих SaaS-сервисов (но не распространяю его, сервер чисто у меня).
Re[2]: Java в shareware
От: Иль  
Дата: 02.03.23 11:35
Оценка:
vsb>Java это хорошо, но её надо уметь готовить. Судя по вашим сообщениям вы её приготовить не сумеете и она принесёт вам больше проблем. Если всё же возьмётесь, забудьте всё, что вы о ней знали, и приступите к работе с чистого листа. Вам нужен Spring Boot.

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

Gradle + shadow даст JAR со всеми зависимостями, который можно запускать как java — jar myjar.jar . По моему проще некуда.
Re[7]: Java в shareware
От: Иль  
Дата: 02.03.23 11:48
Оценка:
S>Про БД вопросов нет, я про jar спросил. Как его обратно на старый заменить, если скрипты на базе не прошли? Вручную? Или есть какие-то варианты?

Самое простое — заменить вручную. Можно забрасывать этот jar в какую-нибудь систему версионирования — типа git или что-то ещё — и выкладывать/откатывать через неё (через рабочую копию).

При желании можно даже установить какую-нибудь систему CI/CD, которых куча. Но они по сути делают то же самое + ещё что-то дополнительное (типа автотестирования, проверки каких-то требований к коду и т. п.). Проблема с этими системами в том, что в каждой из них надо отдельно разбираться, а это требует времени/сил.
Отредактировано 02.03.2023 11:49 Иль . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.