🔥

Тред (Дмитрий Шлюгаев)


Краткий экскурс в историю гибридной/крос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.

Дмитрий ШлюгаевДмитрий Шлюгаев