Главная/ Блог/ Flutter vs Kotlin

Flutter vs Kotlin: что выбрать в 2024 году

Представить B2C-сервис без мобильного приложения в 2024 году невозможно. Мобильная разработка — популярное направление, которое постоянно предлагает новые решения. Бизнес все чаще выбирает кросс-платформенные решения, но и нативные технологии не стоят на месте. 

October 2024

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

Что такое Flutter?

Flutter — это кросс-платформенный фреймворк и SDK, который позволяет создавать одну кодовую базу для приложений под iOS и Android. Разработан компанией Google и выпущен в 2015 году. Первая версия под именем Sky подходила только для Android. Но уже со второй версии появилась возможность создавать не только мобильные, но и веб-приложения. Сегодня с помощью Flutter можно разрабатывать десктопные программы для таких платформ, как Windows, Linux, MacOS и Google Fuchsia.

SDK состоит из платформы Dart, движка, написанного на C++, библиотеки Foundation, набора виджетов и средств разработки. За счет движка Flutter поддерживает низкоуровневый рендеринг с помощью графической библиотеки Google Skia и взаимодействует с нативными SDK iOS и Android. Разработка ведется на языке Dart.

Преимущества Flutter

В 2024 году Flutter — это основная технология для создания кросс-платформенных приложений. Google поддерживает и развивает фреймворк, последняя на момент публикации текста версия вышла в сентябре 2024 года. С 2015 года проект эволюционировал и приобрел активное сообщество разработчиков, которые создают собственные open source решения. Вот за что выбирают Flutter:

  • Высокая производительность

Код Flutter компилируется в ARM, машинный код Intel или JavaScript, что дает хорошую производительность на любом устройстве. Приложения работают также плавно, как при нативной разработке. 

  • Поддержка кросс-платформенности

Один код для всех платформ, это решение, которое облегчает разработку и экономит средства. Не нужно содержать несколько команд, можно одновременно обновлять клиенты для разных платформ и быстрее выпускать изменения. 

  • Hot Reload

Функция Hot Reload позволяет вносить изменения в код или исправлять ошибки и сразу видеть, как это отразится на работе программы. При этом полная перезагрузка программы не требуется, благодаря этому увеличивается скорость разработки. 

  • Виджеты

Приложения на Flutter не только работают, но и выглядят, как нативные. Все графические объекты — это виджеты, с их помощью можно собирать любые формы. С фреймворком идут два основных набора виджетов: Material Design (стиль Google) и Cupertino (стиль Apple), поэтому даже при общем исходном коде можно кастомизировать внешний вид приложений под конкретную операционную систему.

Впечатляют преимущества Flutter?  Заполните форму, чтобы заказать разработку кросс-платформенного решения. Evrone готов разработать приложение под ключ или подобрать специалистов, которые дополнят in-house команду и поделятся экспертизой.

Что такое Kotlin?

Kotlin — статически типизированный и объектно-ориентированный язык программирования, который работает поверх Java Virtual Machine. Технология создана компанией JetBrains в 2011 году и назван в честь острова Котлин в Финском заливе, на котором стоит Кронштадт. В 2017 году включен в стандарт Android Studio 3.0. В 2019 году стал приоритетным языком разработки для Android. 

Авторы языка создавали его как замену Java и Scala. Главное преимущество — полная совместимость с Java, поэтому с помощью Kotlin можно обновлять существующие Android-приложения без переписывания кода. 

Kotlin компилируется в JavaScript и машинный код множества других платформ через LLVM. Поэтому его можно использовать не только для мобильной разработки. 

Kotlin Multiplatform — это SDK для кросс-платформенной разработки, от тех же JetBrains. Он также позволяет использовать один код для iOS и Android. С его помощью можно создавать и настольные приложения для основных операционных систем. Compose Multiplatform — это UI-фреймворк, который позволяет создавать один интерфейс для разных платформ, что экономит время еще и на дизайне. Однако, первая стабильная версия фреймворка появилась только недавно, и пока не все функции работают полноценно, особенно это касается веб-приложений и iOS.

Преимущества Kotlin

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

  • Совместимость с Java

Эта особенность позволяет использовать Java-библиотеки и интегрировать Kotlin в существующие проекты на Java без проблем. При этом этот язык лаконичнее и безопаснее.

  • Упрощенное асинхронное программирование

Kotlin Coroutines открывают возможности для асинхронного программирования, что делает масштабирование проще. Благодаря корутинам большая часть функциональности делегируется библиотекам, становятся доступны параллелизм и акторы. 

  • Краткость кода

Авторы ставили себе задачу создать более лаконичный, чем Java, язык. Благодаря функциональному программированию доступны функции высшего порядка и гибкие конструкции. 

  • Безопасность типов

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

Что лучше, Flutter или Kotlin?

Каждый стек обладает рядом преимуществ. Сравним описанные выше особенности по основным направлениям: 

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

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

Kotlin — это нативное решение для разработки под Android, с прямым доступом к аппаратным функциям пользовательских устройств. Kotlin Multiplatform недавно выпустил первую стабильную версию, и некоторые функции, такие как WebAssembly и часть функций для iOS пока остались экспериментальными, поэтому оценить производительность для сторонних платформ пока невозможно. 

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

Общий код для iOS и Android экономит время, по сути, разрабатывается одно приложение вместо двух. Плюс, одна команда разработки обойдется дешевле. Как мы уже отметили выше, некоторые решения Flutter, например, Hot Reload, позволяют ускорить разработку. Широкий набор готовых виджетов тоже экономит время на разработку интерфейса. 

Kotlin точно будет быстрее для Android-разработки, ведь к услугам разработчиков разнообразие библиотек и инструментов. Даже решения на Java можно интегрировать в проект без проблем. С точки зрения кросс-платформенных решений достоверных данных о скорости разработки пока нет, так как Multiplatform слишком молодой SDK. Но можно предположить, что Flutter на первых парах будет выигрывать за счет сторонних open source компонентов, созданных сообществом. 

Стоимость

Оба стека бесплатны и имеют открытый исходный код. Но создание одного приложения для нескольких платформ обойдется дешевле за счет одной команды разработчиков и времени, затраченного на создание приложения. Flutter оказывается на 40% эффективнее по сравнению с нативными технологиями. 

Зарплаты Flutter-разработчиков выше. В среднем по России на октябрь 2024 года  это 148 тысяч рублей в месяц. Размер вознаграждения сильно зависит от грейда и опыта разработчика, а также меняется от региона к региону. Так, в Москве средняя зарплата 131,5 тысяч рублей, в Санкт-Петербурге — 180 тысяч, а в Ульяновске нашлась вакансия и на 296 тысяч рублей в месяц. 

Средние зарплаты разработчиков на Kotlin в целом скромнее — 95 тысяч рублей по России в октябре 2024 года, но разброс предложений больше. В Москве есть вакансии для мидл-уровня до 350 тысяч рублей, а сеньоры могут рассчитывать на 450 тысяч рублей. 

На hh.ru более 500 вакансий для Flutter-разработчиков, и более 700 для Kotlin. На Хабр Карьера разброс еще больше, и снова Kotlin оказывается у работодателей более популярным. Резюме Kotlin-разработчиков на указанных ресурсах больше, чем Flutter-специалистов. 

Кривая обучения

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

Kotlin будет простым для программистов, которые раньше работали на Java, они смогут перейти на новый стек быстрее остальных. Плюс, всегда можно использовать готовые решения на Java и интегрировать их в новые проекты на Kotlin. Мультиплатформенный SDK может оказаться сложнее в освоении, плюс у него пока не так много обучающих материалов. Но официальная документация довольно полно описывает все аспекты работы со стеком. 

Перспективы

Google поддерживает Flutter и регулярно выпускает обновления, плюс, технология успела обзавестись сильным сообществом. На GitHub фреймворку поставили 165 тысяч звезд на момент публикации текста. 

Kotlin тоже может похвастать поддержкой Google, но пока только как нативная технология для Андроид. Авторы языка JetBrains также регулярно обновляют его и параллельно развивают кросс-платформенный SDK, который пока не так распространен. Язык программирования Kotlin на сентябрь 2024 года собрал 46 тысяч звезд на GitHub.

Заключение

Однозначно сказать, кто победил в битве Flutter vs Kotlin (или Kotlin Multiplatform), нельзя. Выбор технологического стека всегда обусловлен особенностями конкретного проекта. Evrone тщательно исследует проект перед разработкой, аргументированно подходит к выбору технологий, но конечное решение всегда принимает клиент. 

Мы разрабатываем проекты полностью на Flutter. Например, приложение для пациентов с астмой, и проект Medcorder, который создали, когда Flutter был в стадии начальной разработки (Pre-alpha). Последние годы Evrone работает на проекте российского электрокара Атом, где используют и Flutter, и Kotlin для разных задач. 

Если вы пока не определились со стеком, но уже есть идея проекта, напишите нам. Evrone проводит аудит существующих решений и консультирует стартапы. Наш опыт позволяет нам предлагать решения, исходя из запросов и возможностей клиента, поэтому мы всегда смотрим на проект с разных сторон и думаем не только о создании MVP, но и о дальнейшем развитии проекта.

Будем на связи
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.