viernes, 3 de mayo de 2013

Aplicaciones Multiplataforma Móviles Con Phonegap



Actualmente, dada la importancia que han tomado los dispositivos móviles, también ha tomado importancia las diferentes herramientas de desarrollo para cada una de las plataformas,  pero surgen las siguientes preguntas:

¿Sobre cual plataforma debo desarrollar?, 
¿aplicaciones híbridas, o nativas?, 
¿qué plataforma es la más popular?

Aplicaciones nativas: básicamente son desarrolladas bajo un lenguaje propio soportado por el sistema operativo de la maquina, permite aprovechar al máximo los recursos del dispositivo. 

Dentro de las diferentes opciones tenemos:


Existen implementaciones de C# para android e IOS, que permiten crear aplicaciones nativas, Xamarin es uno de estos frameworks que permiten realizar dicha tarea, pero con un costo de licencia. 


http://xamarin.com/

Surgen entonces alternativas que  permiten realizar desarrollos para cada una de las diferentes plataformas, estas alternativas se denominan híbridas, ya que aunque son desarrollos compilados para cada una de las plataformas (nativos), la tecnología que usan no lo es.

Para aplicaciones transaccionales (formularios, animaciones simples, registros básicos) es una excelente opción usar aplicaciones híbridas, pero ¿qué debo conocer para realizar estos desarrollos?

Actualmente existe un proyecto bastante interesante llamado Cordova  el cual nos permite desarrollar aplicaciones para diferentes plataformas conociendo los siguientes estándares web:

HTML5: la nueva versión de HTML, permite, mediante un lenguaje específico (lenguaje de marcas), visualizar todo lo que vemos en los navegadores web actuales.

CSS3: hojas de estilo, van de la mano con los elementos que se crean en el HTML, están encargados de dar la forma y aspecto al HTML, en pocas palabras, le dan el “flow” (estilo)  a la web actual.

Javascript: es el lenguaje de programación, es interpretado, y usado en la programación web del lado del cliente (firefox, opera, chrome, IE ), aunque en la actualidad es tal la fuerza que ha tomado debido a su sencillez y versatilidad que existen implementaciones del lado del servidor (node.js, azure scripts, entre otros).

Con estas tres tecnologías es posible desarrollar aplicaciones multiplataforma híbridas, usando el mismo estándar en cada una. 

Como podemos ver en la imagen estas tres tecnologías son tomadas por el framework, Cordova es en nuestro caso el framework que permite convertir nuestro desarrollo en una aplicación híbrida. 

http://cordova.apache.org/


Cordova es un proyecto opensource de Apache que permite realizar la magia de convertir nuestra aplicación HTML 5 en una aplicación híbrida.

¿Y Phonegap que es?

Phonegap es la apuesta de Adobe para construir aplicaciones nativas en cada plataforma a través de un servicio, sí así es;  SaaS o software as a service.
Este servicio es de pago, y con subir mi aplicación HTML, este es capaz de generar mi aplicación para cada una de las plataformas (apk en android, xap en Windows phone, etc..)

Pero dado que no nos gusta pagar por estos servicios ¿cuál es la solución?

La solución es sencilla, si queremos desarrollar para las diferentes plataformas, el código se mantiene  pero la configuración del entorno (IDE) es diferente, solo tenemos que tener nuestros entornos configurados para, desde estos, generar nuestras aplicaciones para cada plataforma.
Mi recomendación: configurar los ambientes (Visual Studio o Mono Develop,  Eclipse y  si tienen Mac y pueden pagar por IOS, Xcode también), usar sublime text para Codear , y copiar y pegar el sitio web o carpeta www en cada IDE.

La estructura de un proyecto  en Phonegap o Cordova básicamente es la siguiente:


La carpeta WWW, contiene nuestro sitio web, es básicamente la que copiamos y pegamos a cada uno de nuestros entornos (Eclipse, Visual Studio, Xcode, etc.), no es necesario separar estilos, javascript y paginas pero siempre será buena práctica el orden.

Por medio del  javascript cordova.js, podemos acceder a los recursos del dispositivo (GPS, sensores, cámara, acelerómetro, etc), además de acceder al almacenamiento interno del dispositivo, y poder usar bases de datos locales como sqlite.

También tenemos todo el soporte ajax para hacer peticiones a servicios web rest tal como se hace normalmente desde el desarrollo web estándar, serializando y des-serializando objetos en formato json o XML.
Como pueden ver  es bastante sencillo en la actualidad desarrollar aplicaciones móviles, y  a menos que la aplicación necesite consumir muchos recursos de procesamiento (vídeo juegos y, animaciones complejas),  usar Phonegap es una excelente solución, más aún si uno de nuestros requerimientos es alcanzar diferentes plataformas.
Existen casos de éxito, aquí les dejo algunos directamente de la página de Phonegap

http://phonegap.com/app/feature/

Configuración de eclipse con Phonegap (se pueden ahorrar la configuración del ADT  si descargan el Eclipse del sitio web de Android)
http://clubnono.tumblr.com/post/17000678241/como-instalar-eclipse-para-android-phonegap

Configuración de Visual Studio: (en Visual Studio se debe generar la plantilla para el proyecto)
http://www.profoundlogic.com/docs/display/PUI/Setting+up+Phonegap+for+Microsoft+Visual+Studio
Si tienen dinero o un repositorio en Gitub
https://build.phonegap.com/people/sign_up
API o manual de referencia :
http://docs.phonegap.com/en/2.6.0/index.html



Con respecto a la plataforma  para tener en cuenta:

Android: una de las plataformas más usadas del mercado actualmente se pelea el primer lugar con IOS, además de ser más sencillo agregar aplicaciones al google play(las restricciones de desarrollo son menores comparadas con IOS, o Windows phone).

IOS: se pelea el reinado con android, pero requiere pago para desarrollar, tener en cuenta que además de esto, ellos tienen bastantes restricciones en cuanto a diseño, esto por respetar la filosofía y principio visual en IOS

Windows phone: actualmente viene en crecimiento, es el sistema operativo móvil más joven del mercado, va por encima de RIM (blackberry), al igual que IOS requiere pago y las restricciones son fuertes al momento de subir la aplicación

RIM: El sistema operativo de blackberry, ha tenido una caída en el mercado, y sigue cayendo, a no ser que sea un desarrollo especifico, el negocio para aplicaciones en RIM no se ve claro (no compren blackberry, el pin es full 80’s)

En resumen,  para cuando desarrollen Apps en las diferentes plataformas, las buenas prácticas permitirán que nuestra aplicación sea aceptada en cualquier tienda.

Diccionario del desarrollador:

Codear: Echar código, o codificar, del inglés coding.
Flow: Estilo, en este documento asociado a los estilos CSS3. 
Full 80's: Tecnología y prácticas  viejas o relegadas,  en el documento, el pin de Blackberry.



John Ubaque 
Ingeniero de Desarrollo 
SoftManagement S.A











No hay comentarios:

Publicar un comentario