Изменения

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

9504 байта добавлено, 12:28, 20 июня 2016
Новая страница: «* Нативная разработка. ** Тут всё понятно — для кроссплатформенности просто пишется неск…»
* Нативная разработка.
** Тут всё понятно — для кроссплатформенности просто пишется несколько приложений, под Android на Java, под iOS на Objective C (или шо у них там теперь — свифт?), под винфоном на C#.
* [http://phonegap.com/ PhoneGap/Cordova] + HTML/JS фреймворк.
** PhoneGap оборачивает HTML/JS страничку в мобильное приложение. Фактически приложение — это страница, отображаемая в WebView, то есть через браузерный движок. Нативные контролы не используются, HTML/JS фреймворк рисует свои и полностью сам. PhoneGap — открытый и свободный.
** HTML/JS — разумеется, тупит (немного) и жрёт CPU (много). Что означает «тупит»? «Тупит» означает, что задержки обычно невелики (примерно до 0.5 секунды), но мгновенной отзывчивости у интерфейса нет, зачастую нет плавности у анимаций и так далее. Естественно, всё зависит и от сложности интерфейсов.
** Варианты фреймворков: [http://www.sencha.com/products/touch/ Sencha Touch] (GPLv3 / бесплатная коммерческая, продают только поддержку), [http://openui5.org/ OpenUI5] (Apache 2.0, не продают ничего вообще) и любые другие по вкусу (оных много — например, все со звёздочкой на http://propertycross.com/).
** PhoneGap — вполне зрелый продукт, Sencha Touch тоже существует уже достаточно давно. По личному ощущению, однако, «серьёзных» приложений на Sencha Touch (да и в целом на PhoneGap…) мало — вероятно, из-за вопросов производительности.
* [http://xamarin.com/ 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.
* [http://qt.io/ Qt]
** C++ и декларативный язык описания интерфейсов QML
** Работает аналогично Xamarin — код выполняется в отдельном потоке, используются нативные контролы с трансляцией вызовов в C++.
** Обычная версия открытая и свободная (LGPLv3), [http://www.qt.io/download/ расширенные] платные и недешёвые (профессиональная в районе 2000$ в год).
** Сам фреймворк Qt очень зрелый и качественный, однако мобильная его версия существует не так давно и, вероятно, несколько сыровата. Мобильных приложений на Qt почти не замечено, по ощущению их ещё меньше, чем на HTML/PhoneGap.
* [http://www.codenameone.com/ 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 раз.
* [http://www.telerik.com/nativescript NativeScript]
** JavaScript
** Свой XML-язык описания интерфейсов, плюс CSS-подобная стилизация, разработка в MVVM парадигме
** Работает опять-таки аналогично — параллельно «родному» runtime запускается JavaScript движок (V8 или iOS’овский JavaScriptCore), XML-описание интерфейсов транслируется в нативные контролы, а вызовы транслируются в JavaScript API
** Полностью открытый и свободный (Apache 2.0).
** Фреймворк совсем новый. Приложений, скорее всего, мало. Но концепция, имхо, самая правильная — это и есть то, чего не хватает мобильным платформам: яваскрипта в сочетании с универсальным языком описания интерфейсов (только не HTML, потому что HTML — не язык описания интерфейсов)
* [https://facebook.github.io/react-native/ React Native] (ещё http://www.reactnative.com/)
** JavaScript и нативные компоненты — в этом смысле аналогичен NativeScript…
** …но в парадигме, аналогичной обычному React. То есть, с Virtual DOM и пакетными обновлениями, только вместо HTML DOM элементов применяются родные элементы UI платформы. Благодаря этому вроде как довольно отзывчивый.
** Также полностью открытый и свободный (BSD).
** Есть хорошая поддержка инструментария. Например, есть Hot Reload, как в обычном React.
** Может быть интересен по той причине, что Facebook поживее Telerik’а.
* Недобитые [https://www.embarcadero.com/ru/products/ Delphi и C++ Builder] — пожалуй, также следует их упомянуть для полноты картины
** Вроде-бы пытаются выживать как раз за счёт кроссплатформенной мобильной разработки
** Стоят, как всегда, неадекватно — начиная от 5000$. На этом, наверное, можно уже и заканчивать.

[[Категория:Разработка]]