Нативная разработка vs кроссплатформенный фреймворк: что проще для создания бизнес-приложений (не игры, не системное ПО) под iOS и Android?
У меня есть идея проекта, которую хотелось бы реализовать в виде мобильных приложений для iOS и Android и общего бэкенда на удалённом сервере. Владею С++, знаю Java (хотя для коммерческих проектов ей не пользовался), базовые знания JS. Под веб ранее не писал, под мобильные платформы тоже, за исключением каких-то мелких поделок для Android. Яблочной техникой не владею, не пользуюсь и не восхищаюсь. Проект, хотя бы его первую версию с базовым функционалом, планирую делать своими силами.
От мобильных приложений не требуется сверхпроизводительности, но нужно чтобы они выглядели нативно, так как пользователь конкретной платформы привык приложения видеть.
В этой ситуации, каким путём целесообразнее пойти? Браться за сторонний фреймворк (Xamarin, Cordova, что сейчас ещё есть из популярного?), а сервер делать на чём удобно, на той же Java, например? Или всё-таки кроссплатформенные приложения по-прежнему выдают себя внешним видом, и лучше приложить больше усилий, но сделать нативное приложение под каждую платформу?
Если не нужно особых свистелок то советую посмотреть в сторону ionic.io - открытый Cordova фреймворк с готовыми стилями и компонентами под разные платформы (iOS, Android, Win) из коробки.
Делаю на нём приложение для учёта долгов https://DebtsTracker.io и хотя проблем хватает есть ощущение правильного выбора. К тому же он, как и Angular, активно развивается. Можете посмотреть на сайте живую демку как это примерно выглядит. Ещё в разработке, в сторах пока не публиковал.
Александр, спасибо за ваш комментарий.
Сейчас по-быстрому прочитал несколько обзоров Ionic, решил спросить вас как практикующего разработчика: а как у них с поддержкой look and feel, характерного для каждой платформы? Например, будет ли приложение на Ionic реагировать на gestures, на те же swipes и pinches, так же, как и родные приложения?
Semisonic: максимально близко насколько возможно, но всегда есть какие то ограничения. Я особо не вникал в детали, но свайпы и пинчи работают вроде как обычно. Могут быть лаги при анимациях, но не критичные и опять же зависит как и что делать. И сейчас будет больше оптимизаций так как и Ангуляр и Ионик вышли в стабильные версии. Вот год назад была жесть!
У них на сайте в документации для каждого контрола живой пример - можно посмотреть что и как работает. Или скачать с гитхаба демо-приложение ionic conference app. Мне кажется оно даже в сторах опубликовано. Ещё у них есть галерея приложений на их фрэймфорке. Но надо смотреть те что нат 2й версии - она сильно лучше 1й.
Semisonic: желательно, но теоретически не обязательно. Гугли "ionic services package". Сам не пробовал ещё, сижу на маке. Думаю для вин приложения попробовать.
Каждая лягушка свое болото хвалит.
Если бекенд 100% присутствует в проекте, а клиент - тупая вьюха - то я бы все делал на нейтиве. Легче с соблюдением гадлайнов, 100% поддержка фичей платформ и т.д.
Если бекенда 100% нет - то я бы либу с логикой запилил на чем то кросплатформенном, а UI все равно нативный.
То есть, на ваш взгляд, нативность интерфейса стоит того, чтобы заморачиваться с трудностями нативной разработки под iOS (с использованием Mac'а и т.д.)?
Semisonic На мой взгляд - да. Гадлайны не зря придуманы - пользователи привыкают к определенному виду и поведению приложения. Тут как бы надо решать - что для вас дороже - привычный для пользователей юзабилити, или трудности нативной разработки. Ну и есть еще момент - некоторое поведение, допустимое на андроиде, на айоси может быть причиной реджекта приложения.
Кроссплатформенные движки и придумали, IMHO, для более быстрого и дешевого внедрения именно бизнес-процессов, без больших претензий к красоте и производительности, на базе стандартизованных технологий, сходных на всех поддерживаемых платформах.
Пользуюсь Appcelerator.
JavaScript-овый V8 соединенный через бриджи с native средой, позволяют пользоваться полностью нативными контролами (всякие нативные плагины тоже можно подключать через модули) и управлять всем этим хозяйством из JavaScript.
Недавно (пол года назад) выкатили Hyperloop и теперь можно писать на JavaScript - настоящий нативный код (пишешь на JS, а он потом транслируется в нативные вызовы), но это входит в платную подписку за 1000 баксов в год, поэтому я пока hyperloop_ом не пользуюсь.
Пишу все на JS, (а еще больше люблю использовать CoffeeScript):
сервер (express),
мобайл (appcelerator),
фронт (angular)