На чём писать клиентское приложение с GUI?

У меня есть небольшое приложение для коммерческих структур. Разрабатывал я его на PHP/Laravel, HTML/CSS/JS. Проблема в том, что работает в облаке, а не у всех клиентов есть стабильный доступ в интернет (специфика бизнеса).
Задумываюсь о том, чтобы сделать параллельно клиентскую версию под винду или linux с возможностью синхронизации данных.
Проблема в том, что я мягко так скажем немного подотстал от современных реалий, т.к. последние 20 лет работал исключительно в web-технологиях (не считая контроллеров Arduino/ESP32). Последнее, в чем я писал это были Visual C++, Basic, Delphi и т.д. Когда то еще писал на Java для Android (простые програмки чисто для саморазвития в Android Studio).
В общем хочу подтянуть знания и изучить современный язык для подобной задачи. Программа у меня будет простая - в основном взаимодействие с СУБД типа MySQL, GUI, запросы к локальным API-сервисам и через web. К железу не требовательна, в основном диалоговые окна и отчеты.
P.S. Пока что присматриваюсь к JavaFX.
  • Вопрос задан
  • 10581 просмотр
Пригласить эксперта
Ответы на вопрос 17
vabka
@vabka
Токсичный шарпист
Можно посмотреть в сторону PWA и кэшировать данные в local storage или на диск.
Ответ написан
Комментировать
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
- Avalonia - если надо dotnet с обоих сторон и кроссплатформенность.
- MAUI - если надо dotnet с обоих сторон и кроссплатформенность без линукса.
- WebView2 - если надо dotnet на сервере, и css/html/js на клиенте, только винда.
- ElectronJS или Tauri - любой сервер, css/html/js на клиенте, кроссплатформенность.
Ответ написан
@andrey_27
"Модно" сейчас использовать позорные веб-технологии для приложений. Куда ни глянь, везде электрон или эдж притворяются приложениями, причем получается плохо. Производительность ужасная, опыт использования браузерный, если есть совесть - никогда так не делай.

А для гуи на многих языках есть фреймворки, какой язык понятнее, тот и используй. Ну или как вариант - при первой загрузке сайта сохраняться в кэш и работать автономно до подключения к интернету, затем обновиться.
Ответ написан
@froggyMan
Все хаят электрон.
Но не пишут почему конкретно он плох.
Тогда я напишу его достоинства на свой личный взгляд:
1. Ты выучил typescript - и считай (грубо округляя) стал фулл стэк разработчиком: пишешь бэкенд на ноде, клиента на условном реакте, и совмещая все это можешь создавать кроссплатформенные desctop приложения на электроне. И все это используя один язык: современный ООП ориентированный TypeScript

2. Возможности создания красивого качественного интерфейса с помощью css поистине безграничны.

3. Огромная бесплатная npm библиотека различных пакетов под любые задачи и требования.

4. Кроссплатформенность.

Жрет ресурсы - ну так по факту - одно электрон окно = один хром. У каждого из здесь сидящего прямо сейчас открыто 15 вкладок хрома.

P.S. хотелось бы услышать аргументы "против" от тех, кто имеет опыт, а не от тех кто что то где то видел и слышал и на основании этого сформировал свое мнение.
Ответ написан
@Drno
Поставить клиентам "железку" типа распбери пи или неттопа, с развернутым веб приложением? и пусть себе ходят по локалке...
Ответ написан
@tamgasoft
Если вы знаете Delphi можете его использовать. Есть community версия которая бесплатная. В последние версии Delphi есть все что нужно.
Ответ написан
Комментировать
QtWidgets - быстро
QtQuick - красиво
PyQt - молодежно
Ответ написан
@vfadeev_sam
Если присматриваешься к JavaFX, то посмотри в сторону Jmix - полноценная RAD платформа на Java. С помощью Jmix Studio быстро сделаешь то, что тебе нужно без углубления в технические детали. Внутри платформы open-source фулл-стек фреймворк Jmix. Все в реестре отечественного ПО. Есть бесплатный курс на Stepik и крутая дока. Велком - www.jmix.ru
Ответ написан
Комментировать
@Pardych
JavaFX
Не советую, он уже почти мертв. Можно из него получить что-то удобоваримое на связке TornadoFX + KFoenix + MaterialFX, на котлине, само собой, но там одного конфигурирования дофига и результат хуже и запутаннее чем Compose.

Compose Desktop (Multiplatform)
Снова котлин. Если все же хочется под JVM, то лучший выбор. Нормальный старт с онлайн визардами, большое сообщество и куча либок, за счет того что проект стартовал с одноименного дроидовского (там даже пекеджи те же). Порог вхождения может быть высоковат в сравнении с Flutter, но для десктопа это JVM со всеми его плюсами и минусами.

Flutter
Дарт. Мегатема для "простого" в системном плане. Даже более шикарный старт чем у композа, сообщество так же очень объемное и активное на либки, в основном люди из веба и мобайла. Но если хочется все три десктопа и есть сложные системные вещи - расчехляйте с++, так как хостовые аппки и платформенные части плагинов там собираются на родном для платформы gcc|msvc|clang. Но редкая птица долетит до такой экзотики.

Electron
Есть наработанный стек во фронтенде - милости просим в электрон и ему подобные вебвьюшечные проекты. В конце концов и VSCode на нем же. Самый эффективный способ поиграть в десктоп со знанием фронта.
Ответ написан
@XtraSwed
Попробуйте фреймворк flutter для языка dart, он позволяет создавать кроссплатформенные приложения.
Также есть обёртка flutter`а на Python, с помощью flet Вы сможете писать кроссплатформенные приложения на python.
Ссылки:
https://flet.dev
Ответ написан
Комментировать
@lrmpsm53
Если на веб технологиях делать, то возьми tauri
Ответ написан
Комментировать
@KOLAMBA97
Пиши на flutter. Очень удобный фреймворк
Ответ написан
Комментировать
@Zel08
Питон поддерживает gui, так зачем мучать попу и изобретать велосипед ? https://habr.com/ru/companies/selectel/articles/750146/
Ответ написан
@maxcat
Если есть опыт на Java, Delphi, VC++ и JS.
То бери Avalonia (c#). Просто потому что синтаксические и идейные свойства с этими языками есть, но c# быстрее, современнее и удобнее, чем Java и JS; удобнее и современные, чем Delphi; и просто удобнее чем Visual C++.

Если знаешь Basic, то можно и на Visual Basic .NET писать под Avalonia вроде бы (но лучше все таки на C#, кстати, есть даже хорошо работающие конвертеры из VB .NET в C# и обратно)

И ещё C# (.NET), кроме удобности, хорошей производительности, кроссплатформенности стоит выбирать потому что на нём можно делать абсолютно всё: гуевые приложения (WPF, Avalonia, MAUI, UWP, UNO), сервера(ASPNET), игры(UNITY, UNIGINE, STRIDE, ещё с 10к движков), даже графику в играх писать или делать полезные вычисления на ГПУ(COMPUTESHARP, SharpDx, OpenTK), сайты (Blazor, UNO), писать под микроконтроллеры (NET micro framework), работать с нейросетями(MLNET, Unity Barracuda, ещё разные обертки конкретно под TF, Yolo и другие популярные рантаймы/сети), а если уж совсем захочется экзотики, то даже ОС можно написать (Cosmos)
Ответ написан
Комментировать
@svn74
Java Swing - самый простой и надёжный в переносе вариант...
Ответ написан
Комментировать
@Mr_Rifer
Стоял недавно перед похожим выбором: нужны кроссплатформенные приложения с gui. Написал на kotlin/c#/go. Текущий фоворит: go + web интерфейс. Язык простой, компилируется под разные платформы. Доступ к приложению через браузер избавляет от заморочек с gui.
Ответ написан
ALLIGATOR
@ALLIGATOR
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы