Apache Cordova (ранее известная как PhoneGap) — это бесплатная платформа с открытым исходным кодом для разработки кроссплатформенных мобильных приложений. Cordova позволяет программистам создавать гибридные мобильные приложения, используя стандартные веб-технологии — HTML5, CSS3 и JavaScript — вместо того чтобы полагаться на специфичные для каждой платформы API, такие как Android, iOS или Windows Phone.
История и происхождение
PhoneGap был создан примерно в 2008-2009 году канадским стартапом Nitobi Software как среда с открытым исходным кодом, которая позволяла получить доступ к нативным функциям устройства из встроенного WebView. Целью проекта было обеспечить возможность создания мобильных приложений исключительно на веб-технологиях с возможностью вызова нативного кода.
PhoneGap впервые был разработан на событии iPhoneDevCamp в Сан-Франциско и выиграл приз зрительских симпатий на конференции O’Reilly Media’s 2009 Web 2.0. В октябре 2011 года компания Adobe Systems приобрела Nitobi и все права на PhoneGap. После приобретения Adobe передала исходный код ядра в Apache Software Foundation для инкубации.
Исходный код остался открытым, но ему понадобилось новое имя. После нескольких неудачных попыток (включая название «Apache Callback») было выбрано название «Cordova» — по названию улицы в Ванкувере, на которой располагался офис Nitobi. PhoneGap стал коммерческой версией Adobe на базе Cordova с дополнительными сервисами и инструментами.
Архитектура и принцип работы
Приложения Cordova имеют несколько ключевых компонентов:
WebView. Это основной элемент архитектуры — специальное браузерное окно, которое предоставляет пользовательский интерфейс приложения. Технически WebView — это «урезанный браузер», тулза (виджет) для открытия веб-сайтов. Приложение Cordova по сути представляет собой браузер плюс сайт, где браузер — это WebView, а сайт — это файлы SPA-приложения, сохранённые на телефоне. WebView имеет доступ к этим файлам, поэтому сайт открывается без интернета.
Веб-приложение. Это часть, где находится код приложения. Приложение реализуется как веб-страница, по умолчанию в виде локального файла index.html, который ссылается на CSS, JavaScript, изображения, медиафайлы и другие ресурсы. Приложение выполняется в WebView внутри нативного контейнера приложения, который распространяется в магазинах приложений.
Файл конфигурации (config.xml). Очень важный файл, который предоставляет информацию о приложении и указывает параметры, влияющие на его работу, например, реагирование на изменение ориентации экрана.
Плагины. Ключевой компонент экосистемы Cordova. Плагины предоставляют интерфейс для взаимодействия между Cordova и нативными компонентами, обеспечивая привязки к стандартным API устройства. Это позволяет вызывать нативный код из JavaScript.
Система плагинов
Все основные функции Cordova API реализованы в виде плагинов. Apache Cordova поддерживает набор так называемых основных плагинов (core plugins), которые предоставляют доступ к функциям устройства, таким как батарея, камера, контакты, геолокация, акселерометр и многое другое.
Важно отметить, что при создании проекта Cordova он не содержит никаких плагинов по умолчанию — это новое стандартное поведение. Любой необходимый плагин, даже основные, должны быть явно добавлены разработчиком.
Помимо основных плагинов, доступны множество сторонних плагинов от сообщества, которые предоставляют дополнительные функции. Разработчики также могут создавать собственные плагины для реализации специфических требований. Плагины представляются как сопоставления классов в файле config.xml.
Cordova не предоставляет UI-виджеты или MV*-фреймворки — он лишь предоставляет среду выполнения, в которой эти виджеты и фреймворки могут работать.
Основные возможности и функции
Разработка на основе веб-технологий. Cordova позволяет разработчикам использовать существующие навыки HTML, CSS и JavaScript для создания мобильных приложений без необходимости изучать нативные языки программирования.
Доступ к нативным ресурсам. Хотя приложения Cordova основаны на веб-технологиях, они имеют доступ к нативным функциям устройства через JavaScript API, предоставляемые плагинами. Это позволяет приложениям иметь функциональность, аналогичную нативным приложениям.
Мультиплатформенное развёртывание. С Cordova можно создать одно приложение и развернуть его на нескольких мобильных платформах: iOS, Android, Windows Phone, Amazon Fire OS, BlackBerry, Firefox OS, Ubuntu и Tizen. Это экономит время и усилия разработки.
Интерфейс командной строки (Cordova CLI). Мощный инструмент для управления проектами, добавления платформ, установки плагинов и выполнения сборки приложений. Cordova CLI работает на Node.js и доступна через npm.
Расширяемость. Cordova позволяет расширять функциональность приложения через плагины. Разработчики могут создавать собственные плагины для удовлетворения специфических потребностей приложения.
Переиспользуемый код между платформами. Один набор кода может использоваться для всех целевых платформ.
Поддержка офлайн-сценариев. Приложения могут работать без подключения к интернету.
Преимущества Apache Cordova
Экономия времени и ресурсов. Гибридные приложения разрабатываются быстрее, чем нативные. Разработчики пишут код один раз и компилируют его для различных операционных систем, что значительно сокращает время выхода продукта на рынок.
Единая кодовая база. Использование одного кода для разных платформ означает, что разработчики могут быстрее вносить изменения и обновления в приложение.
Низкий порог вхождения. Веб-разработчики могут легко перейти к мобильной разработке, используя знакомые технологии. Не нужно изучать языки программирования для конкретной платформы.
Большое сообщество и экосистема. Многие инструменты и фреймворки построены на основе Cordova, включая Ionic, Monaca, Framework7, Quasar Framework, Onsen UI и другие. Существует множество надстроек сообщества, библиотек и сред, оптимизированных для работы с Cordova.
Лицензия Apache. Cordova распространяется под лицензией Apache версии 2.0, что позволяет свободно использовать, модифицировать и распространять код.
Поддержка крупных компаний. Вкладчиками в проект Apache Cordova являются Adobe, BlackBerry, Google, IBM, Intel, Microsoft, Mozilla и другие.
Недостатки Apache Cordova
Проблемы с производительностью. Гибридные приложения могут быть медленнее нативных из-за абстракции, создаваемой при использовании веб-технологий. Это особенно заметно в приложениях с высокими требованиями к производительности, таких как игры или приложения с тяжёлой графикой.
Ограничения пользовательского опыта. Приложения Cordova могут отличаться от нативных по внешнему виду и ощущениям. Пользователи могут заметить менее плавные переходы, более длительное время загрузки и другие проблемы.
Зависимость от плагинов и их обслуживание. Хотя плагины предоставляют мощные возможности, они также создают зависимости и проблемы с обслуживанием. Плагины могут устареть или стать несовместимыми с новыми версиями операционных систем, требуя постоянной проверки и обновления.
Проблемы совместимости. Некоторые плагины с разных платформ могут сталкиваться с проблемами совместимости. Для правильного управления этими плагинами их необходимо соответствующим образом модифицировать, что требует дополнительного времени и усилий.
Ограничения доступа к аппаратным функциям. Хотя Cordova через плагины предоставляет доступ к нативным функциям устройства, некоторые сложные и глубоко кастомизированные аппаратные взаимодействия остаются трудно реализуемыми по сравнению с нативными приложениями.
Необходимость дополнительной оптимизации. Для обеспечения единообразного пользовательского опыта на всех платформах приложения Cordova могут требовать дополнительной оптимизации. Это может включать настройку макетов, улучшение производительности и другие работы, которые могут частично нивелировать преимущества кроссплатформенной разработки.
Применение и сценарии использования
Apache Cordova подходит для следующих случаев:
- Мобильные разработчики, желающие расширить приложение на несколько платформ без необходимости переписывать его на языке и инструментах каждой платформы
- Веб-разработчики, желающие развернуть веб-приложение, упакованное для распространения в различных магазинах приложений
- Разработчики, заинтересованные в смешивании нативных компонентов приложения с WebView, который может обращаться к API уровня устройства
Cordova особенно популярна для средних и малых проектов, стартапов и компаний с ограниченным бюджетом. Однако для приложений, требующих глубокой кастомизации и высокой производительности, разработчикам стоит рассмотреть нативную разработку или другие высокопроизводительные кроссплатформенные решения.
Apache Cordova остаётся важным инструментом в арсенале разработчиков мобильных приложений, предоставляя баланс между скоростью разработки, экономией ресурсов и функциональностью.
