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

Что такое нативность?

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

Основные подходы к разработке мобильных приложений под обе главные платформы

  1. WebView: этот подход основан на использовании веб-технологий, таких как JavaScript, HTML и CSS, для создания пользовательского интерфейса мобильного приложения. Веб-приложения работают в специальном окне, называемом WebView, которое обеспечивает взаимодействие между мобильным приложением и веб-страницей.

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

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

  2. Нативная разработка: этот подход предполагает привлечение отдельных команд разработчиков для каждой платформы (Android и iOS) и создание приложений с использованием нативных инструментов и языков программирования, таких как Kotlin для Android и Swift для iOS. Преимуществом нативной разработки является то, что приложения создаются специально для каждой платформы, что позволяет им лучше интегрироваться с операционными системами и обеспечивает оптимальную производительность.

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

    Однако недостатком нативной разработки являются значительно более высокие затраты на разработку и поддержку. Так как приложения создаются отдельно для каждой платформы, разработчики должны внедрять и поддерживать все функции дважды, что увеличивает время разработки и стоимость проекта. Кроме того, для реализации кросс-платформенных функций иногда необходимо использовать дополнительные инструменты, такие как Kotlin Multiplatform или C++ с биндингами, что может усложнить процесс разработки.

  3. Flutter: это кросс-платформенный фреймворк от Google, предназначенный для создания мобильных приложений с использованием языка программирования Dart. Основным отличием Flutter от других подходов является то, что вместо использования нативных компонентов каждой платформы (Android и iOS) фреймворк использует движок Skia для отрисовки пользовательского интерфейса на холсте, что обеспечивает высокую производительность и позволяет сохранить единый стиль на разных платформах.

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

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

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

Kotlin Multiplatform с общим UI: подход от JetBrains

Я решил написать этот пост после того, как мне на глаза попалась данная ссылка: https://www.reddit.com/r/Kotlin/comments/11pph1p/kotlin_multiplatform_app_with_shared_ui_for/

Недавно в экосистеме Kotlin появилась экспериментальная поддержка для разработки кросс-платформенных приложений с общим пользовательским интерфейсом на основе Compose. Проект compose-multiplatform от JetBrains предлагает разработчикам создавать приложения для Android и iOS, используя один и тот же язык программирования (Kotlin) и один и тот же набор UI-компонентов (Compose). Это открывает новые возможности для упрощения разработки мобильных приложений и снижения затрат на поддержку обеих платформ.

Как работает compose-multiplatform?

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

Хотя это решение не позволяет создавать полностью нативные приложения для iOS из-за использования Skia, оно обеспечивает достаточно хорошую производительность и внешний вид для большинства случаев использования.

Заключение

Kotlin Multiplatform с общим UI на базе Compose представляет собой интересный и перспективный подход к кросс-платформенной разработке мобильных приложений. Это решение может стать серьезным конкурентом для таких фреймворков, как Flutter, поскольку разработчики могут использовать один язык программирования для создания приложений на обеих платформах.

Важно отметить, что на текущий момент compose-multiplatform находится в стадии экспериментальной разработки, и могут возникнуть определенные ограничения и проблемы. Однако с поддержкой JetBrains и активным развитием экосистемы Kotlin, этот подход обещает стать мощным инструментом для разработчиков мобильных приложений в ближайшем будущем.

Реклама

Мой телеграмм канал с авторским контентом про все подряд в мире технологий: https://t.me/digital_insights

Полезные ссылки

  1. Исходный пост на Reddit

  2. Репозиторий compose-multiplatform на GitHub

  3. Официальный сайт Kotlin

  4. Документация по Kotlin Multiplatform

  5. Официальный сайт Jetpack Compose

Комментарии (2)


  1. Pole2143
    00.00.0000 00:00
    -1

    Вопрос каким будет flutter, когда KMM станет стабильным, полноценным инструментом. Все как под копирку пишут, что сложности перехода в языке dart, но по факту для разработчика с опытом будет проще выучить его, чем например библиотеку dugger для di в андроид разработке, язык очень быстро осваивается, как и сам фреймворк.


    1. Avitella Автор
      00.00.0000 00:00

      Мне кажется дело не в том простой язык или сложный, а в самом факте того, что он другой