asd asdsa f
Статьи

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

3 1701

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

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

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

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

Когда задачи становятся более-менее ясны, можно задуматься о конкретном техническом воплощении.  Например, если важна скорость внесения изменений и охват аудитории, то можно пожертвовать некоторыми другими аспектами (скорость работы) и выбрать технологию, удовлетворяющую поставленной задаче. Либо, наоборот, требуется достичь максимальной адаптированности приложения под определенную платформу и обеспечить максимальную скорость работы.

Вот приблизительный список параметров, по которым можно ориентироваться при выборе технологии:

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

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

Удобство разработки и отладки. Насколько развиты инструменты разработки и отладки в рамках данной технологии.

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

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

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

Охват платформ. Имеется ли возможность полного или хотя бы частичного повторного использования кода на разных платформах (iOS, Android, Windows)

Нативные приложения

Каждая современная мобильная платформа предоставляет инструментарий для разработчиков (SDK — software development kit), который позволяет получить доступ практически ко всем сервисам устройства. Разработчики SDK стремятся упростить процесс создания приложений путем решения типовых задач, с которыми сторонние разработчики сталкиваются в повседневной практике.

Технологии, которые лежат в основе каждой из SDK, как правило, различаются достаточно сильно. Например, для приложения для Андроид разрабатываются на языке программирования Java. SDK для iOS (iPhone и iPad) использует в качестве основного язык Objective-C, разработанный как объектно-ориентированная надстройка над C.

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

Чтобы разрабатывать нативные приложения для iPhone и iPad, нужно будет изучить язык Objective-C. Данный язык применяется, в основном, для разработки под Mac OS X и мобильную операционную систему iOS. В связи с большой популярностью мобильных устройств от Apple, спрос на разработчиков на Objective-C постоянно высок.

Чтобы начать разрабатывать для iOS нужно выполнить несколько условий. Во-первых, потребуется компьютер под управлением Mac OS X. Во вторых, чтобы тестировать написанные приложения на реальных устройствах, нужно обязательно участвовать в программе для разработчиков от Apple, ежегодная стоимость которой составляет 99$. Эти факторы отпугивают начинающих разработчиков, что приводит к нехватке опытных программистов под iOS.

Для сравнения, инструменты для разработки под Андроид доступны на всех популярных ОС (Windows, Linux, Mac). Тестировать приложения можно на любом поддерживаемом устройстве без каких-либо ограничений.

В целом, если сравнивать процесс разработки и распространения приложений для Андроид и iOS, то в обоих случаях имеются свои плюсы и минусы. Язык Objective-C поддерживает синтаксис, который позволяет более компактно решить ту же задачу, чем потребуется на Java. Язык Java более многословен. По некоторым оценкам, процесс разработки под Android занимает, при прочих равных, на 25% больше времени, чем той-же задачи на iOS.

К основным преимуществам нативной разработки можно отнести:

  • Удобство разработки и отладки. Хотя сам процесс и удобство инструментов отличается от платформы к платформе, в целом разрабатывать нативные приложения гораздо удобнее, чем, например гибридные или кроссплатформенные. Связано это с отсутствие дополнительных прослоек между кодом приложения и исполняемым файлом и, в целом, более развитыми инструментами.
  • Документаци и тех. поддержка
  • Скорость работы. Только нативное приложение может обеспечить максимальную скорость работы и производительность
  • Юзабилити. Каждая платформа имеет свои архитектурные и дизайнерские решения, знакомое пользователям расположения управляющих элементов. Нативные приложения, как никакие другие, предоставляет возможность реализовать интерфейс и общее поведения программы наиболее естественным для данной платформы способом.

К недостаткам можно отнести

  • Охват платформ
  • Наличие специалистов. Действительно, в целом найти хорошего разработчика на Java или Objective-C достаточно сложно ввиду специфичности данной области и более высокого порога при изучении технологии.

Веб

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

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

Мобильное веб-приложение разрабатывается с помощью ставших уже классическими инструментов. HTML применяется для разметки элементов интерфейса. CSS описывает визуальную составляющую и взаимное расположение виджетов и контролов. Язык программирования JavaScript реализует логику приложения.

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

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

Преимущества веб-приложений:

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

К недостаткам относятся:

  • Скорость работы и производительность. В целом производительность ниже чем у нативных, т.к. появляется дополнительная прослойка в виде веб-браузера
  • Отладка. Процесс разработки веб-приложения достаточно прост. Первоначальная отладка может быть сделана на компьютере разработчика в обычном браузере. Отладка же на устройствах зачастую затруднена и ограничивается использование всплывающих сообщений (т.н. caveman debugging  — примитивная отладка)    
  • Использование аппаратных ресурсов устройства. Веб-приложения имеют доступ только лишь к небольшому набору сервисов — постоянное хранилище (localstorage), гео-координаты. Ни файловая система, ни фото-камера не доступны.

Гибридные

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

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

В связи с этим появились инструменты, позволяющих разрабатывать логику и интерфейс на HTML и JavaScript, имея при этом доступ к ресурсам устройства. Практически все  SDK мобильных платформ предоставляют специальный компонент браузера для внедрения в нативное приложение — WebView в Андроид, UIWebView  в iOS и т.д. Это тот же веб-браузер, но с возможностью передать в веб-приложение (в JavaScript-код) вызовы из нативного кода, а также принимать сообщения из JavaScript обратно в нативную часть приложения. Таким образом, веб-приложения, «обернутое» в нативное, может получить доступ ко всем аппаратным ресурсам устройства.

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

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

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

Достоинства

  • Поддержка платформ. В частности, phonegap заявляет о поддержке более чем семи платформ.
  • Наличие специалистов
  • Время разработки. Правда, иногда процесс доводки под конкрентую платформу может привести к пересмотру архитектуры проекта и свести на нет данное преимущество

Недостатки очевидны:

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

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

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

Как правило, повторно используется код, овечающий за бизнес-логику. Интерфейс пользователя может (иногда и должен) быть разработан отдельно. Лучшей практикой может быть привлечение разных специалистов для доводки под разные платформы. Кроссплатформенные приложения стоят где то между нативными и гибридными. От первых они берут производительность, от вторых  — повторное использование кода.

В данной категории можно упомянуть два инструмента.

Первый — Appselerator Titanium. Код приложения пишется на JavaScript. Затем он компилируется в нативный код для платформ (поддерживаются всего три — iOS, Android и BlackBerry). Далее, можно собрать этот код в установочный файл приложения для каждой мобильной операционной системы. У Titanium есть собственная среда разработки Titanium Studio c возможностью отладки собственного кода на JavaScript. Titanium, также как и Phonegap, поддерживает расширения на Java или Objective-C для добавления необходимой функциональности.

Второй набирающий популярность инструмент — MonoTouch от компании Xamarin. Это действительно многообещающий инструмент.  В качестве языка разработки используется язык C#, что может стать решающим фактором при выборе технологии для разработчиков с опытом работы в .NET.

MonoTouch компилирует проект на C# сразу в нативное приложение. Кроме того, Mono поддерживает визуальное создание интерфейса iOS-приложений с помощью InterfaceBulder-а , что позволяет использовать файлы nib из нативного редактора X-Code.

MonoTouch может позиционироваться не только как инструмент кроссплатформенной разработки, но и как посто возможность разрабатывать полностью нативные приложения на знакомом\любимом языке C#. При этом, однако, появляется возможность переиспользования кода для разных платформ. Например, если приложение содержит большое количество бизнес- и инфраструктурной логики, не относящегося напрямую к интерфейсу пользователя, то, по некоторым данным, переиспользование кода может достигать 80%.

Преимущества кроссплатформенных технологий:

  • Скорость работы
  • Время разработки. 
  • Поддержка платформ

Недостатки:

  • Наличие специалистов. Действительно, ввиду большей специфичности, разработчиков с опытом разработки в, например, MonoTouch найти еще сложнее, чем разработчиков для нативных SDK
  • Удобство отладки.  В Titanium можно отлаживать только свой код, и нельзя получить доступ в исходниках самого фреймфорка, что затрудняет поиск проблем. Что касается  MonoTouch, то, видимо ввиду недостаточной зрелости инструмента, у многи разработчиков возникают постоянны проблемы при отладке и запуске приложения.

Заключение

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

Быстрый прототип

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

Мобильная версия онлайн-магазина, интернет-сервиса и т.д.

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

Приложения для автоматизации бизнес-процессов предприятия

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

Мультимедиа, графика

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

Если у вас появились дополнительные вопросы, то можете присылать их на info@interosite.ru

About the author / 

admin

  • Хочется вставить 5 копеек. Насколько я знаю, в Android есть удаленная отладка веба, также в последнем стандарте HTML5 есть работа в оффлайн режиме. Правда, я эти факты не проверял.

    • admin

      Да, удаленные отладчики есть, но работают они нереально криво и на практике совершенно бесполезны (не говорим про iOS с его удаленной отладкой в safari).
      Про удаленную отладку именно веба в Android я пока не слышал. Нужно сказать, что в Android многое решает фрагментация, если в последних версиях появляются новые возможности, все равно нужно поддерживать всякое старье, в котором этого нет.
      На практике, phonegap-приложения на Android-устройствах дебажатся старым-добрым alert-ом.
      Работа в оффлайн режиме не дает ничего существенного — ни доступа к ресурсам устройства, ни производительность. В этом смысле файл index.html, запущенный из Finder-а, также работает в офлайн режиме, т.к. не требует доступа в интернет.

  • Рустам Мухамедьянов

    про поддержку мобильных приложений http://wnfx.ru/podderzhka-mobilnyih-prilozheniy/