Как стать автором
Обновить

Обзор кросс-платформенных решений для разработки мобильных приложений

Время на прочтение7 мин
Количество просмотров80K
Всего голосов 55: ↑49 и ↓6+43
Комментарии119

Комментарии 119

Unity3D отлично справляется хоть и заточен под гейм дев.
В следующем году react native попадет в топ-10?

У них пока настолько крутые breaking changes, что для бизнеса юзать страшно. Ну а сам концепт то весьма хорош

Не знаете, они обещались что то для десктопа пилить или нет?

Поддержка MacOS есть в react-native-macos. Вроде для винды еще было, но не пробовал и сказать ничего не могу.
А нужно ли, если есть Electron?

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

Здесь важно понимать, что мы считаем «нативной производительностью». Мне кажется, существенной разницы между, например, декларативной разметкой в WPF или Qt Quick, и, по сути, такой же декларативной разметкой в HTML5/CSS3, не будет. Так как, и в том, и в другом случае сама отрисовка будет производиться средствами GPU. По крайней мере, в WPF это точно так — насчёт Qt не уверен.

Если же мы говорим о «классических» элементах управления Windows, то тут возникает другой вопрос — много ли найдётся желающих пользоваться фреймворком, который предоставляет весьма узкие возможности для творчества в плане внешнего вида пользовательского интерфейса. Да, разумеется, есть subclassing, во только он подразумевает отрисовку средствами GDI, которое, если мне не изменяет склероз, не очень «дружит» с аппаратным ускорением графики.

Признаю, далек от вопросов рендеринга и производительности отрисовки в WPF, Qt Quick на нейтиве. Просто исторически сформировалось мнение, что DOM всегда требует для своей поддержки большое количество памяти, а операции с DOM всегда медленные.

В HTML/CSS отрисовка происходит средствами браузера, что так или иначе дает оверхед. Плюс там, насколько мне известно, до сих пор нет нормальной виртуализации списков из коробки, что вот вообще прям плохо и сильно заметно пользователю.
У Qt и QtQuick в плане производительности все очень хорошо.
Если не ошибаюсь, QtQuick написан на с++ и поэтому(в случае минимального использования Js) он весьма шустр?
ЗЫ: сам пишу на нем, правда всего лишь второй год
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Это фича такая — не засорять код платфомы поддержкой обратной совместимости. На деле, обычно изменения не такие серьезные и хорошо описаны в релизе. Раз в 4-5 мажорных релиза приходится что-то по мелочи поправить в проекте. И это лучше, чем оставлять плохо поддерживаемый код внутри движка. Плюс сейчас разработчики немного сбавили темп выхода новых мажорных версий до одной в месяц.
«Сбавили темп» до одной мажорной версии в месяц? Боюсь представить, как часто выходили мажорные релизы до этого…
Ну, браузеры Chrome/FF примерно также приращивают по 1-2 мажорной версии.
Я бы не называл это мажорной версией (если пользоваться терминологией SemVer), это просто инкрементальные релизы
Раньше выходили раз в две недели. Обычно это багфиксы и новый функционал, но никто не запрещает сломать обратную совместимость. Так что да, это мажорные релизы.
Почти всегда хватает 5-10 минут, чтобы адаптировать приложение. Если изменения серьезные, то о них объявляют за 3-4 версии. Зато взамен ты получаешь очень быстрое развитие платформы и фикс багов.
проблемы возникнут когда надо будет адаптировать приложение, написанное 1-2 года назад
Так будет для любой платформы, для которой обратная совместимость не является основным приоритетом. Выйдет 1-2 мажорных релиза и старый код перестанет работать. В React Native эти изменения плавно «размазаны» по времени, так что проходят почти незаметно. Если приложение развивается, конечно.
Опять же, никто не заставляет постоянно обновляться. Но намного проще раз в пару месяцев исправить что-то небольшое, чем раз в год получать нерабочее приложение с 20 мажорными изменениями.
Только натив, только хардкор! :D
Было бы здорово посмотреть на список реальных полезных приложений в маркетах, реализованных на этих замечательных фреймворках.
вот так можно посмотреть приложения в гугл плей разработанные с помощью AIR https://www.google.ru/search?q=site%3Amarket.android.com+%E2%80%9Cair.com%E2%80%9D, насколько полезные я не знаю, но популярные точно есть, например slither.io
Airbnb и Discord для React Native. Discord вообще очень сложное приложение.
Судя по опросу сообщество у кьюта не так и мало по крайней мере среди хабровцев
По Unity у вас неточности. Платформ целевых там поболе будет, в том числе PS 4, Xbox One и т.д. Исходный код некоторых вещей доступен даже в паблике (просто не последние версии), а то чего нет в паблике можно по партнерской программе получить у разработчиков, правда за немалые деньги.
Как раз в ближайшее время планирую разработку мобильного приложения для сайта совместных покупок (что-то вроде интернет-магазина). Много работал с Android, но вообще не работал с iOS. При этом хорошо разбираюсь с JS и всем, что к нему прилагается.

Приложение нужно под обе эти платформы. Может кто сталкивался? Что посоветуете?

Учить iOS и заморачиваться с настройкой среды? (Мака, айфона и т.п. на руках нет, небыло и не планируется)
Использовать что-то как в статье?
Учить iOS и заморачиваться с настройкой среды?

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

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

С ios придется заморачиваться, даже в случае кроссплатформенных решений. Даже если представить, что приложение написано на базе cordova и идеально работает на всех платформах, для android правила сборки для деплоя одни, для ios — другие. Люди, работавшие для android, считают, что деплой в ios адово сложен — и наоборот...


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


В общем, да, заморачиваться придётся в любом случае. Так что совет начать с мобильной версии сайта / адаптивного дизайна очень правильный, поддерживаю!

ИМХО для такого приложения PhoneGap/Cordova — с головой. Только нужно учитывать, что проверять работоспособность как iOS так и Android версии нужно все равно на физическом устройстве.

Т.к. если ваше приложение работает, скажем, в XCode iOS emulator, это НЕ означает, что оно будет точно так же работать на физическом устройстве (iPhone/iPad)

Hint: если вы проверили на iPhone 5 и все работает отлично, это не означает, что на iPhone 7 все будет точно так же. Нам это в свое время много нервов попортило.
Qt: Небольшое сообщество

Чего? Пойдите на тот же Stackoverlow и поищите по хештегу Qt. Сравните с Xamarin и phonegap. После этого исправьте в статье на «самое большое сообщество из всех рассмотренных».

Мне кажется, автор недавно в теме, потому как не упомянул ReactNative, на котором Facebook, AirBnB, Instagram. Возможно оно сейчас сыровато, зато имхо, трендовей чем Appcelerator Titanium или Talerik. Для чистоты, в обзоре стоило упомянуть.

По многочисленным просьбам, добавил React Native

Только вот этот ваш пример с СО не будет иметь ничего общего только с мобильной разработкой в контексте Qt. С таким же успехом можно всех жс-ников записать в сообщества Фонгаппа и т.п.

Видео с разработкой мобильной игры на Qt.

Игры или Tiled Map Editor?

У вас минусы xamarin, это минусы xamarin.forms в основном. При том в там никто не запрещает использовать нативные xib, storyboard, axml.

Это минусы любых сравнений, нельзя быть специлистом во всех инструментах, от того тут и в минусах/плюсах "где-то что-то прочитал/услышал" :)

Кстати, если уж говорить про Xamarin, то там как минимум mono и сама библиотека Xamarin.Forms — open source, так что можно смело ставить +-
Qt
Android, iOS, WinRT, Windows, Symbian и Ubuntu

Уже работает под tvOS и watchOS, но пока в превью. Но у меня работает.
Плюс Sailfish и Ubuntu Phone изначально написаны на Qt (в смысле интерфейс и SDK), а BlackBerry (который упомянут в другом столбце, так что не понятно, почему он упущен здесь) тоже использует Qt как официальную среду разработки.


Плюс не понятно, почему их всех дистрибутивов линукса указана только Ubuntu, хотя оно работает и на остальных. Можно было просто Linux написать =). Ещё QNX самая что ни на есть официально поддерживаемая, на ней тесты гоняют.


Ну и плюс все остальные операционки, на которых оно тоже работает.


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

Платные версии начинаются от 7$.

От $79.

Подписался и жду статью)
Прблема с Qt в том, что он не поддерживает armv8 на Android, на котором выходят многие новые устройства.

В смысле не поддерживается?

Официальных сборок под armv8 нет, вручную собрать у меня не получилось. Да и в документации написано, что поддерживается только x86 и armv7.

Там написано что бинари собираются для x86 и armv7. И то что mips не поддерживается. А то что нет бинаря под armv8, не значит что не поддерживает.

Так я пытался собрать сам. Под armv7 собирается, под armv8 — выдает ошибку компиляции.
А почему Rhodes Framework (сейчас это Tau) даже не рассматривается? http://tau-technologies.com/
Уважаемые, если ставите минус, потрудитесь хотя бы аргумент высказать.
Минусовал не я, но так уж случилось, что я имел некое отношение к разработке экосистемы вокруг RhoMobile. Было это года 3-4 назад, и тогда даже простенькие приложения на этой платформе, увы, безбожно тормозили на (тогда) не самом бюджетном Galaxy S4 Mini.

Возможно, с тех пор интерпретатор Ruby под Android был сильно оптимизирован, но, в целом, у меня точно возникли бы вопросы о сравнении производительности Ruby и JavaScript движков на мобильных устройствах. Последние очень сильно оптимизируются под ARM платформу. Что в этом плане происходит в Ruby сообществе — мне сложно сказать.
Rho/Tau уже давно позволяет писать всё на javascript
Сам то руби выполняется довольно быстро, оычно в гибридных решениях тормозит вебвьюха.
Кстати основная проблема PhoneGap/Cordova и всех решениях построенных на их базе (а их навалом) это то что все крутиться в одной вебвьюхе и соот.в ка ктолько приложение начинает разрастаться то все приплыли — все начинает тормозить, а вынести код и данные из вебвьюхи некуда.
Это не совсем верно и зависит от того, что мы понимаем под словом «код». Если интерфейсную или бизнес-логику — да, это верно. Но если нам нужно что-то вычислительное, коммуникационное, то что можно отсадить в отдельный тред и т.д. — можно написать нативное расширение. Это возможно и для Cordova/PhoneGap, и для Rhodes, думаю и для каких-то иных фреймворков тоже.

Но в целом, да — для тяжёлых приложений с богатым интерфейсом чувствуется нагруженность вебвьюхи.
Недостатки:
Qt сложен для начинающих
Да ладно, почти все можно делать на JS, а С++/Qt довольно простой, магии нет, хорошая документация и т.д.

Реальные минусы в том что технология местами все еще сырая, а под iOS нет стиля контролов.

Что хуже, она сырая удручающе долго...

Главный плюс на самом деле в том, что нет фрагментации по устройствам на Android, можно быть уверенным что если запустилось, то будет выглядеть именно так как задумано.

Визуальный QML дизайнер неюзабелен, я не знаю кто им пользуется, но IDE в целом весьма быстрая и удобная, это да.
Он неюзабелен, если вы пытаетесь сделать одну большую вьюху, которая содержит кучу элементов и состояний (ещё и не дай бог с забинженными на что-то свойствами). А если делать небольшие компонентики по пару элементов, то их вполне можно дизайнить там. А собирать в большую вьюху уже отдельно, в текстовом редакторе.
Юнити вы сюда зря добавили — это совсем другого поля ягода: игры, 3D. Тогда уже и Unreal Engine, cocos2d-x и еще 100500 разных игровых движков нужно было.

Telerik AppBuilder по сути вообще платформа для разработки на Cordova или NativeScript.

> Titanium — это полностью открытая платформа для разработки

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

> ReactNative
> Также стоит учитывать, что при разворачивании приложения на устройство пользователя попадет весь JS, поэтому на уровне презентации не стоит держать секретную бизнес-логику.

Ну, секретной бизнес-логики вообще не должно быть (ну или хотя бы на сервере). Security through Obscurity не работает. Что разреверсить js, что нативный код — разница только в удобстве. А переиспользовать этот минифицированный фарш где-то еще все равно не получится.

Для фанатов питона есть еще такая замечательная штука, как Киви https://kivy.org

Ну, роутеры, пакеты (не завязанние на UI) можно шарить между веб-версией и Mobile App, например реализацию API держать одной библиотекой.

Я писал про доступность js кода. Результирующий bundle будет минифицирован, так что никто в здравом уме не будет переиспользовать этот код где-то в своих приложениях.

Так зачем шарить бандл, если шарятся сорцы всегда. Идея шарить модели / API / библиотеки между Mobile / Web, а потом конечно все собирается и unreadable бандл, но на этапе разработки мы имеем ре-использование кода.

Перечитайте цитату, которую я комментировал.

Разрабатываю на Corona SDK. Очень доволен. Не понял почему её нету в списке-опроснике.

Хотелось бы добавить, с недавних времен Xamarin поддерживает еще и Tizen.
НЛО прилетело и опубликовало эту надпись здесь
Кстати, поддержу Haxe.
Но генерация выходного кода мне в нем не особо нравится: слишком много лишнего кода. Напоминает, как если из ворда сохранять html. Можно, но выходной файл будет _слегка_ не оптимизирован. Да и не читаем изнутри, имхо.
НЛО прилетело и опубликовало эту надпись здесь

У Haxe почему-то нет и никогда не было нормального маркетинга. Сам писал на нём больше 5 лет, когда Flash был в горе.
На OpenFL можно делать отличные кроссплатформенные игры и не париться вообще. Всё из коробки прекрасно работает.
Насчет бизнес прилжений — наврядли Haxe это хороший выбор. По-хорошему бизнес-приложения должны соблюдать дизайнерские гайдлайны для платформы. А крутых гуёв, которые выглядят нативненько, под Haxe нету. Да и доступ к нативным API на Haxe проблематичен. Т.е. как бы всё есть для этого, есть много всяких мелких либ, которые что-то умеют. Но нет одной большой и добротной, которая умела бы все нативные API на всех платформах

НЛО прилетело и опубликовало эту надпись здесь

Скажите, пожалуйста, где вы находите заказчиков, готовых платить за Haxe? Его ж никто не знает и не сможет поддерживать кроме вас самих.

Некоторым заказчикам важен функционал готового приложения, а на чем и как будет реализован им не важно.
от выбора фреймворка зависит не только функционал и быстродействие готового приложения, но еще и время разработки. Заказчикам это как правило важно.

А под какие compiler-targets разрабатываете?

НЛО прилетело и опубликовало эту надпись здесь

Просто фантастика! Хотя я всё равно не понимаю, откуда же такие заказы берутся — я так тоже хочу… Поделитесь секретом

НЛО прилетело и опубликовало эту надпись здесь
Qt сложен для начинающих

не совсем согласен. Qt — самое простое из всего, что есть в с++ на сегодня. Просто сам по себе с++ считается одним из сложнейших среди популярных яп.
Автор смешал в кучу Xamarin и Xamarin.Forms, т.е. я ему доверять уже не могу — накосячил в описании знакомого мне инструмента, значит наверняка накосячил и в описании других. Судя по комментариям — так оно и есть. Т.е., статья бесполезна, а то и вредна. Печально.

Native Hybrid: используется когда вам нужны нативные UI элементы, в этом случае приложение будет включать несколько WebView в контейнере.

Ничерта не понял из этой фразы. Что имелось ввиду?
Лично я поставил плюс за провокацию живого обсуждения, а в целом слабовато, да.
Решил посмотреть, как Роберт Дауни младший рассказывает про разработку на Xamarin, чуть лицо фейспалмами не разбил… :D
Этот рейтинг не из того же исследования где МГУ занял 3 место?:) просто интересно как составлялся этот рейтинг используемости технологий. И непонятно почему так перепрыгнули AIR, интересно было бы посмотреть результаты опроса.
Есть фреймворк Weex от Alibaba (https://weex-project.io). Поддержка Vue синтаксиса, Android+iOS+HTML5.
Язык программирования Go
https://godoc.org/golang.org/x/mobile/app
Android и iOS

Замечу что поддержка GUI на довольно примитивном уровне.

Стоит рассматривать прежде всего как вспомогательный код для ресурсоемких вычисления, ибо Go компилируется в код микропроцессора, а не выполняется на эмуляторе или транслятором.

Если кто-то знает примеры сложного открытого кода для GUI на Go — киньте сюда.

В теории, особо тормозить там нечему — приложения должны получаться очень даже шустрые.
Поддержки UI там вообще нету. Да, можно отрендерить OpenGL или вызвать API платформы, но что-то серьезно так не разработаешь. Так что увы, но
Стоит рассматривать прежде всего как вспомогательный код для ресурсоемких вычисления

Действительно, тормозить нечему :D

На фоне подавляющего большинства других распространенных кросс-платформенных инструментов — тормозить в Go нечему. Прочие — нечасто бывают в нативном коде.

Так нет гуй инструментов — нет и тормозов. Когда смогут написать нормальный UI фраемворк (а лучше и правильние — хороший интероп с java 3rd party компонентами\контролами — тогда будем говорить. А так это как свифт — Hello world запустить-то на андроиде можно — но бесполезно. А если нужна скорость — C++. Не вижу пока никакого смысла в го на мобилках.

Так нет гуй инструментов — нет и тормозов


Когда GUI-ем занимается сама ОС, а именно это вы сами и упомянули:
а лучше и правильние — хороший интероп с java 3rd party компонентами\контролами

то ответственность за тормоза опять таки на ОС,
а не на языке.

Ну тогда удачи в реализации огромного UI фраемворка, который будет в себе содержать уже все эти сотни готовых контролов, к которым привыкли пользователи. Дизайнер, декларативный интерфейс, вот это всё. В лучшем случае получится какой-нибудь qt.

Ну тогда удачи в реализации огромного UI фраемворка, который будет в себе содержать уже все эти сотни готовых контролов, к которым привыкли пользователи. Дизайнер, декларативный интерфейс, вот это всё. В лучшем случае получится какой-нибудь qt.


При прочих равных — то есть при использовании одного и того UI — программа, созданная c golang, будет шустрее всех упомянутых вариантов, даже быстрее родной для Android Java (ну тут от вида софта зависит, для некоторых особо интенсивно выводящих в UI игр и т.п., может и не быстрее; но для таких как раз и придуман OpenGL-вариант). Обойти golang сможет только C/C++/Objective C

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

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


Если бы было всегда достаточно 1 языка программирования и с ним было бы все заведомо удобно и круто — 1 язык и существовали бы.

У плюсов дороже разработка — следить за памятью нужно строже, concurrency не столь удобна и пр.

К тому же мы обсуждаем конкретные инструменты для конкретно Android+iOS, которые позволяют минимизировать телодвижения по созданию кода под 2 системы сразу.

Плюсы сами по себе этого не позволяют.

Ну вот смотрите, у плюсов есть огромное количество библиотек (всё что связанное с обработкой видео, аудио, изображений, геймдев и т.п.). У Xamarin/js/java/obj c есть Ui тулкиты, дизайнеры, иде в которые вложено огромное количество человекочасов и выточенные годами + огромное комьюнити и море 3rd parties. А go ни того, ни сего. Только пяток хипстеров, которые на нем пишут микросервисы на бэкенде. Как язык довольно спорный и точно не лучше других.

Ну вот смотрите, у плюсов есть огромное количество библиотек (всё что связанное с обработкой видео, аудио, изображений, геймдев и т.п.). У Xamarin/js/java/obj c есть Ui тулкиты, дизайнеры, иде в которые вложено огромное количество человекочасов и выточенные годами + огромное комьюнити и море 3rd parties. А go ни того, ни сего. Только пяток хипстеров, которые на нем пишут микросервисы на бэкенде. Как язык довольно спорный и точно не лучше других.


Что значит — лучше?
Вариант — да.

Насчет количества библиотек — вы просто не в курсе.
Счет библиотек в Go (pure Go и биндингов к C-шным) давно уже идет на сотни тысяч.

Кстати, о библиотеках — в плюсы Go против C++ можно добавить намного более прозрачную работу с библиотеками.

Вариант, вполне такой же вариант как и js, к примеру.
Для соответствующих своих задач, разумеется.

Скажем, те варианты с js, что я смотрел для Android+iOS — подвешивал даже не самое старое (не топовое) железо.

У всех есть достоинства и недостатки.
Я сам не буду использовать Go для UI на Android+iOS в ближайшее время, помучаюсь пока с тормозными, но более комплексными решениями.
давно уже идет на сотни тысяч.

Спасибо, улыбнулся :)
Хотя бы родной гугловый Skia хоть забайндили уже в го чтобы сделать нормальный UI фраемворк? Или вы планируете на голом opengles сделать сами? :))
То, что у вас там где-то жс тормозил — не повод тащить в мобилки очередной язык и клепать к нему всю мобильную инфраструктуру с нуля. На java/swift ничего не тормозит. Тормозит только в кривых руках, но в таких же руках и го будет тормозить.

Спасибо, улыбнулся :)
Хотя бы родной гугловый Skia хоть забайндили уже в го чтобы сделать нормальный UI фраемворк? Или вы планируете на голом opengles сделать сами? :))


исходники golang'овых библиотек под skia живут на go.skia.org

То, что у вас там где-то жс тормозил — не повод тащить в мобилки очередной язык и клепать к нему всю мобильную инфраструктуру с нуля. На java/swift ничего не тормозит. Тормозит только в кривых руках, но в таких же руках и го будет тормозить.


У нас тут вполне конкретное обсуждение:

Инструментарий под одновременно Android+iOS

Насчет «Ява не тормозит» — не надо врать-то:
Ускоряем приложение Android с помощью Golang

1) ссылка go.skia.org вы уверены что это байндинги golang на Skia?
2) ссылка на проблему с java порадовала — никакого кода "клянусь, посоны, написал на джаве — дико тормозила!".
3) Раз одновременно под Android+iOS давайте возьмем Xamarin ;-)


Нативный код процессора против эмуляции в виртуальной машине

эмуляция в виртуальной машине омг. про aot, llvm видимо не стоит даже заикаться. Про реализацию сборки мусора — в вас опять же говорит бэкендщик.

1) ссылка go.skia.org вы уверены что это байндинги golang на Skia?


Может бандинги, а может и pure Go.
А что это по вашему?

2) ссылка на проблему с java порадовала — никакого кода «клянусь, посоны, написал на джаве — дико тормозила!».


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

Про реализацию сборки мусора — в вас опять же говорит бэкендщик.


При чем здесь backend?
Когда тормозит интерфейс на сборке мусора — это очень даже не здорово.

эмуляция в виртуальной машине омг. про aot, llvm видимо не стоит даже заикаться.


Вы Intellij IDEA что ли не видели?
Всем хороша.
Много лет как развивается.
Сомнений в квалификации разработчиков нет никаких.
Но — притормаживает.
Даже на современном неслабом железе.
Тормозит только в кривых руках, но в таких же руках и го будет тормозить.


От криворукости все равно никуда деться. И нужно брать её в расчет всегда.

При одинаковой исходной криворукости разработчика программа на Go тормозит меньше программы на Java.

Это чисто архитектурно, ибо:
1) Нативный код процессора против эмуляции в виртуальной машине
2) Наилучшая на сегодня реализация сборки мусора в параллельной среде.

C++ быстрее Go только за счет п.2)
Правда за счет этого же пункта у С++ получается более трудоемкая разработка.
зато плюсы вкупе с Qt позволяют реализовывать и хороший параллелизм, и упрощение работы с памятью, и создавать код для android+ios сразу…
зато плюсы вкупе с Qt позволяют реализовывать и хороший параллелизм, и упрощение работы с памятью, и создавать код для android+ios сразу…


Ну а почему же Qt не является основным продуктом разработки для мобильных платформ на сегодня? Отчего же тут так бурно обсуждают пару десятков альтернатив?
;)
Интересный вопрос, кстати. Я думаю, это в первую очередь из-за:
1. с++ — компилируемый язык.
2. QML появился только в 2009-м.
3. Symbian умер, blackberry еле дышит (продвигать Qt особо некому)
1. с++ — компилируемый язык.


Java и ObjectiveC — все так же компилируемые. Разве это мешает делать нативные приложения для каждой из платформ в отдельности.

2. QML появился только в 2009-м.


Ну а Android — в конце 2008, а распространение массовое началось только с версии 2, которая в 2010-ом.

3. Symbian умер, blackberry еле дышит (продвигать Qt особо некому)


Qt-то как раз не только Symbian и Blackberry.
Иначе бы мы его тут не обсуждали в кросс-платформенных средствах.
Qt-то как раз не только Symbian и Blackberry.
Иначе бы мы его тут не обсуждали в кросс-платформенных средствах.

Я так понимаю, имелись ввиду маркетинговые вливания.
да, но не только. У нативной для одной из популярных систем технологии заведомо будет фора. Скажем, взлети Ubuntu phone и Qt бы популяризовался намного быстрее

Только ни Ubuntu phone, ни Sailfish не взлетели.

Я так понимаю, имелись ввиду маркетинговые вливания.


А зачем QT раскрутка?
Он уже.
Для мобильных? 

Мне как-то адепт QT заверял, что у меня точно стоит хотя бы одно приложение на нем. Не нашли. Я не спорю, что это хорошая технология, распространённая в Linux-среде и свои задачи она выполняет. Но у неё больший потенциал.

Лично мне не хватает хорошего WYSIWYG редактора для QtQuick.

Как показывает практика: если есть livereload, то редактор становится ненужен. Давно qt не пользовался. Ничего такого еще туда не завезли?

Здравствуйте. Хотел бы спросить у знающих людей вообще стоит смотреть в сторону NativeScript как инструмент построения production программ для Android платформи (для начала).
Если был опыт с angular 2 — стоит. Если нет, то лучше посмотреть в сторону react native
  1. Xamarin давно уже OpenSource и любой может отправить PR и при чем регулярно публикуют кто и что за PR отправилял:
    https://releases.xamarin.com/pre-release-xamarin-forms-2-3-4-184-pre1/


  2. В статье ссылки на цены версий IDE а не на Xamarin который полностью бесплатный.


  3. О том что есть отдельно Xamarin без какого либо XAML (который сам по себе не меньше популярен чем Forms) и есть совсем другая платформа Xamarin Forms с XAML разметкой (надстройка над Xamarin) который относительно недавно стал набирать популярность в сообществе Xamarin в статье вообще ни слова.

Судя по всему в остальных платформах Вы разбираетесь примерно на таком же уровне.


Я могу понять (хотя на самом деле не могу понять), что вы не захотели разобраться в теме о которой Вы пишете. Но неужели было слишком трудно хотя бы пройти по той ссылке что вы привели в таблице и посмотреть на что именно Вы указываете в ссылке?

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


Прежде всего стоит остановиться на популярности гибридных решений (PhoneGap/Cordova)
Я лично считаю что будущее за гибридными решениями — сейчас это фактически стандарт. Все крупные игроки предлагают собственные варианты решений на базе Кордовы.
Причины: можно привлекать веб разработчиков(которые все равно нужны и как правило уже есть), можно шарить код с сайтом(который обычно все равно нужен). Кроме того веб разработчиков много.
Немаловажная причина и в том что это решение open source.


Первое — зачем вообще понадобилось именно приложение.
Обычно ответа два:


  1. нужен оффлайн доступ к функциональности
  2. нужен доступ к различным возможностям устройства, например Barcode/RFID сканер и т.п.

Во всех остальных случаях можно ограничится веб приложением, которое вполне себе будет кросс-платформенным — браузер есть везде.
Кроме того сейчас есть такая тема как “улучшенный браузер” — то есть никто не мешает собрать браузер на базе той же Кордовы и подключить туда все нужные плагины(доступ к сканеру, функциональности устройства и т.п.). А потом вы устанавливаете этот браузер на устройства пользователей а дальше они работают с вашими веб-апликухами с вашего сайта, но теперь из веб апликуха есть доступ ко всему.
Кстати я думаю что такое решение будет становиться все популярнее — это просто и удобно всем.


Второе — сложность приложения
Если приложение нетяжелое, то однозначно стоит выбрать Кордову. Это стандарт де-факто.
С ростом мощности устройств все более и более тяжелые приложения можно спокойно писать на Кордове.
Основная проблема Кордовы — все висит в одной ВебВью и в одном треде. Теоретически можно использовать треды в JS, но слишком много ограничений.
Но с ростом производительности граница простое-сложное приложение смещается все дальше в сторону сложное.


Если приложение очень тяжелое, то стоит рассмотреть нативные кросс-платформенные решения. Чем лини отличаются от гибридных? Тем что вам просто предлагается программировать на каком либо языке и обеспечивается доступ ко всем АПИ. Иногда предлагают универсальный UI иногда он требует написания на каждой платформе отдельно.
Безусловным лидеров среди таких решений является Xamarin. Особенно после того как он стал бесплатным и open source.


При выборе на чем писать тяжелое приложение стоит также рассмотреть на чем сделано ваше серверное решение (приложение в корпоративном секторе это как оправило всего лишь один из элементов инфраструктуры, а не вещь в себе) и какие программисты у вас имеют в наличии.


Если у вас серверное решение и много программистов под .NET — берите Xamarin и не парьтесь.


Если на Java — стоит рассмотреть Codename One, но я бы посоветовал все же Xamarin (Java и C# практически одно и то же)


Если на Ruby (Ruby on Rails), то можно брать RubyMotion, но на мой взгляд лучше Rhomobile. Rhomobile это гибридное решение, то есть можно все писать в ВебВью на джаваскрипте с переносом кода из веб апликуха и использованием веб программистов(как в Кордова), но также можно писать код и на руби — выглядит это все как Ruby on Rails прямо на самом устройстве — тем кто программирует на Ruby on Rails ничего и изучать особо не нужно.


Если на JavaScript (Node.js), то можно брать Appcelerator или NativeScript/Telerik.


Из особых случаев хотел бы упомянуть поддержку WinCE/WinMobile — промышленные устройства(терминалы сбора данных и т.п.) на этих платформах самые распространенные и до сих пор выпускаются!
Сейчас переход таких устройств на Android уже идет и продолжается и будет продолжаться еще много лет — это очень инерционный рынок.
Если вам нужно поддерживать такие устройства в том числе, то есть писать софт для них и для iOS, Android и т.п. То тут вас ждет разочарование — эту платформу вообще никто не поддерживает кроме Rhomobile.
Есть еще костыли типа iFactr — они предлагают ваши программы написанные на .NET под WinCE/WM конвертировать в приложения Xamarin, но конвертация однонаправленная. Это хорошо только если вы разово меняете все ваши устройства на WinCE/WM на новые устройства на Android.


Хочу предложить ознакомиться с докладом на эту тему, с конференции CEE-SECR 2016:
http://2016.secr.ru/program/submitted-presentations/current-state-and-future-of-solutions-for-develop-enterprise-cross-platform-mobile-applications

Titanium можно полностью бесплатно использовать, если установить из исходников. Там не будет аналитики, но кому она нужна, когда есть Google Analytics?
Пишем уже 4 года на Xamarin. И только на нем (серверные части MS SQL asp.net mvc и т.п.). Никаких проблем нет с производительностью и возможностями (у нас в основном заказчики ТОП Розничные компании, внедряли и iBeacon и т.п.). После покупки Microsoft стало даже как-то спокойнее :) Клиенты реагирует более приветливо когда говоришь про инструмент для разработки мобильных приложений. Сейчас даже сделали на базе Xamarin конструктор мобильных приложений (рынок просит, исходный код открыт и т.п. http://appropio.com)… В общем как человек из бизнеса — могу рекомендовать однозначно Xamarin.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации