Apache Cordova (ранее PhoneGap ) — фреймворк для разработки мобильных приложений, созданный Nitobi . Adobe Systems приобрела Nitobi в 2011 году, переименовала ее в PhoneGap, а позже выпустила версию программного обеспечения с открытым исходным кодом под названием Apache Cordova. [5] Apache Cordova позволяет программистам создавать гибридные веб - приложения для мобильных устройств с использованием CSS3 , HTML5 и JavaScript вместо того, чтобы полагаться на API -интерфейсы для конкретной платформы , такие как Android , iOS или Windows Phone . [6] Он позволяет использовать код CSS, HTML и JavaScript в зависимости от платформы устройства. Он расширяет возможности HTML и JavaScript для работы с устройством. Полученные в результате приложения являются гибридными, а это означает, что они не являются ни настоящими мобильными приложениями, ни чисто веб-приложениями. Они не являются нативными, поскольку весь рендеринг макета выполняется с помощью веб-представлений, а не с помощью встроенной платформы пользовательского интерфейса. Они не являются веб-приложениями, поскольку упаковываются как приложения для распространения и имеют доступ к собственным API-интерфейсам устройств. Смешивание собственных и гибридных фрагментов кода стало возможным начиная с версии 1.9.
Программное обеспечение ранее называлось просто «PhoneGap», затем «Apache Callback». [7] [8]
PhoneGap был коммерческой версией Cordova от Adobe вместе со связанной с ней экосистемой. Многие другие инструменты и платформы также созданы на основе Cordova, включая Ionic , [9] Monaca , VoltBuilder, TACO, Onsen UI, GapDebug, App Builder, Cocoon, Framework7 , Quasar Framework , Evothings Studio, NSB/AppStudio, Mobiscroll и Платформа Телерик . [10] В качестве основных инструментов эти инструменты используют Cordova, а не PhoneGap.
В число участников проекта Apache Cordova входят Adobe , BlackBerry , Google , IBM , Intel , Microsoft , Mozilla и другие. [11]
PhoneGap был впервые разработан на мероприятии iPhoneDevCamp в Сан-Франциско в августе 2008 года. [12] Apple Inc. подтвердила, что эта структура получила одобрение, даже несмотря на изменение пункта 3.3.1 лицензионного соглашения для разработчиков Apple iPhone SDK версии 4.0, принятого в 2010. Платформа PhoneGap используется несколькими платформами мобильных приложений, такими как Monaca, appMobi, Convertigo, ViziApps и Worklight, в качестве основы механизма разработки мобильных клиентов.
Adobe приобрела Nitobi Software (первоначального разработчика) 3 октября 2011 года. [13] Одновременно с этим код PhoneGap был передан в Apache Software Foundation для запуска нового проекта под названием Apache Cordova. [14] Первоначальное название проекта, Apache Callback, [15] было сочтено слишком общим. [ нужна цитация ] Затем он также появляется в Adobe Systems как Adobe PhoneGap , а также как Adobe PhoneGap Build . В блоге Phonegap более подробно рассказывается, почему в конечном итоге было выбрано название «Кордова». В нем говорится: «Хотя истории происхождения PhoneGap часто различаются в зависимости от рассказчика, большинство коммиттеров могут согласиться, что проект родился в Нитоби, когда офис находился на Кордова-стрит в Ванкувере».
Ранним версиям PhoneGap требовался компьютер Apple для создания приложений iOS и компьютер Windows для создания приложений Windows Mobile. После сентября 2012 года служба Adobe PhoneGap Build позволяет программистам загружать исходный код CSS, HTML и JavaScript в «облачный компилятор», который генерирует приложения для каждой поддерживаемой платформы. Данная услуга прекращена в 2020 году.
PhoneGap получил приз зрительских симпатий на конференции Web 2.0, организованной O'Reilly Media в 2009 году.
Ядро приложения Apache Cordova использует CSS3 и HTML5 для рендеринга и JavaScript для логики. HTML5 обеспечивает доступ к базовому оборудованию, такому как акселерометр, камера и GPS . Однако поддержка браузерами доступа к устройствам на основе HTML5 неодинакова в мобильных браузерах, особенно в старых версиях Android. Чтобы преодолеть эти ограничения, Apache Cordova встраивает код HTML5 в собственный WebView на устройстве, используя внешний интерфейс функции для доступа к его собственным ресурсам. [16]
Apache Cordova можно расширить с помощью собственных плагинов, что позволяет разработчикам добавлять больше функций, которые можно вызывать из JavaScript, обеспечивая прямую связь между собственным уровнем и страницей HTML5. Эти плагины обеспечивают доступ к акселерометру устройства, камере, компасу, файловой системе, микрофону и т. д.
Однако использование веб-технологий приводит к тому, что некоторые приложения Apache Cordova работают медленнее, чем собственные приложения с аналогичной функциональностью. [17]
Начиная с версии 11, Apache Cordova в настоящее время поддерживает разработку для операционных систем Apple iOS , Google Android , Windows 8.1 , Windows Phone 8.1 , Windows 10 и Electron (программная платформа) (которая, в свою очередь, работает на Windows , Linux и macOS ). [18] Более ранняя версия Apache Cordova использовалась для поддержки Bada , BlackBerry , Firefox OS , [19] [20] LG webOS , Microsoft Windows Phone (7 и 8), macOS , Nokia Symbian OS, Tizen (SDK 2.x), и Ubuntu Touch . [21] [22]
Однако HTML5 имеет некоторые ограничения.
Наиболее заметным является отсутствие API для доступа к оборудованию устройства и датчикам, таким как акселерометр, компас, GPS и т. д. Хотя собственные приложения могут получать доступ к оборудованию устройства, им не хватает портативности, которую обеспечивают веб-приложения.
Таким образом, решением является создание гибридного приложения, которое в совокупности использует преимущества собственных и веб-приложений.