ВВЕДЕНИЕ В РАЗРАБОТКУ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ

УДК 004

М.А. Ескендир

ВВЕДЕНИЕ В РАЗРАБОТКУ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ

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

Ключевые слова: Кроссплатформенность, разработка, язык программирования, фреймфорк, мобильное приложение, iOS, Android.

Создание мобильных приложений может быть очень простым процессом: вы открываете интегрированную среду разработки, быстро выполняете сборку, с легкостью выполняете тестирование и отправляете приложение в Магазин приложений — все это занимает полдня. Или наоборот, вы реализуете чрезвычайно сложную задачу с тщательным предварительным проектированием, тестированием на удобство использования, проверкой качества на множестве устройств и обслуживанием полного жизненного цикла бета-версии с последующим развертыванием различными способами.

Перед нами стоит задача разработать кроссплатформенное мобильное приложение Student Mobile. Для этого нам нужно выбрать кроссплатформенный мобильный фреймворк, в котором создание приложений осуществляется на языке программирования C#.

На данный момент существует семь популярных кроссплатформенных мобильных фреймворков, таких как Appcelerator Titanium, Kony Platform, Adobe PhoneGap, IBM Worklight, Telerik Platform, Verivo Akula и Xamarin [1]. Но только Xamarin создает приложения с помощью языка C#.

Рассматривая способы создания приложений для iOS и Android, многие считают, что единственным вариантом являются машинные языки Objective-C, Swift и Java. Однако в течение нескольких последних лет появилась совершенно новая экосистема платформ для разработки мобильных приложений.

Xamarin является уникальным в этом пространстве, так как предлагает один язык C#, библиотеку классов и среду выполнения, которая работает на всех трех платформах для мобильных устройств — iOS, Android и Windows Phone (C# уже является собственным языком Windows Phone), и по-прежнему поддерживает компиляцию собственных (без интерпретации) приложений, достаточно быстродействующих даже для ресурсоемких игр.

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

Xamarin - это фреймворк для кроссплатформенной разработки мобильных приложений (iOS, Android, Windows Phone) с использованием языка C#. Xamarin основан на open-source реализации платформы .NET -Mono. Код программы пишется на широко используемом языке программирования C# с применением всех привычных языковых особенностей, к примеру, LINQ, лямбда-выражений, Generic и Async. При этом имеется полный доступ ко всем возможностям SDK платформы и механизму создания UI (user interface), получая на выходе приложение, которое, строго говоря, ничем не отличается от нативных и не уступает им в производительности.

Xamarin предоставляет два коммерческих продукта: Xamarin.iOS и Xamarin.Android. Оба они созданы на базе Mono, версии .NET Framework с открытым исходным кодом, основанной на опубликованных стандартах .NET ECMA. Mono существует почти так же долго, как и .NET Framework, и работает практически на платформах всех возможных типов, включая Linux, Unix, FreeBSD и Mac OS X.

© Ескендир М.А., 2019.

Научный руководитель: Сулейманова Рая Зинаддиновна - кандидат технических наук, доцент, Казахский агротехнический университет им. Сакена Сейфуллина, Казахстан.

На платформе iOS компилятор XamarinAhead-of-Time (AOT) компилирует приложения XamariniOS непосредственно в машинный код сборки ARM. На платформе Android компилятор Xamarin компилирует в промежуточный язык (IL), который при запуске приложения претерпевает Just-in-Time-компиляцию (JIT) в машинную сборку.

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

Приложения Xamarin создаются на основе подмножества BCL .NET, известного как профиль для Xamarin Mobile. Этот профиль был разработан специально для мобильных приложений и упакован в MonoTouch.dll и Mono.Android.dll (для iOS и Android, соответственно). Почти так же создаются приложения Silverlight (и Moonlight) на основе профиля Silverlight/Moonlight .NET. По сути, профиль Xamarin Mobile соответствует профилю Silverlight 4.0 с множеством вновь добавленных классов BCL.

Фреймворк Xamarin состоит из нескольких основных частей:

- Xamarin.IOS - библиотека классов, предоставляющая разработчику доступ к iOS SDK;

- XamarinAndroid - библиотека классов, предоставляющая доступ к Android SDK;

- компиляторы для iOS и Android;

- IDE Xamarin Studio;

- плагин для Visual Studio [2].

Ограничения в Xamarin.IOS связаны в тем, что в iOS, в отличие от .NET и Mono нет виртуальной машины. Поэтому возникают трудности с поддержкой Generic. Отсюда возникают такие ограничения:

- нельзя использовать Virtual Generic методы, так как компилятор не может учесть все возможные варианты использования;

- нельзя создавать Generic-наследников от класса NSObject, который является базовым в иерархии Objective-C [3].

Для каждой платформы Xamarin предоставляет возможность использовать нативные средства разработки UI и нативные элементы пользовательского интерфейса. Для Android создание UI может происходить непосредственно в коде или же при помощи декларативного подхода с описанием интерфейса в XML. Для iOS это также либо код, либо использование нативных средств проектирования интерфейса.

Уникальность Xamarin заключается в сочетании потенциала существующих платформ и нескольких мощных собственных возможностей, включая приведенные далее:

1. Полная привязка для базовых пакетов SDK. Xamarin содержит привязки практически для всех базовых пакетов SDK в iOS и Android. Кроме того, эти привязки являются строго типизированными, что означает, что они удобны в навигации и использовании, а также позволяют осуществлять

качественную проверку типов во время компиляции и разработки. При этом сокращается количество ошибок времени выполнения и повышается качество приложений.

2. Взаимодействие Objective-C, Java, C и C++. Xamarin позволяет напрямую вызывать библиотеки Objective-C, Java, C и C++ для более эффективного использования разнообразного и уже созданного стороннего кода. Вам становятся доступны преимущества существующих библиотек iOS и Android, написанных на Objective-C, Java или C/C++. Кроме того, Xamarin предлагает проекты привязки для удобной привязки собственных библиотек Objective-C и Java с помощью декларативного синтаксиса.

3. Современные конструкции языка. Приложения Xamarin написаны на современном языке C#, который характеризуется значительными улучшениями по сравнению с Objective-C и Java, например динамическими функциями языка, функциональными конструкциями, такими как лямбда-выражения, LINQ, функциями параллельного программирования, сложными универсальными шаблонами и т. д.

4. Впечатляющая библиотека базовых классов (BCL). Приложения Xamarin используют библиотеку BCL .NET, большую коллекцию классов со всеобъемлющими и упрощенными возможностями, такими как поддержка XML, баз данных, сериализации, операций ввода-вывода, строк и сетевых функций. Существующий код C# можно скомпилировать для использования в приложениях, после чего получить доступ к тысячам библиотек, которые помогут выполнять задачи, выходящие за рамки BCL.

5. Современная интегрированная среда разработки (IDE). Xamarin использует Visual Studio для Mac в Mac OS X и Visual Studio в Windows. В этих современных интегрированных средах разработки реализованы такие возможности, как автозавершение кода, более совершенная система управления проектами и решениями, исчерпывающая библиотека шаблонов проектов, интегрированная система управления версиями и многое другое.

6. Поддержка кроссплатформенных мобильных приложений. Xamarin предлагает усовершенствованную кроссплатформенную поддержку для трех основных мобильных платформ — iOS, Android и Windows Phone. Объем общего кода в созданных приложениях может достигать 90 %, а библиотека Xamarin.Mobile предлагает универсальный API-интерфейс для доступа к общим ресурсам на всех трех платформах. Это может значительно сократить затраты на разработку и время выпуска продуктов на рынок для разработчиков, создающих мобильные приложения для трех самых популярных мобильных платформ.

Программные средства и информационные технологии

Для каждой из платформы потребуется реализовать собственный слой UI, т. е. код, который отвечает за внешний вид приложения, придется написать для каждой платформы отдельно. Если разбивать приложение на слои, то получается такая схема:

- Data Layer (DL) - хранилище данных, например, база SqlLite или xml-файлы;

- Data Access Layer (DAL);

- Business Layer (BL) - слой, содержащий бизнес-логику приложения;

- Service Access Layer (SAL) - слой, отвечающий за взаимодействие с удаленными сервисами;

- Application Layer (AL) - слой, содержащий платформозависимый код;

- User Interface Layer (UI) - слой пользовательского интерфейса [4].

Кроссплатформенными являются все слои, расположенные выше Application Layer.

Разработчики Xamarin в качестве среды разработки предлагают использовать либо собственную

IDE -Xamarin Studio, либо Visual Studio. Xamarin Studio -кроссплатформенная IDE, которая работает как на Mac OS X, так и на Windows [2]. Также Xamarin предлагает возможность вести разработку в Visual Studio после установки специального плагина [5].

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

Кроме BCL, эти библиотеки DLL содержат программы-оболочки практически для всех пакетов SDK для iOS и пакетов SDK для Android, что позволяет вызывать API-интерфейсы базовых пакетов SDK непосредственно из C#.

Выходные данные приложения

Результатом компиляции приложений Xamarin является пакет приложения — APP-файл в iOS или APK-файл в Android. Эти файлы неотличимы от пакетов приложений, созданных с помощью интегрированных сред разработки по умолчанию, и развертываются совершенно одинаково.

Библиографический список

1.Mastering Xamarin UI Development. Стивен Ф. Даниэль. 2017 г. [http://gaurav-arora.com/book/1026-mastering-xamarin-forms-second-edition-author-name-ed-snider].

2.Xamarin in Action: создание нативных кроссплатформенных мобильных приложений. Джим Беннетт. 2018 г. [https://www.manning.com/books/xamarin-in-action].

3.Схемы Xamarin. Майкла Уильямса. 2016 г. [https://squanversi.firebaseapp.com/22/Xamarin-Blueprints.pdf].

4.Создание мобильных приложений с помощью Xamarin. Forms. Чарльз Петцольд. 2016 г. [https://buildazure.com/2016/09/22/free-ebook-creating-mobile-apps-with-xamarin-forms/].

ЕСКЕНДИР МАДИ АСАНОВИЧ - магистрант, Казахский агротехнический университет им. Сакена Сейфуллина, Казахстан.