# Apache Cordova

Apache Cordova (versión de código abierto de PhoneGap) es un popular entorno de desarrollo de aplicaciones móviles, originalmente creado por Nitobi. Adobe compró Nitobi en 2011, le cambió el nombre a PhoneGap, y más tarde liberó una versión de código abierto del software llamado Apache Cordova. Apache Cordova permite, a los programadores de software, construir aplicaciones para dispositivos móviles utilizando CSS3, HTML5, y JavaScript en vez de utilizar APIs específicas de cada plataforma como Android, iOS, o Windows Phone. Permite encapsular CSS, HTML, y código de Javascript dependiendo de la plataforma del dispositivo. Extiende las características de HTML y JavaScript para trabajar con el dispositivo. Las aplicaciones resultantes son híbridas, lo que significa que no son ni una aplicación móvil nativa (porque toda la representación gráfica se realiza vía vistas de Web en vez del framework nativo) ni puramente basadas en web (porque no son solo aplicaciones web, sino que están empaquetadas como aplicaciones para su distribución y tienen acceso a las APIs nativas del dispositivo). La mezcla de código nativo e híbrido ha sido posible desde la versión 1.9.
Anteriormente se conocía como "PhoneGap", después "Apache Callback". Como software libre, Apache Cordova permite wrappers, como Appery.io o Intel XDK.
PhoneGap es la versión paquetizada de Adobe de Apache Cordova. Como PhoneGap, muchas otras herramientas y frameworks también son construidos utilizando Apache Cordova, incluyendo Ionic, Monaca Archivado el 30 de noviembre de 2016 en Wayback Machine., TACO, el Intel XDK y Telerik Archivado el 28 de noviembre de 2016 en Wayback Machine.. Estas herramientas usan Apache Cordova, y no PhoneGap como sus herramientas de base.
Entre los colaboradores al proyecto Apache Cordova encontramos a Adobe, BlackBerry, Google, IBM, Intel, Microsoft, Mozilla, y otros.

## Historia

Inicialmente desarrollado en un evento iPhoneDevCamp en San Francisco, PhoneGap acabó por ganar el premio People's Choice Award en la conferencia O'Reilly Media Web 2.0 de 2009, y el framework ha sido utilizado para desarrollar muchas aplicaciones. Apple ha confirmado que el framework tiene su aprobación, incluso con los cambios de la nueva versión 4.0 de la licencia de desarrolladores. El framework PhoneGap se utiliza en varias plataformas de desarrollo de aplicaciones móviles como Monaca, appMobi, Convertigo, ViziApps, y Worklight como núcleo de sus entornos de desarrollo de aplicaciones móviles.
Las primeras versiones de PhoneGap requerían de un ordenador de Apple para crear aplicaciones iOS y un ordenador con Windows para crear aplicaciones para Windows Phone. Desde septiembre de 2012, El servicio de compilación Adobe PhoneGap permite a los programadores cargar código fuente CSS, HTML y Javascript a un "compilador en la nube" que genera aplicaciones para cada plataforma soportada.

## Diseño y razón de ser

El núcleo de las aplicaciones Apache Cordova usa CSS3 y HTML5 para su presentación y JavaScript para su lógica. HTML5 proporciona acceso al hardware subyacente como el acelerómetro, cámara, y GPS. Aun así, el soporte de los navegadores del acceso HTML5 a dispositivos no es compatible entre los distintos navegadores móviles, particularmente en las versiones más viejas de Android. Para superar estas limitaciones, Apache Cordova incrusta el código HTML5 dentro de un WebView nativo en el dispositivo, utilizando una interfaz de función foránea para acceder los recursos nativos del dispositivo.
Apache Cordova puede ser extendido con complementos nativos, permitiendo a los desarrolladores añadir más funcionalidades que se pueden llamar desde JavaScript, haciendo que se comuniquen directamente entre la capa nativa y la página HTML5. Estos complementos permiten el acceso al acelerómetro del dispositivo, cámara, brújula, sistema de archivos, micrófono, y más.
Sin embargo, el uso de tecnologías basadas en Web hace que algunas aplicaciones Apache Cordova funcionen más lentas que aplicaciones nativas con funcionalidad similar. Adobe advierte que las aplicaciones pueden ser rechazadas por Apple por ser demasiado lentas o no parecer bastante "nativas" (teniendo el aspecto y la funcionalidad compatibles con lo que los usuarios esperan en la plataforma). Esto puede ser un problema para algunas aplicaciones Apache Cordova.

## Plataformas soportadas

Apache Cordova actualmente admite el desarrollo para los sistemas operativos Apple iOS, Bada, BlackBerry, Firefox OS, Android, webOS, Windows Phone (7 y 8), Symbian, Tizen (SDK 2.x), y Ubuntu Touch. La tabla inferior es una lista de características soportadas para cada sistema operativo.
| Funcionalidad | Android | iPhone / iPhone 3G | iPhone 3GS o más nuevo | Bada | BlackBerry 10 y PlayBook OS | BlackBerry OS 4.6–4.7 | BlackBerry OS 5.0-6.0+ | Firefox OS | Symbian | Tizen | webOS | Ubuntu Touch | Windows Phone |
| Acelerómetro | Sí | Sí | Sí | Sí | Sí | — | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Cámara | Sí | Sí | Sí | Sí | Sí | — | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Brújula | Sí | — | Sí | Sí | Sí | — | — | Sí | — | Sí | Sí | Sí | Sí |
| Contactos | Sí | Sí | Sí | Sí | Sí | — | Sí | Sí | Sí | Sí | — | — | Sí |
| Archivos | Sí | Sí | Sí | — | Sí | — | Sí | — | — | Sí | — | Sí | Sí |
| Geolocalización | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Media | Sí | Sí | Sí | — | Sí | — | — | — | — | Sí | — | Sí | Sí |
| Red | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Notificaciones (alertas, sonido, vibración) | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Almacenamiento | Sí | Sí | Sí | — | Sí | — | Sí | Sí | Sí | Sí | Sí | Sí | Sí |