Site icon AppTractor

SwiftUI против Jetpack Compose: почему Android выигрывает не напрягаясь

Если вы разработчик Apple, то, несомненно слышали о SwiftUI, новой декларативной платформе Apple для создания приложений, работающих на iOS, iPadOS, macOS, watchOS и tvOS.

Но вы можете не знать, что Android также имеет новый декларативный фреймворк для создания интерфейсов приложений в Kotlin. Бета-версия Jetpack Compose была анонсирована на Google I/O в 2019 году, в том же году, когда Apple анонсировала SwiftUI.

Вы также можете не знать, что Google только что вывел Jetpack Compose из беты и официально выпустил версию 1.0.

Цитата из пресс-релиза:

Сегодня мы запускаем версию 1.0 Jetpack Compose, современного набора инструментов для создания UI в Android, который поможет вам быстрее создавать лучшие приложения. Он стабилен и готов к использованию в производственной среде.

Чего вы и ожидали. Но настоящую историю рассказывает следующая строка.

Мы разрабатывали Compose открыто с отзывами и участием сообщества Android в течение последних двух лет.

И это лишь одна из многих причин, по которым Jetpack Compose оставляет SwiftUI далеко позади. Вот весь список.

  1. Независимость от версии платформы
  2. Сообщество с открытым исходным кодом
  3. Циклы выпуска
  4. Документация
  5. Открытый роадмеп

Обратите внимание, что ни одна из этих вещей не имеет отношения к фактическому написанию кода с Jetpack Compose. В целом я предпочитаю синтаксис и методологию SwiftUI.

Но эта простота использования значительно перевешивается тем фактом, что разработчики Android действительно уже могут использовать Jetpack Compose для создания приложений.

Независимость от версии платформы

Добавить Jetpack Compose в проект очень просто. Просто внесите несколько изменений в файл Gradle вашего приложения, и необходимые зависимости будут связаны с вашим проектом.

Конечно, пользоваться SwiftUI стало еще проще. Просто используйте правильную версию XCode и импортируйте заголовок SwiftUI, и все готово. Ну… я имею ввиду… нужно еще настроить минимально поддерживаемую версию iOS для вашего приложения.

Вы можете настроить таргетинг только на iOS 15, верно?

Я писал об этом снова и снова, но суть проста. Все фичи, функции и исправления SwiftUI привязаны к конкретной версии iOS. Точка. Полная остановка.

Так что, если, например, вы хотите использовать некоторые из инновационных новых функций SwiftUI 3.0, такие как табуляция текстовых полей или pull-to-refresh, то вам придется настроить таргетинг на iOS 15 как на единственную поддерживаемую версию iOS, на которой ваше приложение запустится.

Или, если вам нужны списки с отложенной загрузкой или управление состоянием, которое действительно работает должным образом (@StateObject), вы можете спуститься до iOS 14.

Не проблема, правда? Я имею в виду, что ваши нынешние клиенты на iOS 14 и 13, 12 и 11 будут рады обновиться или отказаться от своих старых телефонов и устройств, верно?

Jetpack Compose, с другой стороны, поддерживает Android до SDK 21. Это Android 5 (Lollipop), выпущенный еще в 2014 году!

Это означает, что разработчики Android могут начать использовать Jetpack Compose в своих существующих приложениях уже сегодня. И могут это сделать, никого не оставляя позади.

С другой стороны, большинство разработчиков iOS могут рассчитывать на использование текущей версии SwiftUI… в каком? в 2023?

Разработка с открытым исходным кодом

Как уже упоминалось, Jetpack Compose — это проект Android с открытым исходным кодом, поддерживаемый большим и активным сообществом разработчиков.

SwiftUI, с другой стороны, разработан Apple собственными силами, практически без прозрачности или обратной связи.

Jetpack Compose — это непривязанный набор инструментов, который является частью общего набора программных компонентов Android Jetpack от Google для разработчиков Android, но при этом не требуется использовать какие-либо другие компоненты Jetpack или чтобы у ваших клиентов была самая последняя и лучшая версия Android.

SwiftUI, опять же, привязан к определенной версии iOS.

Jetpack Compose был выпущен как общедоступная бета-версия на Google I/O в 2019 году, и с тех пор было опубликовано много релизов Compose и его компонентов.

Было три официальных выпуска SwiftUI, каждый из которых привязан к iOS 13, 14 и 15 соответственно.

У Compose есть блог в Android Jetpack, плейлист для разработчиков Android Jetpack на YouTube и группа на сайте Stack Overflow.

Вы даже можете зайти в Twitter и напрямую поговорить с разработчиками из команды разработчиков Compose!

Apple? Что ж, у них есть форум разработчиков, где вы можете задавать вопросы.

Конечно, в большинстве случаев их будут игнорировать, но, по крайней мере, вы можете их задавать.

Циклы выпуска

Как уже упоминалось, Jetpack Compose был выпущен в качестве бета-версии в 2019 году, но многие компании уже выпустили продукты, созданные с помощью Compose или в которые интегрированы интерфейсы, созданные с помощью Compose.

Кроме того, библиотеки Jetpack Compose регулярно обновлялись новыми фичами, функциями и исправлениями ошибок, и эти обновления выходили в мир.

Apple? Да, раз в год с iOS 13, 14 и 15.

Я написал несколько статей о проблемах и проблемах со SwiftUI…

И каждый из этих вопросов по-прежнему не закрыт. Но кто знает? Может быть, в следующем году все починят…

Документация

Честно говоря, у Apple с этим стало лучше, но в течение нескольких лет страницы поддержки SwiftUI не несли никакой информации.

Однако Google, как показано на скриншоте «Присоединяйтесь к сообществу Compose», активно ищет помощи сообщества в доработке и улучшении документации Jetpack Compose.

Можете ли вы представить себе это в Apple?

Нет? И я нет.

Открытая дорожная карта

Apple, как мы все знаем, довольно закрытая организация. Все сообщество разработчиков знало — или, по крайней мере, надеялось, — что Apple исправит некоторые из наиболее вопиющих пробелов в работе SwiftUI и добавит необходимые, недостающие функции, когда выпустит iOS 15.

Но в основном это были надежды, так как никто точно не знал, над какими функциями работает Apple и чего ожидать.

Google, с другой стороны, опубликовал общедоступную дорожную карту, в которой указано, что доступно, что ожидается и когда ожидается.

Только представьте это.

Swift Evolution

Печально то, что этого не должно было быть. У Apple уже была проверенная модель того, как вовлечь сообщество разработчиков в руководство и формирование технологии, критически важной для ее будущего успеха.

Я говорю о Swift и Swift Evolution.

Хотите расширить Swift, чтобы сделать что-то новое? Напишите питч Swift Evolution и позвольте сообществу обсудить это.

Хотите исправить ошибку в компиляторе? Что ж, если вы понимаете как, то вы можете это сделать.

Хотите узнать, что нас ждет? Следите за Swift Evolution и узнайте, что будет принято в языке.

У Apple была возможность сделать то же самое со SwiftUI.

Но они этого не сделали.

Apple могла вовлечь сообщество в разработку SwiftUI.

Но они этого не сделали.

Apple могла бы сделать SwiftUI пакетом, который можно было бы объединить и загрузить с вашим приложением, что позволило бы поддерживать многие из последних и лучших функций SwiftUI в iOS 14, 13 или 12.

Они точно этого не сделали.

Скорость принятия

Некоторые читатели отметят, что у Apple чрезвычайно высокие показатели внедрения новых версий iOS по сравнению с Android. И это совершенно верно. Но это также не совсем актуально для нашего обсуждения.

Давайте возьмем для примера одно из наших клиентских приложений. Конечно, со временем все эти пользователи перейдут на последнюю версию iOS. Но если сегодняшние показатели сохранятся, к этому времени в следующем году около 85% этой пользовательской базы будет на iOS 15.

Таким образом, остается 10% или около того на iOS 14. И 3–4% на iOS 13. И 1-2% на iOS 12.

В процентном отношении эти цифры не кажутся такими уж высокими. Но если у вас есть крупное приложение с, скажем, 10 миллионами пользователей, то 5% от этого числа составляют 500,000. И вы сможете убедить руководство, что нужно отказаться от полумиллиона клиентов, чтобы мы могли поиграть с некоторыми классными новыми языковыми функциями?

Вперед. Я подожду.

Завершение

Я потратил довольно много времени на эту статью, критикуя Apple и SwiftUI… и это действительно больно.

Я написал несколько личных приложений и сделал их на SwiftUI, и мне он нравится. Он лаконичный и элегантный, и мне хотелось бы использовать его в наших корпоративных приложениях.

Но я не могу.

И это больно.

Все разработчики Apple могли бы перейти к следующему этапу в разработке приложений для iOS, iPadOS и macOS.

Но большинство из них не могут.

И это больно.

И печально то, что и вы, и я, и Apple знаем, что так быть не должно.

Google, Android и Jetpack Compose наглядно демонстрируют, что так быть не должно.

Swift Evolution показывает, что так быть не должно.

Но это есть.

И это больно.

Источник

Exit mobile version