Сьогодні ми обговорюватимемо кроссплатформенну розробку на мобільних пристроях. Час поговорити про 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 усю нативну розробку? Ні. Чи зникне кросплатформова технологія? Теж ні. Тому що на ринку потрібні різні рішення.
Тож роботи вистачить для всіх.
Завжди ваш Сергій Немчинський.