LINUX.ORG.RU
ФорумTalks

Фреймворк/Тулкит для старта нового приложения

 , , ,


1

8

Здраствуй дорогой колектив.
Назрела давеча необходимость начать новый проект, который, к тому же, должен обладать адекватным интерфейсом так как софт сам по себе имеет графический пользовательский интерфейс.
В былые времена, вопрос особо не стоял:
* Если GNU/Linux онли - то С/C++/Go/Perl/Python + GTK
* Если кроссплатформенность - то C/C++/QML + Qt

И вот такая необходимость возникла но вот в свете новостей о Qt уже не очевидно что делать если нужна кроссплатформенность. Всякие електроны не катят в связи с тем что приложение должно быть отзывчивым и быстрым, но и еще хорошо структурированным для последующего развития и мейнтенанса.

Cобственно вопрос - что выбрать?

★★★★★

Последнее исправление: Jetty (всего исправлений: 1)

Я бы все равно выбрал кьют.

Zhbert ★★★★★
()

Вынашиваю идею логику слабать на copperspice (так как тоже к кутям настороженно стал относиться), а гуй, все же, на реакте каком-нибудь.

Посмотрим, что выйдет..

Жаль, кутешники пошли по наклонной..

aol ★★★★★
()

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

Electron + typescript + react?

redvicka
()

Делали мы на Qt, вышло как-то страшненько. Думал мы одни не осилили, но я вообще не видел красивых отзывчивых программ на нем, это особенно очевидно на маке. Не люблю я электрон, но скорее всего это единственный вариант сейчас.

Lordwind ★★★★★
()

Всё же Qt, наверное. Что-то да решиться, скорее всего, просто потому что на нём хватает софта.

Ну или ещё можно глянуть на всякие FLTK, wxWidgets и аналоги.

xaizek ★★★★★
()

Бери QT. Хотя бы тормозить не будет, при всех своих недостатках.

tiinn ★★★★★
()

Пока Qt, но если приложение не сложное, можно вообще попробовать сделать логику на нативных API под каждую из целевых ОС.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

И чем тебе лицензионные тёрки мешают на кутях писать? Кеды никуда не исчезнут, либкутэ в бубунте будет всегда, а на минорные циферки в версии завязываться все равно не надо

TooPar
()
Ответ на: комментарий от mydibyje

Насколько знаю, с документацией у них очень хорошо

Lordwind ★★★★★
()

Посмотрите:

  • Sciter - легкая альтернатива электрону
  • Kivy - питоний гуй
  • wxWidgets - в представлении не нуждается

С Qt, купите лицензию, если ваш проект предполагает окупаемость, хотя я бы и на бесплатной их версии остался, когда щупал их PySide2 для питона — понравилось.

mydibyje ★★★
()
Ответ на: комментарий от Lordwind

В уведомления умеет, остальное делается на серверной стороне.

Reset ★★★★★
()
Ответ на: комментарий от Lordwind

Веб не умеет в уведомления

Умеет. Ни разу не видел как сайт умоляет разрешить ему их тебе слать?

многопоточность

Умеет. С некоторыми оговорками.

конфигурируемость

Если ты под этим подразумеваешь локальное хранение настроек, то да, верно, тоже умеет.

Да и всё это не то что бы нужно, учитывая что на той же машине крутится и «сервер». Однако, делать на вебе всё равно не стоит, потому что пользоваться подобным софтом неприятно.

anonymous-angler ★☆
()
Ответ на: комментарий от Lordwind

Мне в голову из красивого и отзывчевого на Qt приходит телега. А что на GTK есть красивого и отзывчивого? Вроде бы та же хрень - без слёз не взглянешь.

anonymous-angler ★☆
()
Последнее исправление: anonymous-angler (всего исправлений: 1)
Ответ на: комментарий от Lordwind

Во-первых, всё тобой перечисленное веб умеет. Во-вторых, у меня вопрос к любителям выбирать электрон - если вы не пишете новое ide или браузер, то зачем вам электрон, а не связка из PWA + нативный демон? Причем демон нужен только если интеграция в системные api нужна кровь из носа, а это опять же большой вопрос, действительно ли она нужна вашему приложению, когда web sandbox уже умеет все необходимые прикладные api.

mimico
()
Ответ на: комментарий от mydibyje

Не, опенсорц, форфан, хобби

Jetty ★★★★★
() автор топика
Ответ на: комментарий от redvicka

Не, не взлетит, не тупящий мессенджер все же. Тут анализ и сер/дес протоколов, и комунникация с нетом, и все это с максимальной отзывчивостью самого ЮИ.

Jetty ★★★★★
() автор топика
Ответ на: комментарий от anonymous-angler

Много чего сделано красиво на Qt, это никак не коррелирует с удобством разработки или применимостью тулкита. Телеграм, кстати, на Линуксе использует GTK-диалоги и вот это всё.

meliafaro ★★★★★
()
Ответ на: комментарий от TooPar

Ну вроде так-то оно так. Ток на виндовззззе пускать тоже надо будет :) да еще и нативно :)

Jetty ★★★★★
() автор топика
Ответ на: комментарий от meliafaro

Делали мы на Qt, вышло как-то страшненько. Думал мы одни не осилили, но я вообще не видел красивых отзывчивых программ на нем

Мне в голову из красивого и отзывчевого на Qt приходит телега.

Много чего сделано красиво на Qt, это никак не коррелирует с удобством разработки или применимостью тулкита.

К чему это было сказано вообще? Я ничего не говорил ни про какие удобства разработки или применимость.

Телеграм, кстати, на Линуксе использует GTK-диалоги и вот это всё.

В каком таком линуксе? У меня в Debian Bullseye + KDE используются диалоги Qt/KDE. В Gentoo + KDE - тоже. Если в вашем линуксе это не так, то это - проблема вашего линукса, а не телеги.

anonymous-angler ★☆
()

И вот такая необходимость возникла но вот в свете новостей о Qt уже не очевидно что делать если нужна кроссплатформенность

А есть альтернативы? Я вот тут сижу и думаю «что же я выберу, если завтра мне нужно будет писать родную кроссплатформу?».

byko3y ★★★★
()
Ответ на: комментарий от Lordwind

Делали мы на Qt, вышло как-то страшненько. Думал мы одни не осилили, но я вообще не видел красивых отзывчивых программ на нем, это особенно очевидно на маке. Не люблю я электрон, но скорее всего это единственный вариант сейчас

А типа электрон на маке не выглядит как говно? И кстати да, меня тоже удивляет, что как-то Qt не развивается. То ли есть объективные причины, то ли разрабы вместо полировки старых клепают новые фичи нон-стоп.

byko3y ★★★★
()
Ответ на: комментарий от EXL

Пока Qt, но если приложение не сложное, можно вообще попробовать сделать логику на нативных API под каждую из целевых ОС

И тут внезапно выясняется, что под никсы вообще не существует родных API для работы с виджетами. Вот тебе окно, вот мышка — рисуй чо хошь.

byko3y ★★★★
()
Ответ на: комментарий от Reset

Зачем в 2021 году софту графический интерфейс? Делай веб

ТЫ так пишешь, будто вебсайт не является GUI.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

под никсы вообще не существует родных API для работы с виджетами. Вот тебе окно, вот мышка — рисуй чо хошь.

Java и C#/Mono как выкручиваются? Завязкой на GTK+. Популярные браузеры? Используют GTK+. Да сам Qt как выкручивается? Поддержкой тем GTK+. Или вот wxWidget что под капотом задействует?

В какой-то степени именно GTK+ стал родным графическим API для Linux. Он даже из коробки сразу во всех GUI-дистрах идёт уже предустановленный, тогда как тот же Qt, например, из репозиториев доустанавливать по зависимостям в ту же Ubuntu надо (по-крайней мере раньше так было, сейчас не знаю).

EXL ★★★★★
()

Если GTK был норм то IUP

Или скажи что уникального было в кьюте. QML-а нигде нет:(

antares0 ★★★★
()
Ответ на: комментарий от EXL

Java и C#/Mono как выкручиваются? Завязкой на GTK+

GTK#, впрочем, как и WinForms, мало кому нынче нужны. Avalonia имеет свой собственный тырфейс, и из GTK под никсами берутся только диалоги открытия файлов.

Да сам Qt как выкручивается? Поддержкой тем GTK+

Он и родные темы винды поддерживает так-то.

В какой-то степени именно GTK+ стал родным графическим API для Linux

Ну это примерно как использование ext4. «Родная» ли это линуксовая ФС? Нет, просто самая популярная. И разные кросплатформенные гуевые либы порой GTK используют скорее опционально, с вариантом поддержки какого-нибудь Motif. Qt не сыскала славы только из-за своей лицензии с подвохом — так-то тролли могли бы монополизировать никсовый гуй, поскольку GTK хронически отстает от кутей — мой опыт разработки в гноме говорит, что это неудивительно, и от разработки прикладного софта на Си нужно было давно отказаться, потому что слишком уж много гемора на ровном месте. В итоге многие создатели либ чешут репу и думают «Qt или GTK? А ладно, GTK, хотя бы не придется переписывать приложения, когда тролли придумают новые условия лицензирования», Правда, есть и обратная тенденция «GTK изговнился, давайте переписывать на Qt» — примерно так и сделали в Audacity.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

примерно так и сделали в Audacity

путаешь с Audacious

kott ★★★★★
()

Ребята, теоретики, Qt 4 версии хватит на всё и вся. Бери Qt5. Портируется без проблем потом на новую мажорную версию. Перевёл так свой кроссворд с 4 на 5. Кто его закапывает, не разбирается в данной предметной области.

xwicked ★★☆
()
Ответ на: комментарий от anonymous-angler

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

Lordwind ★★★★★
()

Cобственно вопрос - что выбрать?

Пиши на паскале под Dos.

Dosbox есть везде, даже на мобильных и KolibriOS, вот тебе и кроссплатформа :)

fsb4000 ★★★★★
()
Ответ на: комментарий от Lordwind

Ты смотришь на вопросы как девелопер или как юзер?

В контексте этих вопросов, разницы [почти?] нет.

Для уведомлений нужно чтобы браузер постоянно висел в фоне, а это постоянные утечки памяти.

Нет-нет-нет, ты сказал, цитирую:

Веб не умеет в уведомления

Я тебе показал, что умеет. Про то, какой ценой, речи не шло.

Одно приложение или одна вкладка это всегда один процесс в системе, не надо звиздеть.

Во первых, нет, это не [всегда] так. Попробуй в Firefox открыть больше вкладок, чем content process limit в настройках и убедись. Вкладок будет меньше, чем процессов.

Во вторых, не надо путать количество процессов и количество потоков. Например, у меня сейчас в htop 192 процесса и 744 потока. Т.е. у некоторых процессов есть несколько потоков. Это и называется многопоточностью. И веб уже в это может. В несколько процессов - вроде бы пока нет.

А конфигурируемость это возможность открыть локальный файл и задать нужные настройки, это важно для всего что сложнее калькулятора.

Ничто не мешает иметь такой же «файл» в localstorage и возможность редактировать его через какую-то форму.

Понятно что всё это - мерзкие костыли и подпорки, но отрицать их существование - глупо.

anonymous-angler ★☆
()
Ответ на: комментарий от anonymous-angler

В каком таком линуксе? У меня в Debian Bullseye + KDE используются диалоги Qt/KDE. В Gentoo + KDE - тоже. Если в вашем линуксе это не так, то это - проблема вашего линукса, а не телеги.

В любом линуксе. Кроме, возможно, каких-нибудь Кьют-окружений. Не проверял.

meliafaro ★★★★★
()
Ответ на: комментарий от Jetty

Тут анализ и сер/дес протоколов, и комунникация с нетом, и все это с максимальной отзывчивостью самого ЮИ.

Если UI живёт в своем процессе, а все остальное в сервис воркерах, то будет максимально отзывчиво.

Если хочется странного, всегда можно написать низкоуровневый код на rust и собрать в webassembly.

redvicka
()
Ответ на: комментарий от anonymous-angler

Я тебе показал, что умеет. Про то, какой ценой, речи не шло.

Ок, я неправильно обозначил вопрос. Не умеет без ущерба для системы. Жаваскрипт течет люто, а некоторые страницы вообще насилуют проц подобно майнерам (проверено на сафари в linkedin).

Во вторых, не надо путать количество процессов и количество потоко

Браузер это как песочница и своего рода ОС внутри ОС. Для каждой вкладки один процесс, занимающий один поток. Какое бы веб приложение не придумали, оно будет подчиняться этому правилу. Да, браузер может разделить какие-то задачи на несколько потоков типа аддонов, но весь код страницы будет исполняться в одном. Даже нативных десктоп приложения с многопоточностью не так много. А уж если надо использовать системные api, то вообще веб в пролете, хотя электрон это частично решает

Понятно что всё это - мерзкие костыли и подпорки, но отрицать их существование - глупо.

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

Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 2)
Ответ на: комментарий от m0rph

Затем, что в 99.99% случаев браузер это единственное приложение, запущенное на компьютере. Ну и современное железо как-то позволяет бороться с «тормозами» этого «говна».

Reset ★★★★★
()
Ответ на: комментарий от m0rph

Зачем нужно это тормозное говно?

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

Nervous ★★★★★
()
Ответ на: комментарий от Reset

В 2$21-м из нетормозных непрожорливых браузерных движков разве что Ultralight и Sciter остались. Но уж лучше с платным Qt связываться, чем с этой дрянью. Под что веб писать-то?

HTA на винде недурственен, но топикстартеру же нужна кроссплатформенность, да и Trident помирает.

Подождём лучше, пока React Native или Flutter для десктопа допилят. Тогда истинная кроссплатформа будет. Ибо даже Qt на мобилках поныне так себе.

mertvoprog
()
Последнее исправление: mertvoprog (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.