Кроссплатформенные мобильные фреймворки

Материал из YourcmcWiki
Перейти к: навигация, поиск

TL;DR: в целом можно сказать, что производители мобильных платформ постарались сделать так, чтобы писать кроссплатформенные мобильные приложения было как можно более ТРУДНО. Так что все кроссплатформенные фреймворки скорее маргинальны и редко рассматриваются для серьёзных приложений.

  • Нативная разработка.
    • Тут всё понятно — для кроссплатформенности просто пишется несколько приложений, под Android на Java, под iOS на Objective C (или шо у них там теперь — свифт?), под винфоном на C#.
  • PhoneGap/Cordova + HTML/JS фреймворк.
    • PhoneGap оборачивает HTML/JS страничку в мобильное приложение. Фактически приложение — это страница, отображаемая в WebView, то есть через браузерный движок. Нативные контролы не используются, HTML/JS фреймворк рисует свои и полностью сам. PhoneGap — открытый и свободный.
    • HTML/JS — разумеется, тупит (немного) и жрёт CPU (много). Что означает «тупит»? «Тупит» означает, что задержки обычно невелики (примерно до 0.5 секунды), но мгновенной отзывчивости у интерфейса нет, зачастую нет плавности у анимаций и так далее. Естественно, всё зависит и от сложности интерфейсов.
    • Варианты фреймворков: Sencha Touch (GPLv3 / бесплатная коммерческая, продают только поддержку), OpenUI5 (Apache 2.0, не продают ничего вообще) и любые другие по вкусу (оных много — например, все со звёздочкой на http://propertycross.com/).
    • PhoneGap — вполне зрелый продукт, Sencha Touch тоже существует уже достаточно давно. По личному ощущению, однако, «серьёзных» приложений на Sencha Touch (да и в целом на PhoneGap…) мало — вероятно, из-за вопросов производительности.
  • Xamarin
    • C#
    • Основан на Mono, Linux’овой/кроссплатформенной реализации .NET.
    • Параллельно «родному» runtime запускается Mono, причём под iOS на самом деле используется AOT компиляция, то есть C# код транслируется в бинарный в момент сборки приложения (соответственно, недоступен Reflection и подобная динамика).
    • Можно писать НЕкроссплатформенно, с использованием полностью нативного GUI платформы, можно писать кроссплатформенно на Xamarin Forms.
    • Xamarin Forms существует меньше года (с 28 мая 2014) и использует нативные контролы с трансляцией вызовов в Mono-код.
    • Xamarin Studio по отзывам глюкавая.
    • Mono открытый и свободный, Xamarin платный (~1000$ в год), открытой или бесплатной версии не имеет (точнее имеет, но без Xamarin Forms).
    • Сколько-то популярен, по крайней мере, замечены русские компании, разрабатывающие на Xamarin.
  • Qt
    • C++ и декларативный язык описания интерфейсов QML
    • Работает аналогично Xamarin — код выполняется в отдельном потоке, используются нативные контролы с трансляцией вызовов в C++.
    • Обычная версия открытая и свободная (LGPLv3), расширенные платные и недешёвые (профессиональная в районе 2000$ в год).
    • Сам фреймворк Qt очень зрелый и качественный, однако мобильная его версия существует не так давно и, вероятно, несколько сыровата. Мобильных приложений на Qt почти не замечено, по ощущению их ещё меньше, чем на HTML/PhoneGap.
  • CodeName One
    • Java
    • Java-код выполняется как есть на Java-платформах и транслируется в C для iOS. Нативные контролы вроде-бы поддерживаются, но есть мнение, что на самом деле обычно не используются, а используются собственные реализации, стилизируемые под нативные.
    • Утверждают, что даже OpenGL у них обёрнут и позволяет писать игры, работающие с приемлемой производительностью.
    • Сборка по умолчанию облачная. Базовая подписка бесплатна (с ограничением до 100 андроид-сборок или до 5 iOS-сборок в месяц; 1 iOS сборка считается за 20 андроидовых), ограничение снимается за 108$ в год (и параллельно даётся доступ к генерируемым при сборке нативным исходникам), профессиональная подписка с доп. возможностями стоит 850$ в год. Если хочется потратить ещё больше денег — возможность тоже имеется в виде Enterprise (3800$) и Corporate Server (от 20000$) подписок.
    • При этом утверждается, что сам CodeName One свободный и открыт под GPL лицензией с Classpath исключением, и вроде-бы сборку тоже можно осуществлять вне облака самостоятельно, хотя в случае iOS это требует запуска под Mac.
    • Существует с 2012 года, утверждают, что их технологией пользуется 15000 разработчиков, а все приложения на CodeName One установлены уже суммарно 75000000 раз.
  • NativeScript
    • JavaScript
    • Свой XML-язык описания интерфейсов, плюс CSS-подобная стилизация, разработка в MVVM парадигме
    • Работает опять-таки аналогично — параллельно «родному» runtime запускается JavaScript движок (V8 или iOS’овский JavaScriptCore), XML-описание интерфейсов транслируется в нативные контролы, а вызовы транслируются в JavaScript API
    • Полностью открытый и свободный (Apache 2.0).
    • Фреймворк совсем новый. Приложений, скорее всего, мало. Но концепция, имхо, самая правильная — это и есть то, чего не хватает мобильным платформам: яваскрипта в сочетании с универсальным языком описания интерфейсов (только не HTML, потому что HTML — не язык описания интерфейсов)
  • React Native (ещё http://www.reactnative.com/)
    • JavaScript и нативные компоненты — в этом смысле аналогичен NativeScript…
    • …но в парадигме, аналогичной обычному React. То есть, с Virtual DOM и пакетными обновлениями, только вместо HTML DOM элементов применяются родные элементы UI платформы. Благодаря этому вроде как довольно отзывчивый.
    • Также полностью открытый и свободный (BSD).
    • Есть хорошая поддержка инструментария. Например, есть Hot Reload, как в обычном React.
    • Может быть интересен по той причине, что Facebook поживее Telerik’а.
  • Недобитые Delphi и C++ Builder — пожалуй, также следует их упомянуть для полноты картины
    • Вроде-бы пытаются выживать как раз за счёт кроссплатформенной мобильной разработки
    • Стоят, как всегда, неадекватно — начиная от 5000$. На этом, наверное, можно уже и заканчивать.