¿Deseando crear tu primera App? Cordova es tu framework
21/05/2018

Una de las primeras cuestiones a las que nos enfrentamos al momento de comenzar a desarrollar aplicaciones móviles, Apps, es qué modelo, tecnología y lenguaje de programación usar para el desarrollo.

Por supuesto que no existe una respuesta única y unánime al respecto, dependerá de los recursos económicos con que se cuente, los conocimientos previos del equipo, la arquitectura general de la solución, así como elementos exógenos como intereses, pasiones, acuerdos, etc.

Lo primero que debemos saber es que el universo de las Apps se divide en tres grandes grupos de acuerdo a la técnica con que fueron desarrolladas:

  • Nativas.
  • Nativas Híbridas.
  • Nativas Generadas.

1. Apps Nativas:

Significa que para su desarrollo se utilizó el lenguaje de programación nativo del dispositivo, Objetive C o Swift para iOS, Java para Android y .Net para Windows Phone. Es un modelo cien por ciento dependiente de la plataforma y las Apps no son portables, hay que desarrollar una por plataforma.

Los principales paradigmas asociados a las Apps nativas son:

  • Se puede lograr el mejor rendimiento posible.
  • Se puede lograr un look&feel óptimo acorde al sistema operativo.
  • Se puede acceder a todas las capacidades del dispositivo.
     

2. Apps Nativas Híbridas:

Son aplicaciones desarrolladas usando HTML5, CSS y JavaScript, desplegadas dentro de un contenedor nativo como Phonegap/Cordova el cual brinda acceso a las capacidades del dispositivo de una forma totalmente neutral respecto al sistema operativo. Es un modelo neutro respecto a a la plataforma y con portabilidad máxima.

 

3. Apps Generadas:

Son aplicaciones desarrolladas usando herramientas como Xamarin o Genexus (entre muchas otras), en donde el desarrollo se realiza usando técnicas y lenguajes específicos de la herramienta y luego se genera la App en el lenguaje de la plataforma destino para ser compilada con las herramientas nativas. Son lo que se denomina falsas nativas, pues si bien sus fabricantes claman generar Apps nativas, éstas no cumplen ni cercanamente con ninguno de los tres paradigmas de las Apps nativas. Por esta razón las denominamos Generadas.

 

Tras haber visto los tres grandes grupos, vamos a centrarnos en el segundo, “Las apps Nativas Híbridas” que es  en donde encontramos Phonegap/Cordova.

 

Diferencias entre Phonegap y Cordova:

 

Actualmente no existe ninguna diferencia entre PhoneGap y Apache Cordova, a excepción del nombre y desde dónde se descargan. Ambos son gratuitos, Open Source y se utilizan del mismo modo.

PhoneGap no es más que una distribución de Apache Cordova. La diferencia entre ambos estriba en que Adobe tiene la potestad para extender si quiere el producto y dotarlo de herramientas o características propias, por las cuáles puede decidir cobrar.

Hoy por hoy, y desde hace muchos años, PhoneGap lo único que tiene a mayores es la integración con los servicios de compilación de Adobe, que si quieres los usas y si no quieres no. Por otro lado las actualizaciones de Apache Cordova suelen ser algo más frecuentes, dado que es el producto base.

Es por todo esto que, en la práctica, se habla de manera indistinta de uno o de otro, como si se tratara del mismo producto, cuando no lo es (pero casi).

Una vez visto las diferencias entre ambas veamos qué es exactamente Cordova y porque la recomendamos para aquellas personas que estén interesadas en iniciarse en el mundo del desarrollo móvil:

 

¿Qué es Cordova?


Apache Cordova es un framework para el desarrollo de aplicaciones móviles propiedad de Adobe Systems que permite a los programadores desarrollar aplicaciones para dispositivos móviles utilizando herramientas web genéricas como JavaScript, HTML5 y CSS3, resultando aplicaciones híbridas.

La aplicaciones híbridas comparten la misma interfaz mientras que “por debajo” sigue estando el código nativo de cada sistema operativo, de ahí que se consideren híbridas. Cordova proporciona, además, una serie de bibliotecas de código abierto que permiten la comunicación entre esta interfaz común y las distintas funciones nativas del dispositivo.

Si comparamos Cordova con apps Nativas tendríamos lo siguiente:

  • Tiempos y costo de desarrollo: La simplicidad del HTML + JavaScript, sumado a la capa de abstracción que brindan los plugins de Phonegap hace más simple el acceso a funciones nativas como la geolocalización, notificaciones push, acelerómetro, etc., con respecto el desarrollo nativo. Esto sumado a los infinitos recursos disponibles en la web para esta tecnología (todo mediante un API cien por ciento neutral respecto al sistema operativo) hace que desarrollar una App con esta tecnología insuma entre un 30% y un 50% del costo en comparación con las nativas (una plataforma).
  • Curva de aprendizaje: La simplicidad del HTML, CSS y JavaScript, junto con la simple API de MobileUI (framework open source optimizado para Phonegap para el desarrollo de apps), hace que un recurso esté rápidamente capacitado en esta plataforma. Si a esto le sumamos la simplicidad extrema de Phonegap Build para compilar en la nube, nuevamente la opción híbrida se lleva el primer lugar, permitiendo una curva de aprendizaje mucho mejor en Phonegap/Cordova que en apps nativas.
  • Recursos humanos disponibles en el mercado: Con la existencia de la web es indiscutible que la abundancia de recursos en HTML, CSS y JavaScript desborda ampliamente la de las otras plataformas, máxime aún si consideramos la curva de aprendizaje muy baja de esta alternativa, tal como se vio en el punto anterior.
  • Experiencia de usuario: En la soluciones con HTML5 los controles, con excepción de los que nativamente brinda el WebView, deben ser simulados usando HTML5 y CSS3, algo que se logra rápidamente con buen nivel.
  • Rendimiento: Una consulta común acerca de Phonegap es relativo a su velocidad. Desde la versión 3 y con la evolución de los WebView, sumado a proyectos como crosswalk para Android, el rendimiento de estas aplicaciones se ha transformado en óptimo, sus transiciones suaves y JavaScript es un lenguaje ideal para el tratamiento de servicios REST/JSON. Integrado con MobileUI se logra un rendimiento excelente, similar a las nativas.