Software

Коротко о кроссплатформенности

Сейчас кроссплатформенная разработка не пользуется большой популярностью. Основная причина состоит в том, что существующие инструменты не в полной мере справляются со своей задачей.

Давайте рассмотрим несколько стандартных аргументов в пользу кроссплатформенной разработки: это принцип DRY («не повторяйся»), уменьшение рисков и паритет функциональных возможностей.

«Не повторяйся»

Следуя этому принципу, можно повысить эффективность разработки и снизить ее стоимость. Один раз напишите связный код, который затем можно будет развернуть одновременно и на iOS, и на Android.

Уменьшение рисков

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

Паритет функциональных возможностей

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

Нативная мультиплатформенная разработка

Тем не менее кроссплатформенной разработке не хватает нативного подхода к разработке мультиплатформенных инструментов для работы с ЦП и пользовательским интерфейсом, а также инструментов разработки для iOS и Android. Чтобы кроссплатформенная разработка не стояла на месте, нужно чаще использовать нативный подход. Онпозволяетболее эффективно разрабатывать приложения с одним и тем же функционалом для разных платформ и устройств. Чтобы глубже погрузиться в тему, давайте кратко рассмотрим самые популярные кроссплатформенные решения и их ограничения.

Xamarin

Xamarin — одна из первых платформ для нативной разработки для iOS, Android и Windows, которая объединяет не только логику функционирования приложения, но и пользовательский интерфейс (с помощью Xamarin Forms). Однако у нативных инструментов Xamarin есть три ограничения: они ограничены собственной экосистемой, они используют Microsoft Visual Studio вместо Android Studio или Xcode, а также язык С# (не нативный с точки зрения разработки для iOS и Android).

React Native

React Native (RN) — это мощный кроссплатформенный инструмент, с помощью которого разработчики могут применить свои навыки веб-разработки при создании приложений для iOS и Android. Как и Xamarin, он существует в своей экосистеме. React Native использует нестандартные редакторы и Javascript. При работе с RN нужно обертывать собственные элементы управления, выстраивать иерархию с учетом интеграции и разрабатывать пользовательский интерфейс на его языке. 

Flutter

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

Мы рассмотрели несколько примеров, которые показывают, насколько сложно использовать кроссплатформенную разработку. По моему мнению, это одна из причин, по которым нужно отказаться от термина «кроссплатформенность». «Мультиплатформенность» — более подходящий термин, потому что для такой разработки важно, чтобы написанный вами код раскрывал потенциал каждой платформы. Лучшего всего для этого подходит Kotlin Multiplatform.

Kotlin Multiplatform

Kotlin Multiplatform — это восходящая звезда мультиплатформенной разработки, более нативный инструмент, чем Xamarin, RN и Flutter. Kotlin — это самый распространенный язык для Android-разработки, который ценят за удобство использования. Работая в Kotlin Multiplatform, разработчик может один раз написать код, один раз его протестировать и затем использовать его в iOS, Android и Web-приложениях.

Это не первое мульплатформенное решение, которое позволяет отдельно работать над логикой функционирования приложения и пользовательским интерфейсом: например, Xamarin используется для логики и библиотек, а Xamarin Forms — для интерфейсов. Тем не менее Kotlin Multiplatform нативнее, чем Xamarin, RN и Flutter, потому что он использует общую логику и библиотеки ниже уровня пользовательского интерфейса, что позволяет работать в нативных средах разработки: Xcode, Swift и Objective-C для iOS; Android Studio и Kotlin для Android; JavaScript для web-приложений. Таким образом, для каждой платформы создается нативный код.

Язык Kotlin помогает разработчикам создавать более связные приложения. Это современный язык, согласованный с нативными платформами на Android, iOS, Java и Web: таким образом, команды могут использовать уже написанный код. Также, благодаря сходству между Kotlin и Swift, некоторые iOS-разработчики уже пишут на Kotlin.

Не менее важно, что Kotlin — это язык настоящего, на котором пишут приложения будущего. Такой код работает на всех платформах без привязки к компании-разработчику, в отличие от Xamarin и React Native. И какая бы платформа не была в будущем самой распространенной, Kotlin подойдет и для мобильной, и для web-среды.

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

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

Перевод статьи Justin Mancinelli: The Future of Cross-Platform is Native