Открыть сервис

Xamarin

Xamarin — это кроссплатформенная среда разработки мобильных и десктопных приложений, основанная на платформе .NET и языке программирования C#. Позволяет создавать нативные приложения для операционных систем Android, iOS и Windows с единой кодовой базой, обеспечивая доступ к специфичным API каждой платформы. Приобретена корпорацией Microsoft в 2016 году, после чего была интегрирована в экосистему Visual Studio и .NET.

История

Предпосылки возникновения

До появления Xamarin разработка приложений под разные мобильные платформы требовала использования разных языков программирования (Java/Kotlin для Android, Objective-C/Swift для iOS) и, как следствие, поддержки отдельных кодовых баз. Это увеличивало время и стоимость разработки. Существовавшие кроссплатформенные решения, такие как PhoneGap (Apache Cordova) или Titanium, либо использовали веб-технологии (HTML, CSS, JavaScript), что приводило к снижению производительности и ограниченному доступу к нативным функциям, либо требовали написания значительной части кода на разных языках.

Создание и развитие

Проект, ставший основой Xamarin, был начат в 2011 году инженерами из компании Xamarin (основана Мигелем де Икасой и Натом Фридманом). Ключевой технологией стала Mono — открытая реализация платформы .NET Framework, изначально созданная для работы на Linux и других Unix-подобных системах. Разработчики Xamarin адаптировали Mono для мобильных платформ, создав компиляторы, которые преобразуют код на C# в нативные исполняемые файлы для Android (через Ahead-of-Time компиляцию или Just-in-Time компиляцию в зависимости от версии) и iOS (через Ahead-of-Time компиляцию в нативный код ARM).

В 2016 году Microsoft объявила о приобретении Xamarin за сумму, по разным оценкам, от 400 до 500 миллионов долларов США. После сделки Xamarin был интегрирован в Visual Studio, а его среда разработки стала бесплатной для всех пользователей Visual Studio, включая версию Community.

Переход в .NET MAUI

В мае 2020 года Microsoft анонсировала .NET Multi-platform App UI (.NET MAUI) — эволюционное развитие Xamarin.Forms, унифицирующее разработку под мобильные и десктопные платформы. В мае 2024 года Microsoft официально завершила поддержку Xamarin, включая Xamarin.Android, Xamarin.iOS и Xamarin.Forms. Все новые проекты рекомендуется создавать на базе .NET MAUI, который является прямым преемником Xamarin и входит в состав единой платформы .NET 6 и выше.

Архитектура и компоненты

Xamarin состоит из нескольких ключевых компонентов, обеспечивающих кроссплатформенную разработку.

Xamarin.Android

Позволяет создавать нативные приложения для Android. Код на C# компилируется в промежуточный язык (IL), который затем преобразуется в нативный код ARM или x86 с помощью среды выполнения Mono. Xamarin.Android предоставляет полный доступ к Android API, включая работу с сенсорами, камерой, графикой (OpenGL ES, Vulkan), базами данных (SQLite), пользовательским интерфейсом (Android Views, Jetpack Compose) и сервисами Google Play.

Xamarin.iOS

Предназначен для разработки приложений под iOS. Особенностью является то, что код на C# компилируется в нативный код ARM с помощью Ahead-of-Time (AOT) компилятора, что позволяет обойти ограничения Apple, запрещающие динамическую генерацию кода. Xamarin.iOS предоставляет доступ ко всем API iOS, включая UIKit, Core Data, Core Animation, Metal, ARKit и другие.

Xamarin.Forms

Библиотека для создания пользовательского интерфейса, который отображается на всех платформах с использованием нативных элементов управления. Разработчик описывает интерфейс в коде C# или XAML, а Xamarin.Forms транслирует его в нативные элементы для Android, iOS и Windows. Это позволяет достичь высокой степени повторного использования кода (до 90% и более) для простых приложений. Для сложных интерфейсов или специфических платформенных функций используется механизм рендереров и эффектов, позволяющий вносить платформенные модификации.

Mono Runtime

Среда выполнения Mono является ключевым компонентом, обеспечивающим совместимость кода C# с платформами Android и iOS. Она включает в себя сборщик мусора, JIT-компилятор (для Android) и AOT-компилятор (для iOS), а также библиотеки базовых классов .NET (BCL), адаптированные для мобильных устройств.

Классификация и подходы

В рамках Xamarin выделяют два основных подхода к разработке:

  • Xamarin Native (Xamarin.Android и Xamarin.iOS отдельно) — разработка с использованием нативных API каждой платформы. Код UI пишется отдельно для Android (в стиле Android XML или Jetpack Compose) и iOS (в стиле Storyboard или SwiftUI), но бизнес-логика, работа с данными и сетевое взаимодействие реализуются на C# и могут быть общими. Этот подход обеспечивает максимальную производительность и полный контроль над интерфейсом, но требует больше усилий на разработку UI.
  • Xamarin.Forms — разработка с использованием единого API для UI. Интерфейс описывается один раз и автоматически адаптируется под каждую платформу. Этот подход значительно ускоряет разработку, но может быть менее гибким для реализации сложных, сильно отличающихся на разных платформах интерфейсов.

Преимущества и недостатки

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

  • Единая кодовая база: использование C# и .NET позволяет писать значительную часть кода (бизнес-логика, доступ к данным, сетевое взаимодействие) один раз и использовать её на всех платформах.
  • Нативная производительность: приложения компилируются в нативный код, что обеспечивает высокую скорость работы и доступ к аппаратным возможностям устройства (камера, GPS, датчики).
  • Доступ к платформенным API: разработчик может использовать любые API Android и iOS, включая новейшие, без ожидания адаптации со стороны фреймворка.
  • Экосистема .NET: использование привычных инструментов (Visual Studio, C#, NuGet-пакеты, библиотеки .NET) и возможность интеграции с существующими .NET-проектами.
  • Бесплатность и открытый исходный код: после приобретения Microsoft Xamarin стал полностью бесплатным и распространяется с открытым исходным кодом.

Недостатки

  • Размер приложения: приложения, созданные с помощью Xamarin, могут быть больше по размеру, чем полностью нативные, из-за включения среды выполнения Mono и библиотек .NET.
  • Задержка выхода обновлений: новые версии Android или iOS могут появляться с небольшой задержкой до выхода соответствующих обновлений Xamarin.
  • Сложность отладки платформенных проблем: при возникновении ошибок, связанных с взаимодействием C# и нативного кода, отладка может быть сложнее, чем в чистых нативных проектах.
  • Ограниченная поддержка десктопных платформ: Xamarin.Forms поддерживает Windows (UWP), но поддержка macOS и Linux была ограниченной и требовала дополнительных решений.

Применение

Xamarin использовался для создания широкого спектра приложений:

  • Корпоративные приложения: системы управления взаимоотношениями с клиентами (CRM), системы планирования ресурсов предприятия (ERP), приложения для внутреннего документооборота.
  • Потребительские приложения: приложения для банков, розничной торговли, социальных сетей, медиа-плееры.
  • Игры: простые казуальные игры и приложения с использованием графических библиотек (например, MonoGame, SkiaSharp).

Примеры известных приложений, созданных с использованием Xamarin:

  • The World Bank — мобильное приложение Всемирного банка для доступа к статистическим данным.
  • UPS Mobile — приложение для отслеживания посылок и управления доставкой.
  • Alaska Airlines — мобильное приложение для бронирования билетов и управления полётами.
  • BBC Good Food — приложение с рецептами и кулинарными советами.

Наследие и переход на .NET MAUI

Xamarin сыграл важную роль в популяризации кроссплатформенной разработки на .NET. Он доказал, что можно создавать производительные нативные приложения с единой кодовой базой, не жертвуя доступом к платформенным возможностям. Однако с выходом .NET MAUI поддержка Xamarin была прекращена. .NET MAUI является прямым преемником Xamarin.Forms, предлагая улучшенную архитектуру, поддержку новых платформ (macOS, Linux через сообщество), более тесную интеграцию с .NET 6+ и улучшенную производительность. Разработчикам, использующим Xamarin, рекомендуется мигрировать на .NET MAUI для получения обновлений и поддержки.

Источники

  1. Официальная документация Microsoft по Xamarin (архивная версия).
  2. Документация Microsoft по .NET MAUI.
  3. Статья «A Brief History of Xamarin» на сайте Microsoft Learn.
  4. Книга «Xamarin.Forms Projects» (Daniel Hindrikes, 2020).
  5. Статья «What is Xamarin?» на сайте Stackify.
  6. Публикации в блоге Xamarin (архив).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →