morfizm (morfizm) wrote,
morfizm
morfizm

Category:

Современные GUI приложения

Я не писал GUI уже тыщу лет, наверное, со времён Дельфей. Полазил посмотрел, какие есть GUI-фреймворки. В частности, посмотрел Qt и JavaFX - даже если не привязываться к конкретному языку программирования, а просто смотреть, что там вообще есть из популярного.

Текущая ситуация с гуём меня огорчает. На дворе 2016 год, а всё ещё нет ничего по-настоящему кроссплатформенного, лёгкого в использовании и выглядящего нативно. Если отбросить кроссплатформенность, то для винды есть C#. Если отбросить десктопы и работать только с клаудом или другим серверным бэкэндом, то есть куча отлаженных веб-технологий (HTML, CSS, JavaScript). Всё остальное выглядит отвратительным геморроем.

А мне бы хотелось наваять какие-то утилитки под Винду, но чтобы потом можно было легко портировать на другие платформы. Чисто для примера, чтобы конструктивней размышлять на эту тему, рассмотрим утилитку обработки изображений (это действительно просто упрощённый пример, конкретно эта утилитка мне не нужна). Берёшь файл, утилитка его, скажем, уменьшает до заданного размера или с заданным качеством, юзер может увеличивать куски и сравнивать их, а потом может нажать "сохранить", или же он поменяет настройки, чтобы переделать, если ему не понравился результат.

Пришла в голову такая идея: сделать это как маленький веб-сервер. Доступ к локальной файловой системе, к тяжеловесному коду по генерации превьюшки и к любым другим клиентским фичам сделать через HTTP или TCP. Соответственно, инсталлятор утилитки прописывает firewall rule, чтобы разрешить этот порт для localhost, шорткат для запуска запускает сервер + открывает веб страницу + по закрытию клиент посылает серверу сигнал, что пора умирать. Или сделать, чтобы клиент посылал keep-alives, и как только в течение пары минут keep alives не слышно, сервер делает себе харакири.

Плюсы:
*) Кроссплатформенность. Кроссплатформенный сервер написать можно на чём угодно. Веб сайт, открывающийся во всех браузерах, я так понимаю, не очень большая проблема, если писать его правильно. Platform-specific код это только настройка firewall в инсталляторе.
*) Лёгкая переносимость на mobile если серверную часть начать где-то хостить (cloud back-end вместо localhost/desktop back-end).
*) GUI хоть и не будет выглядеть как нативное настольное приложение (browser-таки), но будет достаточно привычным и узнаваемым. С веб страницами все умеют работать.

Минусы:
*) Browser это всё-таки ненативный интерфейс. Может быть, будет неэстетично.
*) Возможно, будет долго загружаться. Как минимум, сотни миллисекунд по горячему или секунды по холодному.
*) Я не уверен, насколько легко разрабатывать и отлаживать Web гуй. Я этого очень давно не делал, но воспоминания со времён 2000 года у меня нерадостные. Хотелось бы IDE, autocomplete, пошаговый дебаггер и всякие тому подобные классные штуки. Они есть?

Ваши мысли? Есть ли что-нибудь ещё проще/правильнее для современных GUI приложений?
Tags: 1, polls questions and social games, software development
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 16 comments