viernes, 16 de noviembre de 2012

Arquitecturas para desarrollo móvil - Modelo Web


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.

En este modelo, las aplicaciones son codificadas en un lenguaje de programación soportado por los navegadores web y es ejecutado dentro del navegador del móvil.

A la hora de presentar la información (parte UI) se utilizan dos enfoques, uno en el que tanto la lógica como las vistas son procesadas, ejecutadas y preparadas en el servidor, y otro en el que la mayor parte de este trabajo es hecho en cliente.

Arquitectura del modelo Web (Procesamiento en Servidor)

Para el segundo enfoque, la base es javascript

Arquitectura del modelo web (Parte en Cliente)

Por lo tanto podríamos resumirlo en que aquí la clave es construer la aplicación usando tecnologías web estandar como HTML (para definer texto estático e imagines), CSS (que define el estilo y la presentación) y JavaScript (nos servirá para establecer las interacciones y animación) que nos permiten que su apariencia y comportamiento sea cercano al de las aplicaciones nativas. Todos los frameworks que utilizan este modelo se basan en librerías javascript, que combinadas con HTML 5 y CSS 3 renderizan la aplicación web móvil en cualquier dispositivo, y esto es possible a las posibilidades que nos ofrece HTML 5  y CSS 3, que incluyen bases de datos SQL, almacenamiento local, animaciones, video, ejecución offline…

Esta arquitectura es muy interesante cuando buscamos algo barato y que cubra un rango muy grande de plataformas con cambios mínimos. 

miércoles, 14 de noviembre de 2012

Arquitecturas para desarrollo móvil - Modelo Nativo


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.

Como si fuera una aplicación de escritorio, las aplicaciones nativas se construyen pensando en un único sistema operativo o incluso un único dispositivo. La idea de este enfoque es aprovechar todo el potencial que nos da el entorno para acceder a las características propias del dispositivo móvil y poder así llegar a sacar el máximo potencial en cuanto a rendiemiento y posibilidades que un móvil nos ofrece.


Arquitectura del modelo nativo

La arquitectura se basa en que en el dispositivo implementaremos toda su interfaz, acceso a funcionalidades de la plataforma (cámara y demás) y lógica (al menos la que necesite ser accedida de modo offline). Si existe cierta información que no necesite ser accedidad de modo constante y offline, sino que basta con recuperarla cada vez que haya una conexión disponible, se podría implementar una aplicación web o servicio web que implementase parte de la lógica y recuperación de información.

En este enfoque, la misma funcionalidad (offline y UI) debe ser implementada desde cero para cada plataforma, ya que cada una de ellas usa su propio lenguaje de programación, por lo que no tenemos la opción de compartir implementaciones de funcionlidad común.  Esto puede hacer que pensemos en desechar esta alternativa inmediatamente, pero para algunos escenarios, donde el rendiemiento y la experiencia de usuario cobran especial relevancia, las aplicaciones nativas son necesarias.

Entornos de trabajo para el desarrollo de aplicaciones nativas
Tanto Android como iOS o Windows Phone proveen todos los mecanismos necesarios para crear este tipo de aplicaciones, ya sea un IDE, emuladores o un app store donde ponerla a la venta.

En resumen, puede ser interesante en aplicaciones donde hay un alto nivel gráfico y de procesamiento de imágenes, se requiere geo localización audio o video en tiempo real, se busca la realidad aumentada, integridad transaccional con datos offline del teléfono…

Instagram para iOS o Mint.com son ejemplos de este enfoque.

domingo, 11 de noviembre de 2012

Consideraciones previas en una arquitectura para móviles


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.


A la hora de elegir una arquitectura de desarrollo para móvil es necesario tener en cuenta una serie de aspectos, como son: conectividad, almacenamiento, limitaciones del procesador, estándares, opciones de despliegue, usuarios potenciales… sin olvidar otros típicos como escalabilidad, mantenibilidad o extensibilidad. Todos estos factores servirán como punto de partida a la hora de tomar una decisión arquitectónica.



A continuación se comentan los aspectos más relevantes.

Conectividad


Aplicaciones móviles son por defeinición, móviles, es decir, el usuario no está conectado a un punto de red fijo, sino que mientras se mueve va cambiando y puede que en ciertos momentos se encuentre con una conexión nula o inexistente.

A pesar de que las tecnologías inalambricas han evolucionado mucho en los últimos años, no se puede esperar que un usuario móvil vaya a estar “siempre conectado”, como mucho se puede esperar que este “casi siempre conectado”.

 Acceso al dispositivo.


Con esto nos referimos al echo de poder acceder desde nuestra aplicación a funciones propias del smartphone o dispositivo, como son el GPS, acelerometro, agenda, camara y demás.

Algunas arquitecturas permitirán acceder a todas estas opciones, mientras que otras solo permiten acceder a algunas o incluso a ninguna. Por eso es importante tener siempre en mente como de importante es para nosotros y para nuestra aplicación el acceso al dispositivo y a sus funciones.

Usabilidad


A la hora de diseñar el interfaz de una aplicación para móvil, tenemos que ser mucho más cuidadosos, si cabe, que cuando lo hacemos para una aplicación de escritorio o web, ya que  nos encontramos ante pantallas de pequeño tamaño, multitáctiles, con métodos de entrada disitintos a los tradiciones y en definitiva, unas limitaciones y posibilidades que pueden llevar a nuestra aplicación al fracaso o al exito

Rendimiento


Un aspecto muy a tener en cuenta es como de importante es para nuestro objetivo el rendimiento que tenga la aplicación. Está claro que si queremos desarrollar un juego de coches, el rendimiento es muy importante y por tanto seguramente deberemos pensar en aquellar arquitecturas que permiten sacar el máximo potencial de cada dispositivo.

 Seguridad


Las aplicaciones para móviles estan dejando de ser un simple entreteniemiento para convertirse en una parte importante de nuestro día a día, llegando a tener presencia en operaciones clave donde la seguridad es crucial, como emails, bancos o simples aplicaciones de compra y venta donde tenemos almacenados datos bancarios… Esto hace que en nuestra elección sea importante valorar hasta que punto sera necesaria una seguridad robusta con características como autenticación, encriptación o control de acceso.

domingo, 9 de septiembre de 2012

Plataformas Disponibles para Móviles - Windows Phone


Windows Phone es el nuevo, el último en llegar, el sucesor de Windows Mobile y el sustituto de Symbian, su nacimiento fue en Octubre de 2010 de la mano de Microsoft. El mercado lo ha aceptado con cautela, y su crecimiento ha sido lento, pero el reciente acuerdo con Nokia por el que pasará a ser el sistema operativo de sus móviles más avanzados, ha hecho que su popularidad haya aumentado considerablemente en los últimos meses, y algunos expertos ya le situán como un importante competidor a futuro para Android e iOS.

¿Pero que nos ofrece Windows Phone? Seguramente la interfaz más fácil de usar, antes denominado Metro y ahora Modern UI, se aleja en cierto modo de la propuesta de iOS y Androd. Con un buen diseño y mosaicos interactivos que sirven como widgets (pequeños programas) y como accesos directos, la interfaz Metro posee un aspecto eficaz e intuitivo, con grandes pantallas de desplazamiento horizontal. Una puesta diferente a la de sus comeptidores pero está teniendo muy buena aceptación.

Además está totalmente integrado con el paquete Office de Microsoft, lo cual puede ser algo muy a considerar en el mundo empresarial a la hora de mejorar la productividad de sus empleados
Con todo esto, los fabricantes están empezando a implantar este sistema operativo en sus dispositivos, en especial Nokia por el acuerdo que antes comentábamos. Microsoft da libertad en el diseño de los dispositivos, pero está decidido a mantener un estricto control sobre el cumplimiento de una serie de requisitos con la idea de asegurar la estabilidad y calidad y así evitar algunos de los problemas que nos podemos encontrar con Android.

Para el desarrollo sobre Windows phone contamos con toda la potencia de .Net en este campo, así podremos desarrollar usando el Visual Studio 2010, C# como lenguaje de programación y emuladores sobre Windows, seguramente la opción más sencilla de las tres.

Plataformas Disponibles para Móviles - Android

Google lanzó Android al Mercado en Octubre de 2008 bajo la premisa de la utilización de software libre. Desde entonces su crecimiento ha sido imparable hasta situarse como el más utilizado entre los grandes sistemas operativos para móviles.
Comparativa de funcionalidades entre plataformas (PCWorld)
Algunas características que han hecho triunfar a Android ha sido su alto grado de personalización, por medio de widgets en el escriotio (por ejemplo de tiempo, hora, rss…), el que esté presente en móviles de todo tipo de gamas, desde gama alta a gama baja, su integración con las herramientas google, o la amplia comunidad open source que tiene detrás.


Y está ultima característica es una ventaja también para los fabricantes, que gracias a la amplia flexibilidad de la licencia de Android, puedan hacer cambios en las versiones de android para adaptarlos a sus dispositivos, con lo que en la actualidad muy pocos dispositivos llevan la versión estándar del sistema operativo.

Android, al igual que iOS, no sólo esta pensado para smartphones, sino que también dispone de versión para Tablets y para televisión (Google TV).

Para el desarrollador, con Android todo es mucho más fácil. Primero tenemos el lenguaje Java para programar aplicaciones (qye Java es más fácil de aprender y programar que Objective-C -y que C en general- debido a su simplicidad es un hecho) y un SDK multiplataforma que funciona en Windows, Linux y Mac.

Si queremos un entorno de desarrollo, podemos usar, entre otras opciones, un plugin ADT para Eclipse que incluye un simulador, que también es multiplataforma, libre y gratuito. Todo esto sin pagar licencia alguna.

Un detalle a tener en cuenta es que este sistema sufre mas malware que iOS o Windows Phone.

Plataformas Disponibles para Móviles - iOS

Cuando nación el primer iPhone, allá por el 2007, su sistema operativo se denominaba “iPhoneOS”. Este no paso a ser llamado iOS hasta 2010, cuando fue incorporado al iPad, iPod Touch y la Apple Tv.
La principal característica de este sistema operativo desde su lanzamiento fue lo intuitivo de su interfaz, que permite que cualquier tipo de usuario sea capaz de realizar operaciones complejas con un par de toques en la pantalla.

A esto hay que sumarle que con el iOS apareció el concepto de apps, que tiene una importante comunidad de desarrolladores detrás, que ofrece una navegación por internet muy fluida, o detalles avanzados que han ido mejorando como el asistente personal (SIRI) que nos permite manejar nuestro terminal mediante la voz.
Características técnicas de cada plataforma
Sus detractores hablan de que, por medios legales, es difícil personalizarlo, que no soporta Flash, por lo que no podremos ver muchas de las páginas webs en internet, o que no permite la transferencia de archivos por bluetooth a otro terminal no Apple

Desde la visión de desarrollador, el lenguaje oficial para iOS es Objective-C, y con este lenguaje podemos crear aplicaciones para Iphone, Ipad y Ipod touch. Hay distintas versiones de iOS pero todas ellas se programan usando el mismo lenguaje, Objective-C, y la misma herramienta, Xcode, que es el entorno de desarrollo oficial de Apple. Con él, podemos crear aplicaciones de escritorio para Mac y para iOS. Aunque podemos compilar las aplicaciones “a mano”, es una tarea casi imposible y siempre se recomienda Xcode para, por lo menos, empaquetar y subir la aplicación al App Store.

El único “problema” que tiene Xcode es que solo existe para Mac, por lo que para crear aplicaciones iOS te hace falta un ordenador marca Apple (aunque se puede remediar con virtualización). Sobre el precio de Xcode, ahora es gratis pero hasta hace poco costaba 5€ en la App Store. No es caro y tampoco es un drama tener que comprarlo.

Requisito importante: para distribuir aplicaciones en el App Store y para poder probar las aplicaciones desarrolladas en nuestro propio Iphone/Ipad, es necesario adquirir una licencia de desarrollador que cuesta 79€ al año.

domingo, 26 de agosto de 2012

Situación Actual - La Guerra de las Apps

El 7 de Noviembre del 2008 Apple sacaba el Apple App Store para iPhone, un espacio donde poder ver y comprar todas las aplicaciones disponibles para su dispositivo estrella, el iPhone. Este era el inicio de la guerra de aplicaciones. Entonces otras compañías se pusieron manos a la obra, y primero Google, seguido por RIM, Nokia o Microsoft también sacaron sus propios App Store, cada uno con aplicaciones para sus dispositivos y sistemas operativos.

TimeLine del nacimiento de los App Stores
La realidad es que unos con más acierto u otros con menos, las aplicaciones se han convertido en un negocio estimado en billones de dólares. La gente es cada vez más dependiente de las aplicaciones móviles.  Y esto también ha llegado al mundo laboral. Tecnologías como internet y herramientas como las que esta gran red ofrece son cada vez más importantes en la vida de las empresas y los trabajadores de todo el mundo, hasta el punto de que hoy sea difícil concebir las rutinas y las tareas laborales sin el enorme abanico de posibilidades que estas tecnologías y herramientas ofrecen para hacer más fáciles, rápidos y eficientes los negocios y las comunicaciones.

Valor del mercado de aplicaciones para móviles
Y no se trata de tecnologías implementadas solo por grandes multinacionales, sino que, por el contrario, desde los más pequeños negocios han encontrado la forma de adaptarse a las alternativas más convenientes para ellos, de manera que puedan sacarles el mayor provecho y obtener excelentes resultados a partir de ellas.

Hoy en día es normal que en nuestra actividad diaria, ya sea laboral o personal, usemos aplicaciones, como la navegación por GPS (sistema de navegación por satélite) y las aplicaciones móviles de mapas. Las apps se esconden en la ropa, en los libros, el cine y las tarjetas de crédito. El mundo ya es multidispositivo. Se usan a cualquier hora, están por todas partes y, por si esto fuese poca garantía de éxito, su público potencial somos todos. A diferencia de los ordenadores, no hace falta estar alfabetizado tecnológicamente para utilizar las aplicaciones. “Siempre pienso en mi madre, que nunca usó el ordenador en casa y ahora es súper fan de las tabletas, donde pinta, guarda sus fotos, apunta recetas y nos manda mensajes”.

Las aplicaciones para móviles también constituyen un producto al alza para las compañías de este lado del charco. Y lo seguirán siendo, tal como anuncian las empresas multinacionales europeas, las cuales siguen dando prioridad a sus estrategias en el complejo campo de unos accesorios que, en definitiva, aportan un plus de calidad y atractivo al producto final.

Esto es lo que revela un nuevo estudio de IDC. En un comunicado de la consultora, se explica que el mercado de la plataforma de empresas de móviles y aplicaciones del oeste europeo podrá crecer una media que superará el 25 por ciento en los próximos cinco años.

Destacar que las preferencias de los usuarios difieren en función del país, del grupo, del trabajo, del nivel de ingresos.  Por esta razón, los publicistas han adoptado la estrategia de focalizar la publicidad, ajustarla más al perfil que se dirige. Sin embargo, a pesar de las diferencias de usuarios, los juegos siguen siendo, con mucho, las aplicaciones que más se usan en los móviles, seguidas por el segmento de las sociales y personalizadas.

En cuanto a los App Stores, hoy en día podríamos decir que la gran guerra es entre el Apple App Store y el Google Android Market. Entre los dos pronto llegarán al millón de aplicaciones. Aun así existe una alternativa que esta emergiendo con fuerza que es el Windows Phone MarketPlace.

Últimamente Apple está recibiendo críticas por las estrictas limitaciones que pone a los desarrolladores de iOS -fueron la queja más señalada por un 38% de los entrevistados en la Conferencia Mundial de Desarrolladores-. Mientras que un 11% mencionó como aspecto negativo el largo proceso de aprobación para las aplicaciones de Apple.  Además, un 40% de los encuestados tienen otras quejas, como por ejemplo, el entorno de desarrollo Xcode de Apple, que para algunos es “viejo y anticuado”.

Mientras tanto, el marketplace de Google gana adeptos día a día, ya sea en usuarios como en desarrollados. Y Windows Phone, con paso lento, pero seguro, y su ecosistema de aplicaciones siguen avanzando lentamente. En el mes de mayo se ha batido la cifra de 100.000 aplicaciones en el MarketPlace, una cifra modesta respecto a la competencia pero esperanzadora para quienes ven al sistema operativo de Microsoft como la tercera alternativa.

En cuanto a la rapidez, Windows Phone ha sido el segundo sistema operativo móvil más rápido en batir la cifra de los 100.000. Sólo superado por iOS que necesitó poco más de dieciséis meses para llegar a esta marca. Android por su parte tardó un poco más y Blackberry fue la que más tiempo necesitó.

No obstante, este tipo de datos siempre hay que cogerlos con cuidado. Es bueno que haya más aplicaciones, claro. Demuestra que los desarrolladores están interesados y que el ecosistema va creciendo. Sin embargo, la calidad también es importante y es un factor que no se puede medir de forma objetiva.
Microsoft y Nokia se han tomado en serio la creación de un ecosistema sólido, algo que no tenemos duda que están consiguiendo en número de aplicaciones en poco tiempo.

Por ejemplo Nokia continua con la estrategia de alimentar a los desarrolladores como paso necesario para crear ecosistema, en una nueva iniciativa han enviado 17.000 dispositivos a nuevos desarrolladores para que empiecen a trabajar con ellos.

Evolución del número de aplicaciones para Windows Phone 

También existe alguna alternativa al margen de los tres competidores por excelencia, y una de las que últimamente está pisando fuerte es el Amazon AppStore, que es una de las principales alternativas a Google Play para los usuarios de tablets y smartphones equipados con Android, diferenciandose de ésta mediante una mayor oferta económica en la adquisición de juegos y aplicaciones que también pueden encontrarse en el canal oficial de venta de los de Mountain View. Además, para más inri de éstos, Amazon Appstore permite a los usuarios “probar” las aplicaciones antes de proceder a su compra.