Pensando sobre la Estrategia de Desarrollo Móvil Multiplataforma


Como programador de aplicaciones móviles debes preguntarte cual es tu estrategia para desarrollar aplicaciones para las diversas plataformas que existen. Esa pregunta es algo difícil de contestar, y se debe a que tenemos muchas opciones disponibles. A continuación veremos las opciones que tenemos para desarrollar para iOs, Android, Windows Phone o Windows 8, cual sería tal vez la más recomendable y espero también tu opinión.

El desarrollo multiplataforma quiere decir, básicamente, que construyamos una aplicación móvil que funcione en distintos dispositivos móviles sin importar el sistema operativo con el que cuenten. No necesariamente en todos, pero si en varios. Es decir, puedes tener una idea para una aplicación, luego piensas ¿va a funcionar en Android? ¿Y qué pasa con iOs? ¿Desarrollo también para Windows Phone sin importar que su nicho de mercado es pequeño? ¿Aún debo recordar a BlackBerry? Espero que no.

El escenario más común, y que la mayoría de desarrolladores y empresas consideran es elegir entre Android y iOs, o si debería desarrollar una aplicación nativa o una versión web de la aplicación. Tal vez se considere una versión nativa para Windows Phone u 8. La cosa es que, todo llega a un punto en que tienes que decidir. Y tienes que decidir porque si no tu extraordinaria aplicación nunca llegará a las masas.



Veamos las diferentes opciones:

1. Aplicaciones Nativas 

Está bien. Seguro parece la mejor opción. Pero, espera, piensa que tienes que desarrollar en Objective C si quieres hacer una aplicación para iOs. Vas a utilizar el framework Cocoa y tendrás que tener una Mac. Para Android, tienes que saber Java y puedes desarrollar en Mac o Windows, pero es probable que tengas que utilizar un emulador. Ahora cuando vayas por la opción de desarrollar aplicaciones nativas, por supuesto que tienes acceso a todos los elementos de la interfaz gráfica nativa. Construyes la aplicación y los usuarios van a percibir dicha aplicación especial para esa plataforma. Es la idea por la que la mayoría se decide por construir aplicaciones nativas. Apuntas a dos grandes mercados si solo desarrollas en Android y iOs. Si eliges desarrollar una aplicación de pago, la mejor opción es desarrollar para iOs, olvídate de Android, que es el reino de las aplicaciones gratuitas.

2. Aplicaciones HTML5 o Híbridas

La opción 1 es esa. La opción 2 es hacer algo entre desarrollo nativo y lo que es puro HTML o un desarrollo multiplataforma. Una opción recomendable es utilizar las herramientas de desarrollo Xamarin. Xamarin te permite escribir una aplicación para Android y iOS en C#. Puedes utilizar las librerías portátiles en C# para escribir gran parte de código portable que puedes reutilizar. La diferencia entre desarrollar aplicaciones nativas y desarrollar aplicaciones con Xamarin es muy pequeña porque Xamarin se coloca encima de las API nativas y lo que hace es dejarte escribir el código Java o de Objective C mediante C#. Hay mucho tras bastidores, pero seguirás utilizando los controles nativos. Es solo otra capa de desarrollo encima. Después de Xamarin hay otras herramientras como Titanium. O como PhoneGap donde realmente construyes una aplicación híbrida. Ya estamos entrando al terreno de HTML5.

Puedes construir una aplicación HTML5 y básicamente alojarla en tu hosting, y puedes hacer que funcione en plataformas móviles. Puede ser que utilices algo como Kendo UI de Telerik o Sencha Touch. Luego lo que tienes es básicamente una aplicación HTML5 que es responsiva o adaptable (el término que prefieras) y que funciona en diferentes plataformas móviles. Si quieres hacer un instalador, puedes encapsular esto en algo como PhoneGap y en sí crear una aplicación nativa.

Ahora veamos las ventajas y las desventajas. 

Si vas a desarrollar una aplicación nativa, lograrás la experiencia Android o iOS o Windows más pura, pero necesitas experiencia, herramientas y desarrolladores que pueden escribir en esas plataformas. Escribir código en Objective C, si nunca lo has hecho antes, no es tan fácil. Hay una gran curva de aprendizaje. Incluso por el lado de Java y desarrollando en Android, también hay una gran curva de aprendizaje. Si quieres crear aplicaciones Windows Phone es una plataforma completamente distinta y Windows 8 también es otro mundo.



Si vas por el camino del HTML5, las cosas aún están en una edad temprana. Tal vez cuando los dispositivos puedan ser más poderosos, podremos desarrollar aplicaciones HTML5 para plataformas móviles. Pero aún no. Justo ahora, la experiencia es complicada. Es un poco difícil lograr que las cosas funcionen correctamente en cada dispositivo y que se vean igual de bien, y existe un tiempo de espera para la carga del contenido o la interfaz. No son tan rápidas. No tanto como cuando desarrollas aplicaciones nativas.

Ahora si tomamos una aproximación híbrida, esa es la más recomendada. Para la mayoría de desarrolladores, yo por ejemplo, se nos hará más fácil haciendo las cosas con Xamarin. Piensa que escribirás código una vez y funcionará de forma nativa en varias plataformas.

Si usas algo como MvvmCross, la cual es una librería que funciona con Xamarin, permite que utilices el 90% del código, y la única cosa diferente entre las plataformas son las vistas. Xamarin parece ser una opción muy buena, ya que aunque tengas que aprender algo sobre el desarrollo para iOs o para Android o para Windows, aun tendrás mucho código común que escribirás en C#. Básicamente utilizarás un único lenguaje de programación en vez de probar aprender al menos tres lenguajes diferentes y no poder compartir el código entre ellos. Y tampoco vas a tener los problemas que tendrías con HTML5. Por ahora, Xamarin parece ser la mejor opción, y luego el desarrollo híbrido y luego el nativo. En HTML5 todavía no. Tal vez en el futuro.

No es que esté haciendo promoción a Xamarin. No tengo comprada ninguna licencia con ellos, yo aún programo en Java para Android, sé C# y con esa habilidad podría construir aplicaciones móviles Windows pero pienso que las características de Xamarin la hacen una herramienta insuperable, he probado la versión gratuita y parece cumplir con lo que promete. Y al final la decisión depende de tí, amigo desarrollador.

Espero tu opinión y tal vez cuentes tu experiencia.

0 comentarios: