Apache Cordova es un framework con un conjunto de APIs que te dan acceso a funciones del dispositivo a los cuales en teoría no tienes acceso nativamente, cosas como la cámara, el acelerómetro, etc. Lo cual nos permite crear aplicaciones para un montón de plataformas utilizando un mismo lenguaje, incluso el mismo código.
Cosas importantes a tener en cuenta
¿Qué lenguaje se utiliza?
Las aplicaciones con Apache Cordova se hacen con html, css y javascript.
¿Para que plataformas sirve?
Como se puede ver en su documentación soportan, de diferentes maneras, todas estas plataformas:
- Amazon Fire OS
- Android
- Blackberry 10
- Firefox OS
- iOS
- Ubuntu
- Windows Phone
- Windows 8
- Tizen
¿Mi aplicación funcionará igual de bien/mal en todos los sistemas operativos?
No, como veremos más adelante, para cada sistema operativo se genera una aplicación y tienen diferentes características.
¿Y se verá igual en todos los OSs?
Gracias a una de las características más interesantes de Apache Cordova, podremos aplicar cambios concretos para cada aplicación según su sistema operativo, utilizando la carpeta de merge tenemos la posibilidad de incluir cualquier archivo (imágenes, css, javascript, etc.) de manera que al compilar nuestra aplicación podemos tener un css para cada plataforma, o un sprite de iconos distinto, sin tener que escribir nada de código.
¿Esto es lo mismo que el famoso PhoneGap?
No exactamente, PhoneGap es una distrubución de Apache Cordova.
Hace un tiempo usar Apache Cordova era algo engorroso y se tenía que hacer todo con comandos shell, entonces PhoneGap era una buena alternativa que nos facilitaba mucho la vida (y lo sigue haciendo) ya que compilas en la nube de manera que te ahorras los comandos y sobretodo tener instalados los SDK
¿Es uno mejor que el otro?
Yo he probado ambas opciones y desde que Apache Cordova se puede utilizar con Nodejs he decidido utilizar siempre esta opción ya que el proceso de compilar y demás se me hace muy rápido y sencillo, aunque tenga que tener yo los SDK pero no descarto volver a usar PhoneGap en el futuro.
Eso sí, como siempre, si lo haces en tus máquinas siempre es todo totalmente gratuito y eso no te lo quita nadie.
Comportamiento según la plataforma
Voy a comentar el comportamiento de Apache Cordova según las plataformas destacadas, hay que entender que es muy distinta una app hecha con este sistema para iOS que por ejemplo para Blackberry10
Android En este sistema después del build un archivo .apk donde tendremos un webview, que se comunica con la librería de Apache Cordova mediante la suya de Android en JAVA y podremos acceder, por ejemplo, a la cámara del dispositivo.
Blackberry 10 Cómo este sistema operativo admite HTML5 de manera nativa, al hacer el proceso de build, este simplemente traducirá a las APIs de JavaScript que ya existen para que se ejecute en el dispositivo.
Firefox OS Es un sistema muy parecido al de Blackberry 10 que acaba haciendo lo mismo, utilizar las apis de JS.
iOS En esta caso el resultado del build será un .ipa que tendrá un webview con nuestra app, que se comunicará gracias a la librería de Apache Cordova con su librería en Objective-C para poder acceder a lo que necesitemos del dispositivo.
Windows 8 Nos encontramos con el mismo caso que hemos visto en BB10 y FFOS.
Windows Phone A día de hoy no acepta aplicaciones en HTML5 de manera nativa, en mi opinión acabará haciéndolo ya que en Windows 8 lo hace y se han visto varios artículos sobre ello, mientras tanto nos encontramos en un caso parecido al de Android e iOS solo que esta vez el lenguaje de WP es C# con XAML.
Conclusiones
Si somos capaces de hacer un buen código y optimizarlo al máximo podemos hacer aplicaciones, no demasiado complejas, usando este método y ahorrarnos un montonazo de tiempo y dinero. Si aún así eres de los que sigue reacio a estas técnicas ya que en nativo es mucho mejor te animo a conocer a la gente de #Cocoonjs que están revolucionando todo lo que sabemos sobre los webview, de momento para juegos pero como nos prometieron hace poco, en su versión 2.0 van a dar un gran salto y podremos crear apps con estas técnicas en su webview que está cambiando las cosas.
Gracias a Jorge del Casar, de él he aprendido casi todo lo que se sobre todo esto.