Flutter vs Swift

Сравнение Flutter и Swift. Какой стек лучше в 2021 году?

Сегодня существует приложение, кажется, для всего. Если у какой-то компании нет своего приложения — это кажется так же странно, как если бы 10 лет назад у неё не было сайта. В итоге это может обернуться упущенной прибылью, потому что спрос на надежные, дружественные к пользователю приложения никогда ещё не был так высок. К счастью, современные средства разработки для мобильных устройств позволяют легко создавать высокопроизводительные приложения для iOS и Android.

Однако чтобы разработать приложение, нужно сначала решить, какой стек технологий использовать. Если речь идёт про экосистему iOS, то выбор будет стоять между Flutter/Dart или нативной разработкой на Swift. Мы провели сравнение этих технологий, чтобы помочь вам выбрать лучшую для вашего проекта.

Обзор Flutter и Swift в 2021 году

В 2014 году Apple выпустила Swift — мультипарадигмальный, компилируемый язык программирования с открытым исходным кодом, созданный специально для разработки под iOS.

У Swift множество преимуществ:

  • качественная документация;
  • исходный код под свободной лицензией;
  • читаемый синтаксис
  • высокая производительность;
  • современные фичи;
  • поддержка динамических библиотек.

Flutter — кросс-платформенный открытый SDK для мобильных приложений, разработанный в Google. Он использует язык программирования Dart и позволяет создавать приложения для iOS, Android, Linux, Windows, Mac, Google Fuchsia, а также веб-приложения. Он предоставляет те же возможности, что и Swift, и не только:

  • открытый исходный код и большое сообщество пользователей;
  • отличная документация;
  • высокая производительность;
  • графический движок;
  • множество инструментов для ускорения разработки;
  • горячая перезагрузка;
  • поддержка устаревших устройств;
  • виджеты для упрощения создания графических интерфейсов.

Скорость компиляции Flutter и Swift

Скорость сборки приложения на нативном компилируемом языке почти всегда выше, так что если сравнивать Flutter с Kotlin или Swift, последние почти наверняка будут быстрее — если учитывать именно время «холодной» сборки. Однако в сравнении скорости инкрементальной компиляции, то Dart более конкурентоспособен.

Скорость разработки

Здесь явно в пользу Flutter. Очень немногие компании ограничиваются приложением только для iOS, а если ваше приложения написано на Swift, то под Android придется писать отдельную версию. Разработка двух разных версий приложения может оказаться весьма дорогим процессом.

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

Кроме того, Flutter ускоряет сам процесс. Для него существуют несколько IDE, которые могут сделать разработку быстрее. Его поддерживает Visual Studio Code, которая предоставляет большинство функций Android Studio и IntelliJ, но требует куда меньше ресурсов. Минимальный прототип можно разработать за пару месяцев и потом добавлять в него функции, а не ждать разработки полноценного приложения полгода и более.

Дополнения и переиспользование кода

Снова Flutter выглядит более привлекательно. Мы уже говорили о впечатляющих возможностях повторного использования кода и сборке приложений для множества платформ из общего исходного кода. Это также ускоряет тестирование, поскольку не нужно тестировать несколько независимых приложений на Swift и других языках. К Flutter также существует множество дополнений, которые еще больше упрощают и ускоряют разработку.

Производительность

Если у вас хватает бюджета на разработку отдельного приложения под каждую платформу, то с точки зрения производительности Swift — отличный выбор, потому что нативные средства помогают использовать ресурсы устройств по максимуму. Но и у кроссплатформенной разработки нет проблем с производительностью

Приложения на Flutter сравнимы с нативными по производительности, поскольку они компилируются в нативный код и не требуют интерпретатора. Кроме того, пакет анимаций для Flutter позволяет легко создавать элегантные и интуитивно-понятные интерфейсы. Большинство встроенных анимационных эффектов также можно модифицировать под нужды конкретного приложения.

Популярность и сценарии использования

В опросе Stackoverflow 2020 года Flutter оказался в тройке самых популярных инструментов разработки. У Flutter 118 тысяч звезд на Github, против 55 тысяч у Swift. Но победителя тут нет — оба стека широко используются во многих известных компаниях. Вот примеры приложений на Swift и Flutter:

На Swift были созданы:

  • Linkedin
  • SlideShare
  • Lyft
  • Firefox
  • Eventbrite

Приложения, написанные на Flutter:

  • Google Ads
  • Alibaba
  • Square
  • Ebay
  • Hamilton Musical
  • Reflectly
  • Groupon
  • Cryptomaniac
  • SpaceX Go
  • Realtor.com

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

Однако при выборе между Swift и Dart нужно учитывать некоторые ограничения Flutter. К примеру, Flutter не лучший вариант, если:

Размер приложения не должен превышать 1–3 мегабайта. Приложения на Flutter обычно «тяжелее» нативных.

Вы планируете использовать горячую загрузку кода, чтобы избежать процесса модерации App Store при выпуске обновлений вашего приложения.

Вы разрабатываете большую игру вроде PUBG. Flutter проектировался для приложений, а не для игр, хотя и подходит для несложных механик.

Возможности Flutter для приложений под iOS

Кажется, что раз Swift создан Apple, то у него преимущество в доступе к возможностям устройства. Но это не так. Множество функций легко интегрируются и в приложения на Flutter:

Apple HealthKit — позволяет приложениям получать данные о здоровье и физической активности пользователя и добавлять новые данные в приложение Health.

Machine learning — позволяет использовать возможности устройств по машинному обучению для разработки инновационных функций.

HomeKit — позволяет пользователям без проблем взаимодействовать с системами «умного дома» и управлять им с помощью Siri.

Flutter Audio

Некоторые возможности для Flutter, впрочем, недоступны. Когда мы разрабатывали приложение Medcorder для нашего клиента, у нас возникла проблема: не существовало способа записи голоса с помощью API, которые предоставляет Google. Наш клиент предложил разработать дополнение к Flutter для этой цели и опубликовать его под свободной лицензией, и мы создали Flutter Audio, о котором вы можете прочитать в нашей статье.

Заключение

Итого: если у вас ограничен бюджет, а механики приложения несложные — Flutter подойдёт отлично. Если же бюджет позволяет развернуться или архитектура приложения сложная, то Swift подойдёт лучше.

Swift — отличная платформа, хотя и у Flutter есть ряд преимуществ, включая возможность разработки под множество платформ сразу. Нативная разработка безусловно хороша, но Flutter непрерывно развивается и, возможно, превзойдет Swift.

Если вы не знаете как выбрать мобильную кросс-платформу в 2021 году или ищете команду разработки для запуска своего мобильного приложения на всех платформах сразу, свяжитесь с нами через форму внизу, и мы расскажем, как использование Flutter поможет вам сэкономить время и деньги.

Мне нравится видеть новые плагины, такие как Flutter Audio от Evrone: они сосредоточены на том, чтобы делать одно дело очень хорошо. Существует множество интересных способов использовать это для мобильных приложений. Спасибо Evrone за то, что сделали Flutter лучше!
Тим Снит
Product-менеджер Flutter и Dart, Google
Связаться с нами
Нужна команда?
Давайте обсудим ваш проект
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.