Los móviles se han convertido en algo básico en nuestras
vidas. Con pantallas de alta resolución, GPS, cámaras capaces de sacar fotos y
videos de alta calidad, navegadores, aplicaciones nativas con gran
funcionalidad, pantallas táctiles, conexión a internet constantes…. Se podría
decir que el móvil es tu conexión con el mundo. Ante este panorama, muchos
negocios han visto como a la necesidad de tener presencia en internet, se ha
unido la de tener una estrategia móvil.
En el proceso de desarrollo de software, uno de los grandes
inconvenientes es la amplia variedad, ya sea de sistemas operativos, hardware,
etc que existen. Este problema no es ajeno al desarrollo móvil, ya que prácticamente
podemos decir que hoy en día cada fabricante de terminales tiene su propio conjunto
de herramientas, lenguajes preferidos y modo de hacer las cosas.
Esto llevó a muchas empresas a centrarse en una única
plataforma y hasta hace poco el tener una aplicación que funcionase al para iOS
(sistema operativo del iPhone), bastaba para tener esta tarea como cubierta,
pero en los últimos años esta tendencia continúa, y ha surgido la necesidad de
también ser operativo en otras plataformas móviles que poco a poco, o en
algunos casos a gran velocidad, ganan cuota de mercado.
Pero crear una aplicación que funcione sin problemas entre
distintas plataformas y móviles puede sonar fácil, sólo es copiar código ya
existente, pero sólo en teoría, ya que hay que tener en cuenta la alta
complejidad técnica que tiene debido a un gran número de factores como lo
fragmentación en el mundo móvil, la rápida evolución de los estándares, las
limitaciones impuestas por los propios dispositivos (tamaño de pantallas,
memoria…), problemas de conexión a internet que pueden tener estos dispositivos
(bajo ancho de banda, perdidas de conexión...), grandes diferencias entre
sistemas operativos… Lo ideal sería que tu código se ejecutase en todo tipo de
plataformas (multiplataforma) y dispositivos (multidispositivo) sin que eso
supusiese un gran esfuerzo para el programador, pero la realidad es muy
distinta y cada entorno tiene sus reglas.
Esto podría llevarnos a la conclusión de que el problema es
que hay demasiadas plataformas, aun así la realidad es que no todas gozan de
igual salud e importancia, en cuanto a cuota de mercado, por lo que podemos
focalizar nuestros esfuerzos en los tres que suenan con más fuerza y que más
futuro tienen: iOS, Android y Windows Phone.
Para facilitar la terea de crear aplicaciones
multiplataforma (al menos para las tres mencionadas anteriormente) se están
realizando muchos esfuerzos de la comunidad para promover buenas prácticas y estándares
móviles, guías y frameworks.
En este blog analizaremos las arquitecturas y
frameworks existentes, para evaluar cuál sería la mejor alternativa, desde el
punto de vista arquitectónico, a la hora de desarrollar una aplicación para
estas plataformas.