Desarrollando Aplicaciones Móviles (Nativa vs PhoneGap vs Titanium)

Desde hace ya varios años tenia la inquietud de aprender a desarrollar aplicaciones móviles para dispositivos iOS y Android, no se había dado la oportunidad para tener el tiempo de investigar y hacer algunas pruebas hasta hace unos meses atrás.

Hay muchas opciones de desarrollo para aplicaciones móviles hoy en día, la nativa, titanium, phonegap, webs moviles y otras más que no tocare.

Mis opciones eran claras y pues me di a la tarea de probar cual era la mejor para desarrollar en un tiempo aceptable aplicaciones que permitieran tener un buen desempeño.

Nativa:

Como su nombre lo indica es la solución base de desarrollo para aplicaciones móviles, es la provista por las casas madre y también es la que tiene mejor soporte y desempeño en cada plataforma. Hablo de trabajar las apps en Objective-C para iOS y en Java para Android.

Que sucede con este tipo de desarrollo, normalmente es un poco más lento y si se quiere sacar una app en multiples plataformas en un tiempo reducido es prácticamente imposible ya que hay que desarrollar para cada plataforma en el lenguaje y bajo las reglas que cada una provee.

En mi caso particular esto era algo que definitivamente me dejaba con las ganas de empezar pero con una cuesta arriba muy larga y empinada. El tener que aprender cada framework, reglas, formas de trabajo, bugs, atajos y demás para cada plataforma no solo es tiempo de aprendizaje sino de desarrollo que no siempre se tiene.

Ahí entre a buscar otra manera de desarrollar para multiples plataformas de una sola vez o de una manera en la que tuviera que hacer cambios mínimos para que funcionara en las principales iOS y Android.

PhoneGap:

Este ambiente de desarrollo es bastante fácil de usar si eres desarrollador web ya que se basa en una serie de librerias que luego de realizar tu código en HTML + CSS + Javascript permite compilar a iOS y a Android y si todo sale bien tienes una aplicación que corre en ambas plataformas sin hacer cambio alguno en el código.

“Esto es genial!” pensé, así que me puse manos a la obra y empece a desarrollar pruebas piloto en phonegap. Luego de armar mi primera app en alrededor de una hora, la cargue a mi android y bum! tenia ya una aplicación android corriendo que funcionaba y que era visualmente buena.

Me puse a usarla un par de horas y ahi fue el segundo bum! la aplicación realmente era lenta y mientras más la usaba más se degradaba su desempeño.

Además de esto el look aunque era bueno no era nativo se veía algo fuera de lugar. Esto me dejo algo triste porque aunque era una buena opción no era la ideal.

Después de investigar un poco vi que efectivamente era un problema el desempeño de las apps ya que al final era un webview en una app nativa que levantaba un “servidor local” que permitía que corriera la aplicación en el móvil. Esto tenia un grán impacto en el desempeño en el dispositivo, las animaciones aunque en iOS eran fluidas en Android no siempre lo eran y esto provocaba que se vieran cortadas. Otro problema eran las diferencias entre los navegadores entre las diferentes versiones de Android ya que no todas las versiones soportan todo, por lo que no todas las animaciones corrían bien, el posicionamiento a veces no quedaba bien, imagenes pixeleadas, descuadre de imagenes, etc… (los que desarrollan para la web saben de estos dolores)

Así que me puse a pensar y decidí probar otra plataforma.

Appcelerator Titanium:

Esta aparecía como una de las opciones principales junto al anterior mencionado PhoneGap. Es una de las alternativas más usadas y también de las más sencillas de utilizar si tienes un trasfondo web y has usado javascript.

Titanium es una plataforma en la que se pueden desarrollar aplicaciones “nativas” de manera rápida y con un buen nivel. Te permite escribir código javascript y titanium se encarga del resto.

Una vez compilada y generada la aplicación (apk y/o ipa) se puede instalar en el móvil y probarla. El desempeño de las aplicaciones es muy bueno y supera en gran manera a phonegap, te permite hacer aplicaciones que usen bases de datos, sincronización, uso de la web como de cosas nativas, es una alternativa bastante efectiva para realidad aumentada, scanners de códigos de barra o códigos QR, además de muchas otras cosas.

En este tiempo que tengo de usarlo para desarrollo he realizado 3 aplicaciones de diferente tipo, desde un soundboard de darthvader hasta una aplicación de directorios médicos, pasando por lector de QR, realidad aumentada, posteo de imagenes y texto, etc…

En mi experiencia Titanium se lleva las palmas como opción de desarrollo multiplataforma.

Eso si, esto no viene sin sus problemas y complicaciones. Por momentos hay lentitud en algunas aplicaciones que se puede mejorar optimizando el código hasta cierto punto, pero lo que resulta como aplicación es algo bastante más nativo que con phonegap.

 

Conclusión:

Depende de tu tiempo y necesidad debes escoger con cual iniciar, en mi caso Titanium fue la solución a un problema que de otra forma no hubiera sido posible arreglar.

Definitivamente nada vence al desempeño nativo, pero si tu aplicación no es un juego 3D con el que necesitas exprimir cada byte para que el rendimiento sea 100% impecable, Titanium te ofrece una plataforma en la que puedes montar tus proyectos y sacar algo muy bueno.

Yo trabajo en:

Macbook Pro 13″
6GB de RAM
Mountain Lion
XCode 4.6.3
Android SDK

2 Comments

  1. andresRolo

    Muy interesante el artículo.
    Yo inicié en desarrollo nativo android (del cuál hay demaciada documentación), luego probé phonegap y me pareció aceptable dado la reutilización de código que permitía.
    Ahora probaré Titanium y espero que sea eficiente.
    Tengo una pregunta: Para construir una app en phonepag o titanium que requiere acceder a los componentes propios de cada sistema operativo ( como los contactos o barra de notificaciones) se requiere un desarrollado independiente para cada uno?
    Muchas gracias.

    1. Frisley

      Perdon la tardanza en la respuesta, en el caso de titanium ya trae los accesos a las partes de componentes propios del sistema (identificados en la documentacion) y como se pueden utilizar. Si necesitas algo mas especifico existen plugins que puedes usar (algunos gratis otros de pago) para poder agregar la funcionalidad necesitada (QR code, Augmented Reality, etc…)

Leave a Reply

Your email address will not be published. Required fields are marked *