Что случилось с GUI-фреймворками?

Apr 13, 2019 00:46


Это третий пост в моем квесте по поиску GUI-фреймворка для десктопных приложений. Первый, второй.

Давайте немного сориентирую, что я ищу. Для многих «GUI-фреймворк» почти равно библиотека виджетов, чем больше тем лучше. Чтобы GUI собрать из кубиков лего минимальными силами. Меня это не очень возбуждает, потому что универсальных виджетов мало, а что ( Read more... )

Leave a comment

Comments 111

silvereye April 13 2019, 00:14:11 UTC
Скажу про то, что знаю, и что у меня без проблем работает - у Qt есть уже достаточно давно QML, шикарная вещь, как по мне. Это язык разметки + JS + клей для связки с C++ кодом. Полностью кросс-платформенный, одинаково выглядит везде. Состоит из базовых примитивов, поверх которых уже можно навешивать более сложную логику (тапы, мышь, транзишены, анимации), ну и уже есть какие-то готовые классические виджеты.

Reply

silvereye April 16 2019, 09:31:16 UTC
QML сам по себе как язык для опсиания look and feel оченб хорош. Проблема в том, что это был (на момент когда я его использовал, е знаю как сейчас) довольно старый диалект JS и на нем можно было удобно описать только UI. Бизнес-логинка на Vanilla JS - это боль и слезы. С другой стороны писать бизнес-логику на C++ - это тоже не сахар, а production-ready биндингов на другие языки я не припомню. В результате если не нужна была кросс-платформенность, то использовали WPF. Там бизнес-логику можно было писать на C# или еще лучше F#, а это для нас было важно. Но я бы XAML на QML променял бы в момент если бы была такая возможность.

Reply


ext_4072563 April 13 2019, 04:34:39 UTC
Почему Windows переизобретает свой тулкит в каждой версии, а macOS живет на Cocoa десятилетиями?
Cocoa это API, а не Toolkit.
WinAPI тоже живет с 1985г. и можно продолжать пользоваться.

Reply

tonsky April 13 2019, 06:02:30 UTC
> Cocoa это API, а не Toolkit.

Объясните различие?

Reply

ext_4072563 April 13 2019, 08:01:57 UTC
Toolkit - набор инструментов: язык программирования, редакторы UI, библиотеки.

API - интерфейс между системой и прикладным ПО.

В контексте поста, toolkit можно выбирать из большого количества или даже создать самому. API редко бывает > 2 разновидностей у одной ОС.

Reply

tonsky April 13 2019, 13:39:32 UTC
то есть windows наворачивает тулкит за тулкитом поверх winapi, а macos дает голое api? Почему так? macos api настолько хорош, что toolkit не нужен?

Reply


anonymous April 13 2019, 05:59:03 UTC
JavaFX оказался очень хорошим, чтобы решить задачу быстро (энтерпрайз). Кастомизировать его в принципе не так уж и больно, но всплывали нюансы и внезапные баги средств разработки.

Reply

tonsky April 13 2019, 06:01:49 UTC
А конкретнее? Что за нюансы? Что за баги?

Reply

theaspect April 17 2019, 10:08:40 UTC
5 лет назад были серьезные проблемы с производительностью и утечками памяти в режиме fxml да с поведением в некоторых сложных компонентах типа таблиц было не все гладко. Тем не менее кастомизация у fx гораздо богаче чем у swing. Да и сам API у fx приятнее и отвечает современным веяниям, в отличии от свинга.

Reply

anonymous April 13 2019, 12:52:51 UTC
А JavaFX ещё жив? Он развивается? Или только фиксятся редкие баги?

Reply


ilya_portnov April 13 2019, 06:08:49 UTC
К Qt есть биндинги для некоторых языков; но из-за технологических особенностей C++ (mangling), только для некоторых, а не для всех. А так, я не имею к нему существенных претензий.
Also, есть/был QtJambi - биндинги Qt для Java. Не развивается, насколько я понимаю.

Reply

ext_949809 April 13 2019, 09:02:37 UTC
Чтобы юзать биндинг, надо уметь в QT, но сборка и деплой усложняются. Зачем это нужно тому, кто и так уже умеет в QT? Там сложностей достаточно, чтобы ещё дополнительные вносить

Reply


anonymous April 13 2019, 06:23:54 UTC
AWT работал медленно и негибко так как делегировал отрисовку виджетов в ОС, соответственно множество системных вызовов. Swing рисует все сам, но от него остается постоянно какое-то ощущение незаконченности. Это именно тот инструмент который нужно допиливать самому под конкретные нужды и делать это постоянно, что требует очень хорошего понимания его устройства. Возможно это именно то - что ищет автор.

Reply


Leave a comment

Up