Apache Cordova
Apache Cordova — это свободный фреймворк с открытым исходным кодом для разработки мобильных приложений, позволяющий создавать кроссплатформенные приложения с использованием стандартных веб-технологий: HTML, CSS и JavaScript. Приложения, созданные с помощью Cordova, представляют собой веб-приложения, которые выполняются внутри нативного компонента WebView, но при этом имеют доступ к аппаратным возможностям устройства (камере, акселерометру, GPS, контактам и другим) через специализированные плагины. Проект изначально разрабатывался компанией Nitobi Software, а после её приобретения в 2011 году перешёл под управление Apache Software Foundation, где получил текущее название.
История
Предыстория и создание
Технология берёт начало в 2008 году, когда канадская компания Nitobi Software представила проект под названием PhoneGap. Основной целью было упрощение разработки мобильных приложений для разных платформ (iOS, Android, BlackBerry, Symbian) без необходимости писать нативный код на Objective-C или Java. Первая версия PhoneGap была выпущена в 2009 году.
Переход в Apache
В 2011 году компанию Nitobi приобрела корпорация Adobe Systems. После сделки Adobe передала исходный код PhoneGap в инкубатор Apache Software Foundation, чтобы обеспечить независимость и открытость проекта. В рамках фонда проект был переименован в Apache Cordova — по названию района в Торонто, где находился офис Nitobi. Adobe продолжила выпускать собственную сборку под торговой маркой Adobe PhoneGap, которая включала дополнительные сервисы (например, облачную сборку PhoneGap Build), но базовая платформа оставалась Apache Cordova.
Развитие и пик популярности
В 2012—2015 годах Cordova стала одной из самых популярных технологий для гибридной мобильной разработки. Она активно использовалась для создания прототипов, корпоративных приложений и продуктов с ограниченным бюджетом. Выход фреймворков Ionic, Framework7 и Onsen UI, которые надстраивались поверх Cordova, значительно расширил её возможности в области пользовательских интерфейсов. В 2013 году была выпущена версия 3.0, которая ввела модульную систему плагинов и CLI (Command Line Interface), что упростило управление проектами.
Современное состояние
Начиная с 2017—2018 годов, популярность Cordova пошла на спад. Это связано с ростом производительности нативных приложений, появлением альтернативных кроссплатформенных решений (React Native, Flutter, Xamarin) и ужесточением требований магазинов приложений к производительности и размеру. В 2022 году Adobe объявила о прекращении поддержки PhoneGap и PhoneGap Build. Однако Apache Cordova продолжает поддерживаться сообществом и фондом, хотя темпы обновлений замедлились. На 2024 год последняя стабильная версия — 12.0.0 (выпущена в 2022 году), поддерживающая Android 12 и iOS 15.
Архитектура и принцип работы
Базовая структура
Приложение Apache Cordova состоит из трёх основных компонентов:
- Веб-часть (WebView) — встроенный браузерный движок операционной системы (WebKit на iOS, Chromium WebView на Android), в котором выполняется HTML, CSS и JavaScript код.
- Нативная оболочка (Shell) — минимальный нативный код, который инициализирует WebView, управляет жизненным циклом приложения и обрабатывает системные события.
- Плагины (Plugins) — модули нативного кода (Java/Kotlin для Android, Objective-C/Swift для iOS), которые предоставляют JavaScript API для доступа к функциям устройства.
Жизненный цикл приложения
Cordova-приложение запускается как обычное нативное приложение. При старте нативная оболочка создаёт WebView, загружает в него главную HTML-страницу (обычно index.html) и запускает JavaScript-движок. Все дальнейшие действия пользователя обрабатываются через веб-интерфейс. При вызове нативных функций (например, получение геолокации) JavaScript отправляет запрос через мост (bridge) к соответствующему плагину, который выполняет операцию и возвращает результат обратно.
Мост (Cordova Bridge)
Ключевой элемент архитектуры — механизм взаимодействия между JavaScript и нативным кодом. В ранних версиях использовался метод exec(), который сериализовал вызов в строку и передавал через URL-схему (iOS) или через JavascriptInterface (Android). Начиная с версии 3.0, мост стал асинхронным и использует очередь сообщений, что повысило производительность.
Ключевые возможности
Кроссплатформенность
Cordova поддерживает следующие платформы (на 2024 год):
- Android (версия 5.0 и выше)
- iOS (версия 12.0 и выше)
- Windows (Windows 10/11, UWP — поддержка ограничена)
- macOS (через платформу Electron, неофициально)
- браузерные версии (для отладки)
Ранее поддерживались BlackBerry, Symbian, webOS, Tizen, Bada и Firefox OS, но их поддержка прекращена.
Доступ к аппаратным функциям
Через плагины Cordova предоставляет доступ к большинству стандартных возможностей мобильных устройств:
- камера и фотоальбом
- геолокация (GPS)
- акселерометр, гироскоп, компас
- контакты и календарь
- файловая система
- уведомления (нативные и push)
- вибрация
- сетевые соединения (Wi-Fi, сотовые данные)
- аудио- и видеозапись
- биометрия (Touch ID, Face ID, сканер отпечатков)
Плагинная экосистема
Официальный реестр плагинов (npm под префиксом cordova-plugin-) содержит сотни модулей. Большинство плагинов имеют открытый исходный код и поддерживаются сообществом. Плагины можно писать самостоятельно, используя стандартный интерфейс cordova-plugin.
Инструменты разработки
Cordova CLI
Основной инструмент — интерфейс командной строки (CLI), устанавливаемый через npm: ``bash npm install -g cordova `` Основные команды:
cordova create— создание нового проектаcordova platform add android— добавление целевой платформыcordova plugin add cordova-plugin-camera— установка плагинаcordova build android— сборка проектаcordova run android— запуск на устройстве или эмуляторе
PhoneGap Build
Облачный сервис Adobe (прекратил работу в 2022 году), позволявший собирать приложения без установки SDK на локальном компьютере. Пользователь загружал исходный код на сервер, а получал готовые .apk, .ipa или .xap файлы.
Интеграция с фреймворками
Cordova часто используется как база для более высокоуровневых фреймворков:
- Ionic — самый популярный фреймворк, предоставляющий UI-компоненты в стиле Material Design и iOS, а также собственные утилиты для сборки и тестирования.
- Framework7 — фреймворк с акцентом на нативный вид интерфейсов.
- Onsen UI — фреймворк, ориентированный на японский рынок, с поддержкой Material Design и iOS.
Преимущества и недостатки
Преимущества
- Низкий порог входа — разработчики, знакомые с веб-технологиями, могут быстро начать создавать мобильные приложения.
- Единая кодовая база — одно приложение работает на нескольких платформах с минимальными изменениями.
- Быстрое прототипирование — идеально для MVP (Minimum Viable Product) и внутренних корпоративных приложений.
- Большое сообщество — множество плагинов, документации и примеров.
- Открытый исходный код — лицензия Apache 2.0 позволяет свободное использование и модификацию.
Недостатки
- Производительность — веб-приложения в WebView уступают нативным по скорости рендеринга и отзывчивости, особенно при сложной анимации или работе с графикой.
- Ограниченный доступ к API — не все возможности устройства доступны через плагины; для специфических функций требуется написание собственного нативного кода.
- Размер приложения — даже пустое Cordova-приложение весит несколько мегабайт из-за нативной оболочки и WebView.
- Зависимость от WebView — поведение приложения может различаться на разных версиях операционных систем и браузерных движков.
- Устаревание — технология считается зрелой, но не получает активных обновлений; новые версии Android и iOS могут требовать доработок.
Применение
Типичные сценарии использования
- Корпоративные приложения — внутренние системы для учёта, отчётов, коммуникаций, где не требуется высокая производительность.
- Прототипы и MVP — быстрая проверка гипотез перед инвестициями в нативную разработку.
- Контентные приложения — новостные ленты, каталоги, справочники, электронные книги.
- Приложения для мероприятий — программы конференций, карты, расписания.
- Образовательные проекты — учебные приложения, тесты, тренажёры.
Примеры известных приложений
- Wikipedia Mobile — официальное приложение Википедии (на ранних версиях).
- Untappd — социальная сеть для любителей пива.
- Sworkit — фитнес-приложение с тренировками.
- HealthTap — телемедицинский сервис.
Альтернативы
К 2024 году на рынке кроссплатформенной разработки доминируют следующие технологии:
- React Native (Facebook) — использует JavaScript и React, но рендерит нативные компоненты, что даёт более высокую производительность.
- Flutter (Google) — использует язык Dart и собственный движок рендеринга Skia, обеспечивая почти нативную производительность.
- Xamarin (Microsoft) — использует C# и .NET, позволяет писать нативный код с общими библиотеками.
- NativeScript — фреймворк с прямым доступом к нативным API без WebView.
- Progressive Web Apps (PWA) — веб-приложения, которые могут устанавливаться на устройство, но не имеют доступа к некоторым аппаратным функциям.
Интересные факты
- Название «Cordova» происходит от одноимённого района в Торонто, где располагался офис Nitobi.
- Изначально PhoneGap поддерживал только iOS, а Android был добавлен позже.
- В 2012 году проект Cordova был принят в Apache Software Foundation в статусе инкубатора, а в 2013 году получил статус основного проекта (Top-Level Project).
- Несмотря на упадок популярности, Cordova продолжает использоваться в некоторых legacy-проектах и в образовательных целях для изучения принципов гибридной разработки.
Источники
- Apache Cordova Documentation (официальная документация проекта)
- «PhoneGap: The Definitive Guide» — книга John M. Wargo (2012)
- «Apache Cordova API Documentation» — официальный справочник плагинов
- «Mobile Application Development: A Comprehensive Guide» — обзорная статья на TechRepublic
- История проекта на сайте Apache Software Foundation
- Статья «The Rise and Fall of PhoneGap» на Medium (2022)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →