Сегодня мы будем обсуждать кроссплатформенную разработку на мобильных устройствах. Пора поговорить про Dart/Flutter и React Native.
Нативная и кроссплатформенная разработка
Существует так называемая нативная разработка. Под Android разработка ведется на Java и Kotlin. Под iOS разработка ведется на Objective-C и Swift. Это языки нативной разработки. На них разрабатываются приложения, которые работают только на одной из операционных систем и могут использовать все ее возможности. Эти языки программирования полностью поддерживаются самим вендором: для Java и Kotlin это Google, для Objective-C и Swift — Apple.
Однако было очень много попыток сделать кроссплатформенные приложения. Самая популярная система, позволяющая осуществить это — Flutter с языком программирования Dart. Эта система позволяет написать один раз код и потом выполнить его и на Android, и на iOS. Кажется, что это очень здорово — достаточно одной команды разработчиков чтобы создать два приложения под разные операционки. Однако есть несколько проблем.
Что не так с кроссплатформенной разработкой
Говоря о кроссплатформенной разработке нужно помнить, что есть несколько важніх аспектов.
- Вендорам нет смысла поддерживать кроссплатформенные системы
Нет ни одной системы кроссплатформенной разработки, которая бы официально поддерживалась и Android, и iOS. Фактически можно сказать, что команда того же Dart/Flutter или React Native стараются, чтобы все было хорошо. Но все же официальной поддержки нет. Об этом нужно помнить.
Вендорам нет никакого смысла поддерживать такие кроссплатформенные системы. Зачем Apple поддерживать продукты от конкурента? Например, Dart/Flutter разработан Google у которого есть Android. Поэтому если компания Apple официально начнет поддерживать Dart/Flutter, получается, что она автоматически выбрасывает на помойку собственные разработки и начинает зависеть от конкурента. Естественно, Apple не хочет, чтобы на системе конкурента все работало лучше, чем на своей.
- Намного более сложная разработка
Писать код на Dart/Flutter существенно сложнее, чем на нативном языке программирования для конкретной системы. Это важный аспект. Если у вас появляется баг например на Apple устройстве, разработчику нужно мучиться и исправлять баг так, чтобы не задеть работающий функционал на Android. В итоге получается двойное количество тестирований, двойное количество багов + все это не поддерживается официально.
- Не используются все возможности языка
Для кроссплатформенной разработки не будут доступны все те фичи, которыми системы отличаются. Если вы напишите код, который выполняет какую-то красоту на iOS, то он не будет иметь смысла для Android. И наоборот. Соответственно, готовые приложения могут иметь только те функции, которые есть и в iOS, и в Android.
Когда кроссплатформенная разработка оправдана
На сегодняшний момент разработка кроссплатформенного приложения имеет стоимость не как одна нативная разработка, а как 1,7-1,8 приложения. Так как такие приложения сложнее разрабатывать, дольше тестировать, сложнее отлаживать. При этом вы не получите реально красивого приложения, т.к. не используете все возможности каждой из операционных систем.
Есть ненулевое количество приложений, которые выгодно разрабатывать даже при таком раскладе вещей. Например, если компания точно знает, что будет разрабатывать на обе системы, или если приложения достаточно простые и не требуют особых красот. Тогда да, заказывать кроссплатформенную разработку выгодно.
Когда не стоит писать кроссплатформенное приложение
Когда вам нужны особенности какой-то конкретной операционной системы. Или если ваше приложение — стартап. В этому случае вам выгоднее выпустить только одно приложение, которое ориентируется именно на вашу ЦА. Вы проверите, что ваше ЦА заинтересована и покупает продукт. Если деньги вернутся, вам будет выгоднее выпустить второе приложение.
Если вы стартап и пишете кроссплатформенное приложение, вы получаете существенно больше расходов на то, чтобы выйти на рынок.
Итоги
Идти ли вам как программисту на Dart/Flutter или React Native? Хотите идти — идите. Там есть работа и там довольно высокие зарплаты. Если для вас это первое направление тоже можно идти.
Закроет ли Dart/Flutter всю нативную разработку? Нет. Исчезнет ли кроссплатформенная разработка? Тоже нет. Потому что на рынке нужны разные решения.
Так что работы хватит для всех.
Всегда ваш Сергей Немчинский.