История
PhoneGap был создан примерно в 2009 году внутри канадского стартапа Nitobi, как среда с открытым исходным кодом, которая позволяла получить доступ к нативным функциям устройства из встроенного webview. Целью проекта было обеспечить возможность построения мобильных приложений исключительно на веб-технологиях (HTML5/CSS и JavaScript), но с возможностью вызова нативного кода.
В 2011 году Adobe приобрели Nitobi и все права на PhoneGap. Исходный код ядра был передан Apache Foundation.
Этот исходный код остался открытым, но ему понадобилось новое имя. После пары неудачных попыток, в конце концов было выбрано «Cordova» – по названию улицы, на которой был расположен офис Nitobi.
Возможности
По своей сути, Cordova предлагает простой, но мощный API для вызова машинного кода из JavaScript'а. Это означает, что вы можете передавать любые данные из WebView на само устройство.
Многие не совсем правильно понимают этот момент. Cordova дает доступ к низкоуровневому API, с помощью простых плагинов (например, для доступа к камере и компасу). Поэтому, когда кто-то говорит, что Cordova не может делать то, что могут нативные приложения, он ошибается. Единственным ограничением являются плагины, доступные в настоящее время, и ваше желание и способности в написании недостающих плагинов.
Для работы с Cordova нужно устанавливать SDK мобильных платформ. Эту проблему решает PhoneGap Build — облачный сервис, который компилирует ваш HTML5 в готовые приложения без головной боли поддержки нативных SDK.
Разница
Cordova — это фреймворк с открытым кодом, которым управляет Apache. PhoneGap — это Cordova + инфраструктура от Adobe. Можно рассматривать Cordova как движок, который питает PhoneGap, подобно тому, как WebKit — это движок, который питает Safari, или Blink — Chrome.
1. Cordova это OpenSource, а PhoneGap принадлежит Adobe.
2. Кроме разных имен пакетов, у PhoneGap и Cordova, разная документация.
3. При выходе новых версий ОС (например iOS 64-bit), Cordova обновляется быстрее, чем PhoneGap.
4. У Cordova нет облачного сборщика проектов.
Что выбрать?
Если вы не хотите заморачиваться с командной строкой, или вам нужна интеграция с облаком, выбирайте Phonegap Build. В остальных случаях, выбирайте Cordova CLI.
Главное, что бы вы ни выбрали, не смешивайте технологии в одном проекте. Это внесет большой беспорядок.
Комментарии (18)
ZoomLS
11.12.2015 15:50А возможно сделать html5-приложение для Android без сторонних библиотек(вроде Cordova), а используя стандартное SDK?
funnybanana
12.12.2015 20:27Пробовал писать небольшое приложение на PhoneGap — по сути одна html страничка которая подгружает всякие графики… но в фоне программа работать нормально не захотела…
НО!
писать всё это было так быстро и легко что всё же стоит отдать должное разработчикам.DmitrySolomennikov
13.12.2015 10:12Cordova — замечательный инструмент, у которого, впрочем, есть свои ограничения.
Во-первых, очень плохо с отладкой. Если вы допустили ошибку в JS-коде, приложение молча перестает работать. Понять что происходит можно только со строгой дисциплиной — одно изменение в коде, затем проверка. Еще помогает перед запуском пропустить код через JSLint, он ловит синтаксические ошибки.
Я знаю, что можно запустить код в браузере. Однако, и это во-вторых, не все плагины работают в режиме браузера. Так, например, не работает SQLite, поэтому тестирование можно осуществлять только на реальном устройстве или в эмуляторе, что не очень удобно. Кроме того, в некоторых случаях незначительно различается поведение кода на эмуляторе и на устройстве, также местами различается результат верстки HTML.
Поэтому выбирать Cordova для относительно сложных приложений, требующих чего-то большего, чем просто HTML+JS, нужно с осторожностью.lega
13.12.2015 13:40+3Во-первых, очень плохо с отладкой.
Я тоже так думал пока не попробовал удаленную отладку (для Android 4.4+)
Просто запускаете приложение на телефоне, а в браузере на компьютере можно видеть все логи, делать точки останова, дебажить, менять переменные, править DOM код на ходу.
Shannon
15.12.2015 03:48Еще для относительно сложных приложений можно использовать Visual Studio, там в последних версиях есть «Приложения Apache Cordova» и всякие возможности для отладки
wartur
15.12.2015 14:30Спасибо за статью. Быстро разобрался что к чему. Я думаю было бы классно написать статью.
«Быстрое введение в разработку мобильных приложений для web-разработчиков», где сразу же было бы написано что к чему, сравнение одного с другим и как начать, хотя как начать не обязательно там все ясно — переходим на нужный сайт и курим докиShannon
15.12.2015 23:45Если именно быстрое введение, то — habrahabr.ru/post/257889 и уже через 10 минут опробовать результат. Разве что Visual Studio удобнее по части вариаций сборки и возможностей, но для попробовать как можно быстрее Intel XDK подойдет лучше
В статье небольшая часть информации уже устарела, Framework7 исправил и добавил много чего, в том числе появилась полноценная поддержка material design с правильной реализацией переключения интерфейсов.
И если для андроида есть возможность использовать CrossWalk для ускорения, то для ios тоже появился плагин github.com/Telerik-Verified-Plugins/WKWebView который заменяет встроенный стандартный webview на улучшенный WKWebView, с лучшей производительностью и прочими плюсами, доступный с ios 8
maxru
А теперь вопрос — как в cordova-app сделать нормальную работу в фоновом режиме? :)
«Нормальную» — означает не постоянно долбить телефон хаком и высаживать батарею, а вполне себе нативно.
zapolnoch
Cordova это WebView (мини-браузер) и набор самых что ни на есть нативных (Java, Objective-C) плагинов, которые передают данные между устройством и WebView. Я не понимаю, что может помешать вам написать нативный фоновый режим на Java и обернуть его в Кордова-плагин.
thelongrunsmoke
Чтобы от такого плагина был толк, он должен быть кроссплатформенным, а тогда теряется весь смысл использовать эти «зоопарки багов». Мало того, обертка плагина не универсальна. Если он работает при локальном билде PhoneGap, то на PhoneGap Build, скорее всего, не заработает. Плюс WebView, по понятным причинам, самый медленный элемент любой платформы.
zapolnoch
Многие выбирают PhoneGap не из-за кросплатформенности, а потому что им проще и привычнее строить View с помощью веб-технологий (HTML/CSS). Я знаю Java и могу писать на нем, но построение даже простейшего UI под Android это боль и слезы.
Не случайно разработка на Android стоит на 30% дороже, чем на iOS. Это потому что iOS-разработчики строят UI в WYSIWYG, а Android-разработчики залипают в своем XML на многие часы.
kivsiak
Вы заблуждаетесь в каждом из тезисов, за исключением цены разработчика.
maxru
В таком случае мне проще написать два нативных скелета с геотрекингом и фоновым режимом и воткнуть в него WebView.
PhoneGap/Cordova в таком случае вообще не нужны.
IvanTheCrazy
Для геотрекинга есть отличный плагин. iOS и Android точно поддерживается и превосходно работает.