Назад

Разработка на Flutter как альтернатива для кроссплатформы

Время чтения: 5 минут

Flutter app development. Or React Native?
Содержание

    Кроссплатформенным фаворитом для разработки MVP был и остается React Native. К счастью, разработка не отношения. Смотреть по сторонам можно и нужно.  

    Ребята из Google завезли новую технологию, которую я изучил вдоль и поперек. Как самостоятельную SDK, так и в сравнении с React Native. Об этом и расскажу в статье.

    Кому советую читать:

    1. Разработчикам, которые хотят прокачивать скилы в кроссплатформе и примеряют на себя варианты с разработкой на Flutter и React Native.
    2. Продуктовым менеджерам, которые хотят разработать приложение для iOS и Android и ищут подходящую технологию.

    А теперь давайте к делу.

    Чем интересна разработка на Flutter

    Недельный “заныр” помог мне раскопать несколько особенностей этого фреймворка.

    Вот, что я узнал:

    • Cравним по простоте с разработкой веба. Все пишется на языке Dart, который похож на смесь JavaScript и Java. Это обеспечивает низкий порог вхождения для разработчиков из веба и нативки.
    • Dart — простой для всех, кто знаком с ООП-ориентированными языками. Язык соответствует всем аспектам этой методологии и реализует её через синтаксис. При этом, в отличие от той же Java, в Dart можно иметь функции высшего уровня.
    • Dart — многопоточный язык (в отличие от JS). Это значит, что разработчики, более не сдерживаемые интерпретатором JS AFAIK, могут работать с потоками и фьючерами, открывая поле для настоящего реактивного программирования.
    • Стопроцентно работающий hot reload в разработке на Flutter. Киллер-фича, которая помогает легко “пересобирать” проект и экспериментировать: добавлять и убирать новый функционал, править ошибки “на лету”.

    GIF Разработка на Flutter: hot reload

    Hot reload будет моментально обновлять оба устройства, будь то симулятор или реальный девайс

    • Подход для работы с состоянием взят из концепции React. Виджеты ( или компоненты для мира веба) перерисовываются по необходимости, когда что-то меняется в состоянии приложения. Можно спокойно подключить тот же redux (например, fish redux от Alibaba) и получить однонаправленный поток — это позволит управлять состоянием приложения, прямо как в React Native.
    • Интерфейс разбивается на отдельные модули, как и в React Native. Привычные JS-разработчику компоненты тут зовутся виджетами, и интерфейс легко считывается как иерархия этих виджетов, вложенных друг в друга.
    • Имеет систему готовых плагинов и библиотек в рамках pub. Достаточно зайти на   сайт мендежера пакетов и перевести ползунок на Flutter.

    Разработка на Flutter или React Native2600 репозиториев —вполне достойно для молодой технологии 

    • Работает как с http(s) запросами, так и с вебсокетами. Поддерживает GraphQL и все популярные библиотеки.
    • Важнейшие библиотеки уже вышли. Постоянно добавляются новые. Нет ощущения брошенности платформы.

    Разработка на Flutter или React Native

    Чтобы получить максимально четкую картинку, я столкнул лбами Flutter и то, что уже проверено на поле битв. Мои “проектные битвы” проходят с React Native, поэтому начну с него. А выделить могу вот что:

    • Простая технология. React Native — легкий способ войти в мобильную кроссплатформенную разработку для тех, кто привык работать на JavaScript.
    • Обширное коммьюнити. За четыре года RN накопил тонны библиотек и готовых решений. Любая проблема в большинстве случаев решается через поиск в Google.

    Разработка на Flutter или React Native: что выбрать?React Native “цветет и пахнет”. Звезды, форки и быстро закрывающиеся issues тому подтверждение

    • Возможность обернуть нативный код в JS. Если разработчик умеет писать нативный код, перенос части вычислений на нативный уровень и последующий sharing кода между платформами поможет избежать проблем с производительностью.

    А теперь смотрим, что этому может противопоставить  разработка на Flutter:

    • Фреймворк схож по скорости с нативными решениями. Никакого JS тут нет, Dart компилируется напрямую в бинарный код. Таким образом, скорость выполнения операций такая же, как в Objective-C, Swift, Java или Kotlin.
    • Нормальная виртуальная машина. Не нужно беспокоиться о линковании библиотек (одна из главнейших головных болей RN), проблемах несовместимости на нативном уровне, поскольку весь код будет выполняться из-под Dart VM.
    • Многопоточность. В отличие от JS, можно полноценно работать с потоками. Прелесть да и только!
    • “Под капотом” Skia, а не нативные компоненты. Для отрисовки каждого пикселя Flutter использует Google Skia. Нет необходимости проектировать интерфейс отдельно под iOS и Android, Skia всё отрисует идентично, с поправкой на особенности местного UI (если необходимо)
    • Анимации на уровне 120 фпс. В этом плане разработка на Flutter успела обогнать не только RN, но и нативные языки. А все из-за движка Skia, который вкупе с  местным фреймворком для анимаций, выдает быстрый результат.

    А вот в чем разработка на Flutter заметно проседает:

    • Менее развитое комьюнити. “Зеленый” Dart явно уступает устоявшемуся JavaScript. (есть шанс, что когда-то это изменится).
    • Меньше библиотек. Из-за в процессе разработки на Flutter многие базовые вещи, например, компоненты и сервисы, приходится писать вручную. В то время, как в React Native это же самое может быть реализовано одной из либ.
    • Сложно внедрять в проекты. Для работы с легаси-кодом придётся переписывать всё под Dart, в то время, как React Native можно использовать, вынося часть унаследованного нативного кода внутри нового проекта.
    • Больше кода не “под капотом”. Собственный графический движок повышает производительность, но заставляет писать так много, как этого требует SDK.

    Еще больше полезных материалов в нашем Telegram-канале Стартап-пикап.

    Подписаться

    Что в итоге?

    Для кроссплатформы React Native — это верный боевой солдат. Он успел пройти огонь, воду и медные трубы. Показал себя в сражениях. С таким все четко и без сюрпризов. И это прекрасно.

    Разработка на Flutter или React Native: что на хайпеReact React Native — это верный солдат, а “хайпует” разработка на Flutter 

    Разработка на Flutter? Или все-таки React Native? Один предпочтет не проверять судьбу проект на прочность и выберет зарекомендовавшую себя технологию. Другому понравится идея разрабатывать на чем-то “хайповом”. Окончательный выбор за вами — других вариантов и быть не может 🙂

    Чтобы вы могли быстрее сориентироваться, предлагаю ответить на несколько вопросов.

    1. Готова ли кодовая база к росту на этой платформе? Если проект на нативных языках и вам не хочется переписывать код на Dart, React Native вам в помощь.
    2. Сложно ли это в поддержке? Если вы работали с Dart, нативными языками и жаждете нового, можно легко поддерживать унаследованный код на Flutter.  Гуру в JavaScript и тем, кто только начинает программировать уверенно советую прокачиваться в React Native.
    3. Нужны быстрые анимаций с высокой степенью оптимизации? Несколько решений для внедрения достойных анимаций (например, Lottie от AirBnb) присутствуют и в React Native, но Flutter на несколько шагов впереди.
    4. Горят ли сроки? (всегда горят) Чем больше библиотек и готовых решений, тем быстрее и проще разрабатывать. Если главный приоритет — “по-быстрому выкатиться на рынок с MVP”, разработка на Flutter будет не самым лучшим решением. React Native — вот ваше спасение.

    Каким будет будущее разработки на Flutter и React Native? Рынок рассудит 🙂

    Насколько публикация полезна?

    Оцени эту статью!

    11 оценок, среднее 4.5 из 5.

    Оценок пока нет. Поставьте оценку первым.

    Так как вы нашли эту публикацию полезной...

    Подписывайтесь на нас в соцсетях!

    Share