Краткий экскурс в историю гибридной/кросcплатформеной разработки под iOS, пройдемся только по тем у кого есть декларативный UI
Первым врывается конечно же Apache Cordova (PhoneGap) в далеком 2010 году, кажется это было еще недавно
Большая поддержка от гигантов Abode/Google/IBM/Microsoft/Mozzila.
Светлые надежда на будущее, где все будут разрабатывать приложения при помощи HTML/CSS
На текущий момент он все еще жив, имеет ряд инструментов в виде доп фремверков для UI/логики, с полным доступом к железу.
Все еще тормозит из-за подхода все делать через WebView
Но даже на этом примере неудачной попытки облегчить жизнь в написание приложений всем разработчикам мы видим тот самый шаг в сторону декларативного UI. HTML/CSS выживают из-за своей лаконичности и простоты входа
На данный момент крупные вендоры ушли и проект почти загнулся.
Вторым участником стал Adobe AIR. Ребята не стали городить надстройки над WebView, а сумели создать свой райнтайм.
Рендерилка переводила flash/web в рантайм со свои собственным UI движком (флаттер взял похожий подход). Без доступа к нативным компонентам.
MXML выступал для описания GUI и все это дело работало именно в декларативном стиле вместе с ActionScript (разница с JS очень небольшая).
MXML довольно громоздкий, но связка биндингов с ActionScript работала очень хорошо. Подобное в нативе мы увидим только с эпохой FRP фреймверков в iOS.
Вся эта красивая история работала начиная с iOS 4.3 (2011 год). Сейчас еще живет. На мой взгляд умерло до прихода свифта на iOS, так как там были серьезные проблемы сс сапортом платформы. Ну и даты: Adobe 2008-2020 и теперь у HARMAN с 2019.
Итого, на дворе 2015 год, есть две кросплатформы, которые сильно потеряли свою популярность. Стартанул Swift, порог входа стал еще ниже. Apple активно продает идею верстать мышкой в сториборде (правда что-то пошло не так).
Март 2015 и мы увидели "убийцу нативной разработки" React Native. Ребята из Фейсбука активно продают идею, что любой фронтендер теперь может создать быстрое приложение, у которого будут нативные компоненты под капотом
Для верстки используем HTML+CSS с компонентным подходом от React. На мой взгляд эталон декларативного подхода в разработке UI
Ребятки из фейсбука хорошо разобрали проблемы phonegap и главное достижение: интерпретация компонент в натив, закрыло главную проблему phonegap (производительность).
Крупное сообщество принесло хорошую поддержку и больших вендоров. Конечно, технология не вечна и уперлась в свои проблемы повлекшие отказ, крупных вендоров в сторону натива. До сих пор альтернативы создать быстро приложение у фронтенд разработчиков нет.
Минусы технологии прекрасно описаны в известном ряде статей medium.com/airbnb-enginee…
Итого RN напомнил о замечательном декларативном UI, который повлияли в дальнейшем сильно на наш любимый натив.
Последний гость Flutter. Стартанул в конце 2018. Сходу врывается в дверь со своим движком для рендера и языком программирования Dart. Декларативный стиль UI из переиспользуемых виджетов.
Замечательная графическая библиотека Skia + скафолдинг, выглядит как работа над ошибками RN.
Конечно же биндинги и все прочие плюшки из web компонент.
Можно провести параллель с Adobe AIR, мы не имеем нативные компонент, только стили виджетов, которые мимикрируют, под нативные UI элементы.
Если к синтаксису Dart привыкнуть можно, то отсутствие нативных компонент усложняет жизнь и бриджинг, приведет к тому же результату, что и в RN
Все 4 гибридные/кросплатформенные фреймверки. Только улучшали декларативный стиль разработки UI, который активно перетаскивают из web разработки в мобильную. Хорошая конкуренция заставляет таких гигантов, как Apple пересматривать текущий метод в разработке UI.
Дмитрий Шлюгаев