На чем пишут десктопные приложения
Перейти к содержимому

На чем пишут десктопные приложения

  • автор:

На чем писать мультиплатформенное desktop-приложение? Взгляд менеджера

Сегодня авторы большинства приложений уже не могут позволить себе выпускаться под одну платформу. Early adopters сидят под маками, мейнстрим сидит под Win32, а гики и адепты open source предпочитают Linux. Каждая из этих аудиторий обладает уникальными свойствами, а поэтому важна для большинства проектов.

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

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

Обозначим рамки исследования. Мое приложение — небольшая утилита для пользователя-«чайника», которая качает файлы из интернета: минимум GUI, небольшой набор функциональности, использование внешних С++ библиотек.

Ну что, начнем. Какие есть варианты? Я рассмотрю Java, C#, C++, Python. Буду рад, если вы расскажите о других альтернативах.

Java

Данный язык/среда изначально задумывались как нечто мультиплатформенное. На Java написано большое количество приложений, крупные проекты вроде Eclipse используют именно этот фреймворк.

Большой минус Java с точки зрения пользователя — необходимость устанавливать фреймворк. Это безусловно сложнее установки Flash player’а и часто становится pain in the ass. И размер инсталлятора (я качал 80+ мб), и постоянная путаница в названиях (JRE, J2SE, JDK, JVM, . ) не играют на руку разработчикам приложений под Java.

Learning curve имеет критическое значение для любого проекта, который ставит на вирусное продвижение. Если 30% ваших пользователей не смогут поставить Java-машину (лень качать, неудобный сайт, отложили «на потом», . ) — у ваших конкурентов будет фора в 30%. Эта огромная доля пользователей, потерять которых мой проект себе позволить не может.

Все приложения, которыми мне доводилось пользоваться, не использовали «родной» интерфейс Win32. Не знаю, чем руководствовались разработчики, но с точки зрения конечного пользователя это выглядит очень не симпатично.

Примеры приложений: Eclipse, ZDE, клиент для Gnutella Limewire.
Плюсы: мультиплатформенность, большое количество кадров, развитость фреймворка.
Минусы: необходимость установки фреймворка, кривость GUI, низкая производительность.

C#

Язык C# и платформа .NET вышли из под крыла компании Microsoft, которая никогда не отличалась уважением к мультиплатформенности. Данный язык был тепло принят разработчиками и энтузиасты проекта Mono даже сделали аналог фреймворка под Linux/Unix/Mac Os X.

Аналогично с Java, приложения на C# имеют большой минус — необходимость устанавливать фреймворк. Я сам отказался от установки несколько приложений, которые требовали этого фреймворка. Менее продвинутые пользователи будут ещё более требовательными.

В остальном — сплошные плюсы, на мой взгляд.

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

C++

Старичок дотянул до наших дней и замечательно себя чувствует. Много приложений под платформы Linux и Windows до сих пор пишутся на этом языке.

Программы, написанные на C++, являются примером для других по размеру дистрибутива и экономному использованию системных ресурсов (процессор, память). Тем не менее у разработчиков есть масса претензий к С++. По моему мнению, язык является «устаревшим» и его популярность в дальнейшем будет снижаться, что подтверждается индексом TIOBE.

С точки зрения развития проекта, по сравнению с динамическими интерпретируемыми языками (вроде Ruby и Python), разработка на данном языке может иметь менее высокую скорость и более высокие издержки изменения проекта. Для стартапа, которому не столь важна производительность приложения, это может стать существенным минусом.

Примеры: Firefox.
Плюсы: отличная производительность, большое количество кадров, большое количество библиотек.
Минусы: невысокая скорость разработки.

Python

Взглянуть на Python в качестве платформы для desktop-приложений меня заставила программа MusicBrainz Picard. Несмотря на свою скриптовую сущность, Python легко собирается в один exe-файл, не требуя от пользователя установки дополнительных компонентов.

В случае разработки небольшого приложения, интерпретируемые языки вроде Python будут большим плюсом. Легкость написания и высокая скорость изменения приложения пригодится любому стартапу.

Огромным минусом различных «модных» технологий является их низкое распространение, а значит серьезные проблемы в поиске квалифицированных кадров. Ситуация с поиском программистов итак плачевная, а если ограничиться узким языком — можно вообще никого не найти. С другой стороны, храбрость перейти на новый язык имеют наиболее прогрессивные разработчики. Может получиться так, что выбрав «перспективный» язык, мы сразу отсечем миллионы середнячков, оставив себе выбор из нескольких перспективных разработчиков.

Пример: MusicBrainz Picard, оригинальный BitTorrent.
Плюсы: высокая скорость разработки и изменений, хорошая интеграция с библиотеками на С и С++.
Минусы: мало кадров, низкая производительность.

Выводы

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

Я пока выбираю между С++ и Python. Первый является «надежным» решением с известными недостатками. Второй является «рискованным», но интересным и перспективным. Надеюсь, ваши отзывы помогут мне сделать окончательный выбор. Какую платформу выбрали бы вы на моем месте?

PS. Я сейчас ищу программистов в этот стартап (с++/python/php), поэтому если кому интересно — присылайте свое резюме.

На чем лучше и быстрее написать GUI приложение?

Возникла такая потребность — нужно написать простое приложение для приёма объявлений в газету. Так-то приложение уже есть, но сделано криво, тормозит и не имеет некоторых нужных функций.

Раньше я писал лишь веб-приложения на RoR. Весь мой опыт разработки десктопных приложений сводится к Делфи, потому что им пользовался мой знакомый и заодно научил меня.

Так вот, как будет лучше написать приложение? Мультиплатформенность желательна, но в принципе пойдет и только виндовая версия.

— Ruby + какой-нибудь GUI фреймворк, но думаю что будет неудобно строить интерфейс и прога будет подтормаживать

— С++ используя Visual Studio (или взять Borland Builder? всё-таки с делфи я знаком уже). Недостаток только один — я плохо знаю С++

— Python — всегда хотел его изучить, стоит ли писать гуёвую прогу на нем?

— Старый добрый Делфи, потому что уже писал на нем что-то.

Базу данных в принципе я уже выбрал — sqlite, ибо удобно, быстро и в одном файлике.

  • Вопрос задан более трёх лет назад
  • 35448 просмотров

Давно вы писали десктопные приложения(и на чем)?

Пишу сейчас. И одно поддерживаю время от времени. Еще одно недавно апдейтил под новые требования Apple Store.

ncuxer ★
( 04.03.20 23:31:27 MSK )
ncuxer ★
( 04.03.20 23:32:20 MSK )

wxpython с помощью boa constructor — аналоги cli скриптов. В разы короче веба, потоки в wx мимо GIL идут, очередь сообщений элементарная, всё нэйтивно и без фризов.

Shadow ★★★★★
( 04.03.20 23:43:55 MSK )
Последнее исправление: Shadow 04.03.20 23:45:16 MSK (всего исправлений: 2)

«Всё» — что? Ни одного web приложения заменившего десктопное я пока не видел. Наоборот, в виде электрона их тащят на десктоп (да и это получается хреново).

C++/Qt, игры на C++/SDL2 — альтернатив как не было последние 10 лет так и не видно.

slovazap ★★★★★
( 04.03.20 23:45:39 MSK )

Да, актуальна. Не знаю как там на линуксе, но на винде всегда актуально. На C# писал.

lovesan ★★
( 04.03.20 23:45:39 MSK )
Ответ на: комментарий от lovesan 04.03.20 23:45:39 MSK

т.е. вопрос был не про C#, а про .NET

anonymous
( 04.03.20 23:53:25 MSK )

за деньги или из любви к искусству?

Harald ★★★★★
( 04.03.20 23:57:33 MSK )

Веб считай никогда и не писал. C, C++, curses, Qt.

xaizek ★★★★★
( 05.03.20 00:11:12 MSK )

Объясняю матчасть

Раньше интернет был меньше и тупой школоты в нем было меньше. Потом возникла культура игрофонов, и каждый детсадовец освоил интернетно-фейсбуковый жаргон. Часть серьезных дядек тоже сместилась в сторону игрофонов, но в качестве основного рабочего девайса используют десктопы/ноутбуки. В итоге из платформ нынче мы имеем: iOS, MacOS, Android, Windows, Linux. Почти как в 70-80-е годы, где каждый новый крупный производитель считал своим долгом создать свою собственную архитектуру. Естественно, работать на андроиде-айос крайне неудобно, потому дядьки «моё время дорого стоит» продолжают использовать как минимум ноут в качестве рабочего инструмента.

По ОС-ям чуток разъяснил, теперь переходим к собственно софту. Платформ, которые могли бы работать на всех ОС-ях, можно пересчитать по пальцам. А платформ, которые позволяли бы обеспечить близкий к родному интерфейс на всех ОС-ях, и вовсе не существует. В принципе, можно писать на вебе, электроне, Qt. Сразу приходим к тому, что у Qt поддержка мака и игрофонов так себе. Веб и электрон по сути очень близки, но отдельные модификации морд под игрофон и под десктоп все равно придется делать, потому что ну слишком уж они разные. Для оборачивания веба под каждую платформу ещё есть Cordova, но там тоже ни разу не гладко всё.

Допустим, мы приходим к самому-присамому универсальному варику под все платформы — веб с опциональной кородовой. Но вот беда: жаваскриптное приложение, которое оперирует DOM, да еще и реализуя кучу низкоуровневых часто вызываемых обработок на том же жаваскрипте (React, Vue, Angular) — тормозит, жрет много оперативы, а в итоге жрет аккому школьника, и по сути плохо подходит для игрофона. Как и плохо оно подходит для работы с большими объемами данных на десктопе. Результат — разработка React Native и Flutter.

В результате этих процессов точно сильно пострадала десктопная игровая индустрия, поскольку школьники больше не сидят как сычи дома за компом, а сидят как сычи на лавке за игрофоном. Вы можете возразить, что нынче каналы стали широкие, а сервера — дешевые, потому много чего переместилось в интернет, то есть software as service. Однако, широкополосный интернет существует уже довольно давно, а подешевели компы не только для хостеров, но и для любого дяди вани, который может обвешаться с ног до головы сервернывми и рабочими компами за довольно скромную сумму денег, потому я не считаю, что дешевый доступ к серверам в интернете стал решающим фактором.

На чем разрабатывают desktop-приложения и нужно ли оно?

Начну с того, что мне нужны советы, а не разведение войн что лучше.

Я хотел бы знать:
1. Какую технологию выбирают продуктовые компании для написания десктоп софта (кроссплатформенного).
2. Умер ли всем хорошо знакомый Делфи?
3. Стоит ли вообще смотреть в сторону desktop, когда есть возможность разработать веб-решение? Интересует вопрос, на сколько сложно аудитории перейти от использования «программ» к использованию веб-приложения.

�� Подобається Сподобалось 0

До обраного В обраному 0

Схожі топіки
  • Три способи організувати код у BlazorServer
  • Blazor Forms
  • Events in Blazor
  • Blazor Server Authorization
  • Пишемо автотести на базі Playwright та Jest

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

41 коментар

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Mykola Shatokhin Founder в Yellow Cartridge 02.11.2012 15:02

Начнем с того, на чем вы хотите писать это приложение?

Если С++, то Qt или WxWidgets
Если C, то GTK3+
Если D или что-то другое, то не подскажу.

Если Java или Python, то еще раз хорошо подумайте

Oksana Kosinova инженер-программист 02.11.2012 11:10

Интересует вопрос, на сколько сложно аудитории перейти от использования «программ» к использованию веб-приложения.

Сначала кое-кому сложно, но потом, при необходимости, desktop не заставишь использовать. Так что, не сомневайтесь.

Maksym Iakovliev Technical Solutions Architect 02.11.2012 10:57

Десктоп приложение стоит делать при следующих условиях:
1. Если приложение будет требовательно к ресурсам.
2. Если приложение должно работать даже без доступа к глобальной сети.
3. Если требуется быстрый отзывчивый интерфейс

4. Если есть ограничения по безопасности использования

Какую технологию выбирают продуктовые компании для написания десктоп софта

С/С++ в качестве языков/компиляторов

Qt/OpenGL — в качестве отрисовки UI

Умер ли всем хорошо знакомый Делфи?

Еще всякие C# переживет (шутка)

Множество мелких продуктовых компаний используют Delphi

когда есть возможность разработать веб-решение

Если есть возможность и нет вышеперечисленных ограничений- однозначно на ориентироваться надо на Web.

Sergey Litvinov .Net Developer в DataArt 31.10.2012 16:38

Как насчет wxWidgets? Популярны ли они еще? Их плюс в том, что UI нативен на каждой платформе.

Mykola Shatokhin Founder в Yellow Cartridge 02.11.2012 14:57

А они были когда-то популярны? Была бы на них документация. Ну и минус их в том, что код не скомпилится без изменений на любой платформе. Хотя если вынести все платформозависимые штуки в отдельный класс.

Sergey Litvinov .Net Developer в DataArt 02.11.2012 15:01

» Ну и минус их в том, что код не скомпилится без изменений на любой платформе»
Если речь идет о нём как чисто о UI фреймворке, то чего он не скомпилится?
Да, и платформозависимые штуки всеравно нужно выносить отдельно. В любом же случае framework не представит 100% абстракции над платформой. Хотя это конечно же зависит от конкретного проекта.

Dmitry Marchenko Web Developer в SHAPE 31.10.2012 12:28

Сейчас популярен комплексный подход к запуску сервисов — ПО iOs, Android, Windows + Web — сервис. Все эти клиенты работают с единым сервером и единой БД. Т.е. человек может с любого девайса получить доступ к сервису.
Про Делфи — существуют еще проеты на нем. Но их стараются переписать на C#.

Делфи доживает свои последние дни)

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

Например почтовый клиент для гуглопочты — это хорошо. Есть доля людей, которые ими пользуются. У меня вопрос — а есть ли ещё такие приложения, которым очень не помешало бы десктопной автоматизации. И даже не в десктопе вопрос, скорее чтобы персональный компьютер/пад выполнял за юзера частые действия, на которые тот тратит много времени. При этом «много» может быть и 2 минуты в день.

И насколько реально такие программы продавать — как они продаются, кому, где? Возможно ли B2B?

ЗЫ. Даёшь мозговой штурм!

когда я в 2008 пробовал подобное — шло более менее неплохо (600к скачек вроде), хотя это был опенсоурс

проблема в том что если «сервисы» не твои — возникает масса вопросов легальности и поддержки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *