Entradas etiquetadas como Web mobile apps

Más sobre el desarrollo de apps móviles

Desarrollo de Aplicaciones Web MóvilesEn un post anterior comentaba un poco acerca de las diferencias del desarrollo para móviles entre la estrategia de desarrollar con tecnologías Web (HTML+CSS+Javascript) versus la estrategia de desarrolla de manera nativa. En dicho post mencionamos algunos productos, interesantes todos, para el desarrollo de aplicaciones móviles multiplataforma (apps que funcionan en cualquier dispositivo móvil con el mismo código de programación). En concreto comentamos de 3 casos específicos: Appcelerator Titanium, Phonegap y Rhomobile Rhodes.

La verdad son tres casos muy interesantes de analizar en profundidad. Los tres lanzan la promesa del desarrollo multiplataforma. El mensaje básico de todos ellos es: “No desarrolle para una sola plataforma. Desarrolle para todas con un solo código”. Y lo cumplen. Y precisamente porque lo cumplen es que las comunidades de desarrollo de esas alternativas están bastante conformes con su solución. Sin tratar de ser extenso en mi planteamiento, he aquí lo que en esencia hace cada una de esas herramientas:

1) Appcelerator Titanium: Básicamente provee un medio ambiente de trabajo de desarrollo muy poderoso y flexible, incluye un IDE completo, el cual genera código nativo del móvil. El código nativo funciona en cualquiera de los dispositivos compatibles (en teoría, muchos, pero de manera relevante en iOS de Apple, y en Android) prácticamente sin ningún cambio entre cada plataforma.

Sin embargo la estrategia parece técnicamente compleja y el desarrollador Web se “casa” con este ambiente de trabajo en lugar de utilizar tecnologías más estándares. Además, las aplicaciones no quedan optimizadas para cada plataforma. Me parece algo inmanejable para aplicaciones complejas y no aprovecha las especificidades del dispositivo.

2) Phonegap: Este producto asume que uno desarrolla su aplicación con tecnologías Web tradicionales (HTML5, CSS y javascript) pero que quiere “envolver” dicha aplicación en una capa que le permite poder ser publicada en las App Store como si fuera codificada de modo nativo. Esto me parece una solución bastante elegante aunque quizá es una estrategia débil si el app debe utilizar muchas capacidades gráficas o específicas del dispositivo.

3) Rhomobile Rhodes: Utiliza una estrategia muy similar a Titanium, con la diferencia que el desarrollo utiliza el patrón Model-View-Controller (MVC) directamente en el móvil. Además, a diferencia de Titanium, Rhodes ejecuta el código sobre una máquina virtual que queda funcionando en el móvil. A la manera como lo hace Java con su máquina virtual en ambientes desktop. Sólo que en lugar de Java se utiliza el lenguaje de programación Ruby.

Sin embargo, desde la óptica de una aplicación Web móvil, ni Titanium, ni Rhodes será superior a una estrategia directa como por ejemplo jQuery Mobile. Una aplicación Web con tecnologías estándares tiene no sólo la ventaja de funcionar multiplataforma sino también de ser estándar. Es decir, el developer no se “casa” con tecnologías o frameworks propietarios sino que se trabaja directamente con HTML y CSS, tal como otras aplicaciones Web.

Por otro lado, la promesa de Titanium y Rhodes de ofrecer un medio ambiente de trabajo cuyos productos de software funcionen en cada plataforma suena bastante complejo; sobre todo, dada la enorme fragmentación entre plataformas inclusive del mismo sistema operativo o fabricante. Pienso que si la estratagia de desarrollo nativo es forzosa (por razones de manejo complejo de funcionalidades del dispositivo) quizá lo mejor es desarrollar directamente en la plataforma. O sea, usar COCOA para iOS, y el medio ambiente de desarrollo Java para Android, etc. Esto pareciera ser más eficiente que pasarlos por un filtro de compilación o de máquina virtual.

Mi recomendación sería:
1) Desarrollar la aplicación móvil con un approach de Tecnologías Web Estándares: HTML5+CSS+javascript. (jQuery Mobile y Sencha Touch son alternativas sólidas). Luego, si es necesario colocar estas apps en las App Stores y App Markets, “envolverlas” con Phonegap para hacerlas parecer nativas.

2) Si no es posible o conveniente desarrollar una aplicación Web (de hecho, no siempre se debe seguir la estrategia de desarrollo Web para el móvil), entonces utilizar el enfoque de desarrollo múltiple: COCOA para iOS, Java Android SDK para Android, etc. De esa manera aseguramos buen desempeño, y aprovechamiento total de las capacidades del dispositivo.

, , , ,

Deja un comentario