lunes, 2 de junio de 2014

Phonegap vs programación nativa, y breve reflexión

Programar haciendo uso de Phonegap tiene sus ventajas, pero también tiene sus desventajas, y según el caso, podría llegar a ser más conveniente realizar aplicaciones nativas para cada sistema.
En este artículo vamos a analizar los pros y contras que pueden ayudarnos a decantarnos por el uso de Phonegap o no.

Ventajas de Phonegap respecto a programación nativa para cada sistema:
  • Un código, varios ejecutables. La ventaja evidente de Phonegap es el ahorro de tiempo y esfuerzo ya que con un mismo código podemos obtener los  ejecutables para distintas plataformas. Además, supone un importante ahorro de dinero si estamos en un entorno empresarial.
  • Utilización de lenguajes de desarrollo web. Para obtener los ejecutables de nuestras aplicaciones, desarrollamos con javascript, html, y css. Si tenemos conocimiento de estas herramientas, prácticamente ya tenemos una base válida para empezar a programar en Phonegap. Quizá debamos añadir también un conocimiento muy básico de xml por aquello del fichero de configuración config.xml.
  • Aprovechamiento de frameworks, preprocesadores, etc muy potentes disponibles en desarrollo web. Como prácticamente estamos haciendo desarrollo web con algunos matices, podemos usar herramientas de ayuda como son preprocesadores css(Sass, Less, Stylus...), preprocesadores html(haml, jade, emmet...), preprocesadores javascript(coffeescript) o frameworks de desarrollo javascript(Angularjs, Emberjs, jquery...). Esto hace la programación web más amena y cómoda.
  • El aprendizaje de html, css y javascript que adquirimos al aprender a programar para Phonegap, en caso de no tenerlo, no sólo es bueno para escribir aplicaciones móviles, sino para desarrollo web en general. El saber tecnologías nuevas siempre es bueno pero en el caso de estas tres, hoy en día, es más importante aún.
  • Con Phonegap Build, tu código a la nube. Mediante utilidades como Adobe Phonegap Build podemos evitar tener kits de desarrollo(SDK) en nuestros ordenadores para compilar, y además tendremos más ordenadas las aplicaciones desarrolladas. En caso de trabajo en equipo, esta ventaja gana peso.
  • Desde la versión 3.0 de Phonegap, el rendimiento de las aplicaciones se ha optimizado. No van a igualar a las nativas, cierto, pero con las últimas actualizaciones, cada vez la diferencia de rendimiento entre las aplicaciones nativas y las realizadas con Phonegap/Cordova es menor. Sobre todo si las ejecutamos en terminales modernos.

También analizaremos los contras que existen, no todo iban a ser alegrías:

  • El que mucho abarca, poco aprieta(compatibilidades). PhoneGap nos hace de puente entre nuestro código web y el código nativo del dispositivo, por lo que nos da la habilidad de usar parte de su hardware. Pero no todas las funcionalidades del dispositivo están disponibles, dependiendo del sistema móvil en el que nos encontremos. Es importante conocer bien las compatibilidades de cada plugin y evento Phonegap antes de "implementarlas a lo loco", para no llevarnos sorpresas.
  • La depuración es mucho más tediosa que si programamos en nativo, y en parte gran culpa de esto lo tiene javascript.
  • Una aplicación nativa siempre será más rápida que una desarrollada con Phonegap/Cordova. La explicación a esto, es que Phonegap usa un webview en una app nativa, que levanta un "servidor local", y así permite que corra nuestra aplicación móvil.

Conclusión

Como en casi todo, la elección óptima siempre vendrá tras un estudio previo al desarrollo, teniendo en cuenta los requisitos y el comportamiento esperado de las aplicaciones.
Si lo que queremos desarrollar es una aplicación simple cuyos requerimientos tienden a ser muy bajos, y que no requiere usar características del sistema operativo de la plataforma(o un uso básico de las mismas), y que adicionalmente deseamos que funcione en diferentes tipos de dispositivos móviles, PhoneGap es una muy buena elección.
Por contra, si estamos hablando de aplicaciones que soportan funciones importantes de un sistema específico, y de alta complejidad, se debe considerar seriamente su implementación en plataforma nativa.

No hay comentarios:

Publicar un comentario