За несколько последних лет соотношение популярности популярных платформ особо не изменилось — Android и iOS вместе покрывают 99.3% рынка.
Поэтому многих разработчиков манит идея разрабатывать кроссплатформенные приложения, так как исчезает проблема дублирования кода. Но это не всегда лучшее решение и я расскажу, почему так. В этой статье я рассмотрю только Android, хотя многие утверждения справедливы и для других платформ.
Что такое кроссплатформенное приложение
Идея в том, что приложение пишется на каком-нибудь языке (например, JavaScript), а затем с помощью различных оболочек этот код исполняется и на iOS, и на Android.
Существует несколько платформ для разработки кроссплатформенных приложений, самые популярные:
- React Native
- Flutter
- Cordova
- Xamarin
- Ionic
Причина №1: множество хороших нативных библиотек
С момента появления разработки под Android возросло количество библиотек, написанных или улучшенных для поддержки Android. И только небольшое количество портировано в другие языки для кроссплатформенной разработки.
Причина №2: поддержка от Google
Новейшие версии Android SDK доступны сразу как Google публикует их, и не нужно ждать, пока кто-то портирует их (например, как в случае с Xamarin.Android).
Причина №3: помощь сообщества
Stackoverflow содержит огромное количество решений проблем. На момент написания статьи (6 марта 2017) 959,397 вопросов с тегом «Android» и только 20,289 с тегом «Xamarin». И такое соотношение можно наблюдать и на других ресурсах, не посвящённых одной конкретной платформе.
Причина №4: Android Studio
С тех пор как в 2014 году Google перешёл с Eclipse на платформу IntelliJ и предложил Android Studio, эта IDE стала намного лучше.
Причина №5: Время запуска и объём приложения
Вместе с кодом кроссплатформенного приложения запускается среда для его запуска. И если JVM в Android запущена всегда, то среда для запуска кроссплатформенного приложения постоянно запускается заново. Также сама среда исполнения входит в объём приложения.
Время запуска негативно влияет на лояльность пользователей.
Когда писать кроссплатформенные приложения
Инструменты для написания кроссплатформенных приложений появились не просто так. И никто не ставил целью испортить жизнь разработчикам (хотя кто знает).
Есть причины, оправдывающие кроссплатформенную разработку.
- Ограничение бюджета. При прочих равных условиях дешевле нанять одного JavaScript-разработчика, чем двух (Kotlin и Swift).
- Ограничение ресурсов разработки. Необходимо иметь компетенции в различных языках и платформах. Для разработчика этим является время, а для бизнеса — деньги.
- Создание прототипа или MVP. С перспективой разработки нативных приложений это может быть даже более предпочтительным вариантом, так как позволяет быстрее показать проект публике. А дальше будет понятнее, что лучше: одно кроссплатформенное приложение или два платформенных.