Mobile Frameworks

Los dispositivos móviles han creado un mercado importante de software que nos trae numerosas oportunidades a todos los desarrolladores. Pero cubrir todas las plataformas con cada una de sus particularidades, como desarrollador independiente, es casi una misión imposible… a menos que leas esta nota. 🙂 En ella buscamos repasar un poco la historia de los dispositivos móviles, las tiendas de aplicaciones, las particularidades de las plataformas y los frameworks que pueden darnos una mano para llegar al estrellato con un único esfuerzo como desarrolladores.

Si bien los smartphones, handhelds y Pocket PC marcaron el terreno del concepto que todos conocemos como dispositivos móviles, poco más de una década atrás, podemos decir que el primer punto de inflexión en el mundo de los teléfonos inteligentes y tablets empezó oficialmente en el año 2007, con la llegada del iPhone, el primer teléfono inteligente que provocara una revolución en el mercado de los desarrolladores de aplicaciones.

iPhone no sólo fue el culpable del declive hacia un vacío incierto de Flash Player, sino también de que jugadores de las grandes ligas en el desarrollo de software participen de igual a igual contra un desarrollador de software independiente en un único Market de aplicaciones.

Pero, en realidad, podemos decir que los más sufridos de la escena fueron aquellos desarrolladores que apostaron de lleno, durante años, a la creación de aplicaciones web, ya que no fueron contemplados por un modelo de negocios como el que planteó Apple para iPhone, iPod y, más adelante, para iPad.

De izquierda a derecha: Apple Newton, la madre del iPad; Handheld Compaq C2010e, padre de las Netbooks; y Sony Ericsson p900, uno de los primeros smartphones. Equipos creados en 1987, 1998 y 2003, respectivamente.

Los otros jugadores

Luego del éxito trazado por la manzana mordida de Cupertino, llegó Android, Windows Phone 7, un Symbian más amigable y, recientemente, Blackberry 10, Windows Phone 8, y otros competidores más que se hacen apodar Firefox OS y Ubuntu Phone asomarán las narices de aquí a no más de un año.

Las compras sin bolsa ecológica

El tumulto de todos estos sistemas operativos móviles generó un nuevo mercado de aplicaciones, denominado por cada plataforma de una manera distinta: AppStore, Microsoft Marketplace, Google Play, Ovi Store, App Market, BB World, etc… y junto con cada una de estas plataformas, nació un mercado billonario que genera muchas ganancias año a año.

Si bien podemos afirmar que el mercado principal está dominado por iOS, Android, y un tercer puesto actualmente acaparado por Microsoft, pero que pelea de cerca con el nuevo Blackberry 10, todos sabemos bien que cada plataforma tiene sus particularidades, y que la innovación constante es difícil mantenerla, con lo cual en cuestión de tiempo todo puede cambiar sin previo aviso.

Las principales tiendas de aplicaciones móviles, tablets, y proveedores de música y películas en formato digital facturan unos cuantos miles de millones por año, quedándose sólo con el 30% promedio de ganancias por ventas.

UN PASADO MUY PRESENTE
Si nos remontamos a los inicios de Internet, sabemos que Netscape obtuvo siempre el primer puesto por sobre el navegador Mosaic, que fue su primer competencia directa. Luego, en un despliegue exorbitante de luces, fuegos artificiales y Marketing, llegó Internet Explorer, para quedarse con el 95% de la torta durante muchos pero muchos años. Tiempo después Mozilla apareció como browser, para luego transformarse en Firefox, y comenzar a dar batalla al monopólico Internet Explorer. Por último, aparece Chrome quien sacó ventaja del partido y pasó a quedarse con el primer puesto en navegadores web.
Esta pequeña contienda se libró sin cuartel durante la primera década del nuevo siglo, y demuestra claramente cómo la innovación puede no ser eterna. En el mercado del hardware móvil, debemos destacar que por casi quince años Nokia obtuvo una gran ventaja muy lejos por encima de cualquier competidor, pero que por no tener una conducta firme en cuanto a software refiere, la competencia marcó la diversidad como un punto débil, y atacó precisamente allí, donde menos lo esperaban.
Gracias al claro ejemplo de Apple, hoy podemos encontrar que la mayoría de las compañías mantiene la línea de teléfonos inteligentes con el mismo sistema operativo, sin estar saltando entre una plataforma, y otra, y otra…

Cor.to/libropostoapp es una WebApp que aprovecha los recursos disponibles en los móviles para enviar mensajes de correo electrónico, realizar llamados directos y utilizar la geolocalización mediante mapas de los locales de librerías de la Ciudad de Buenos Aires.

Los RockStar del momento

Como desarrolladores de aplicaciones de escritorio y móviles, podemos ser excelentes programadores en más de un lenguaje, pero llegar a entender las particularidades de cada plataforma, manejar a la perfección los lenguajes nativos, propios de cada una de estas, y poder programar en tiempo récord una misma aplicación en el lenguaje nativo de cada sistema operativo móvil, es una verdadera misión imposible.

Pero tal como hablamos en la reseña, no podemos decidir casarnos con una sola plataforma, porque el timón puede ser aprovechado por cualquiera de las otras, quienes pueden tomar la delantera de la noche a la mañana. Para ello debemos recurrir a herramientas que permitan volvernos productivos, y poder escribir un solo código que pueda ser distribuido en todas las plataformas posibles.

Existe hoy una plataforma que nos permite llegar a los principales sistemas operativos móviles con un único esfuerzo, y respetando todos aquellos lenguajes que aprendimos en nuestras épocas de desarrolladores web. Su nombre es: PhoneGAP.

One ring to rule them all

Si bien este subtítulo es algo exagerado, creo que es el que mejor destaca la labor de PhoneGAP respecto al desarrollo de aplicaciones móviles: PhoneGAP es una librería creada en JavaScript, la cual agrupa mediante un conjunto de objetos las principales interacciones con el hardware de los teléfonos móviles y, mediante una codificación a realizar en JavaScript, invocando sus funciones, permite crear rápidas aplicaciones combinando HTML, CSS y JavaScript.

Como resultado, una simple aplicación web creada con los lenguajes estrella de la gran red de redes, se compilará mediante PhoneGAP al código comprensible por el hardware de cada teléfono celular inteligente y de cada Tablet.

El proceso invocado por PhoneGAP consiste en crear o utilizar la tecnología de desarrollo web, relacionada con un JavaScript específico que entiende el hardware de los teléfonos, para lograr fáciles y rápidas aplicaciones móviles.

Y también acepta compañía

PhoneGAP no busca toda la gloria para sí mismo, y tampoco está preparado para resolver las cuestiones de hardware de cada dispositivo, con lo cual, si pensamos en cómo diseñar la interfaz principal de cualquier aplicación móvil, podemos elegir entre las diversas herramientas existentes que se acoplan como librerías a cualquier sitio web, y que nos permitirán desarrollar rápidas aplicaciones web que, al integrarlas con la librería de PhoneGAP, podremos transformarlas en aplicaciones instalables en los teléfonos celulares y tablets.

Entre ellas podemos encontrar las más comunes, como ser:
● Jquery Mobile
● Sencha Touch
● Jquery UI

Mediante estas herramientas podremos ocuparnos de un diseño cuasi RAD (Rapid Application Development), al mejor estilo de los IDEs visuales que congregan las plataformas de escritorio y web.

Ventajas y desventajas de las aplicaciones híbridas

PhoneGAP nos permite acelerar y enmarcar el desarrollo móvil, desde una sola herramienta; también nos permite aplicar nuestros conocimientos Web recopilados en la última década, y nos ahorra tiempo y recursos valuables, al no tener que ponernos nuevamente a aprender uno, dos o tres lenguajes de programación nuevos.

Igualmente, debemos destacar que en el mundo móvil existen tres tipos de aplicaciones instalables, que pueden desarrollarse mediante la diversidad de tecnologías que tenemos a nuestro alcance: aplicaciones web, aplicaciones híbridas y aplicaciones nativas.

Aplicaciones Web (webApps)
Las aplicaciones web no son más que simples sitios web, que cumplen un objetivo específico, tal como podemos ver hoy en día en el Chrome Web Store. Son aplicaciones con fines específicos que se instalan en nuestra máquina de forma local, y nos ayudan a realizar una tarea.

Este tipo de aplicaciones requiere de una conexión a internet, al menos para ejecutarse por primera vez, y se limita mucho el acceso al hardware del equipo. No se instalan de forma local (o al menos no se instalan mediante un Store oficial), y encuentran algunas limitaciones entre una y otra plataforma.

Mark Zuckerberg declaró a mediados de 2012 que migraban Facebook móvil hacia aplicaciones nativas, porque las híbridas les daban muchos dolores de cabeza. Sencha Touch demostró mediante el sitio http://fb.html5isready.com/ que HTML5 es igual o más seguro que las aplicaciones 100% nativas.

Aplicaciones nativas
Las aplicaciones nativas son las que se desarrollan mediante los lenguajes de programación e IDEs oficiales de cada una de las compañías móviles, como ser Objective C para la plataforma iOS, Java para la plataforma Android, Visual Basic o C# para la plataforma Windows Phone, Cascades C++ para BlackBerry, etc. Con el tiempo fueron naciendo alternativas que nos permitieron elegir otros lenguajes para desarrollar y compilar a nativo para determinadas plataformas. Blackberry, por ejemplo, tiene su opción de SDK basado en Java, y Adobe Air nos permite también desarrollar aplicaciones cuasi nativas para Android, Blackberry, Bada, Symbian y otras plataformas más.

Aplicaciones híbridas
En esta última categoría es donde entra de lleno el objetivo de PhoneGAP. Esta librería nos permite acceder a la mayoría de recursos de hardware de cada plataforma, desde un único código, y desarrollar su cáscara principal (entorno gráfico más widgets) mediante el lenguaje HTML y CSS.

Al compilarse PhoneGAP, empaqueta todo como si fuera una aplicación nativa de cada plataforma, pero la ejecución del programa levanta un objeto WebView, que no es más que una instancia del navegador web propio de cada sistema operativo móvil, y en él se ejecuta nuestra “web empaquetada”, simulando ser una aplicación nativa del dispositivo móvil.

Jquery Mobile es un gran complemento que parte entre CSS y JavaScript, un IDE perfecto para mantener la estructura de una aplicación o web Móvil, para que en todas las plataformas luzca igual.

Cada una de estas opciones dispone de ventajas y desventajas, y en la mayoría de los casos, si queremos ser desarrolladores de los Application Stores oficiales, debemos inclinarnos por las dos últimas.
PhoneGAP pone como ventaja la posibilidad de desarrollar aplicaciones para iOS, entre otras, sin la necesidad de contar con una Mac. Vale destacar que la mayoría de los IDEs y lenguajes de programación oficiales de todas las plataformas aquí mencionadas, dispone de una versión para Mac, otra para Windows, y eventualmente para Linux, pero Objective C y Cocoa sólo están disponibles para instalarse y ejecutarse en OS X.

Un marco de trabajo perfecto

Hasta aquí repasamos las principales herramientas que encontramos en la nube para desarrollar aplicaciones móviles. Pero no nos podemos olvidar que un gran lenguaje conlleva a contar con un gran IDE, con lo cual nos queda repasar los Frameworks principales, que nos pueden ayudar al pie de la letra a desarrollar aplicaciones aplicando la tecnología y versatilidad que nos da PhoneGAP.

Una vez planificada la aplicación móvil que queremos desarrollar, y recolectadas las librerías necesarias, sólo nos queda ocuparnos de un buen framework que nos ayude a administrar el proyecto, y organizar los archivos y librerías necesarias.

Veamos a continuación las opciones de Frameworks que disponemos en el mercado.

Dreamweaver
La plataforma de diseño y desarrollo web, comandada por Adobe y que forma parte de los paquetes Adobe Creative Studio, pegó un vuelco desde su versión CS 5.5, integrando a PhoneGAP como un complemento de la plataforma.

Dreamweaver se transformó en un diseñador de sitios web, desktop y mobile, muy intuitivo, con soporte a una diversidad importante de lenguajes, y con vistas en vivo del trabajo que llevamos desarrollando, los cuales nos indican “On The Fly” si lo que estamos realizando está bien o requiere de modificaciones.

PhoneGAP se integró de forma automática con Dreamweaver, y también los emuladores o simuladores de las plataformas principales. Para la versión Windows de Dreamweaver disponemos de la posibilidad de integrarle el emulador de Android, que viene en el paquete Android SDK.

Para su versión OS-X, Dreamweaver nos permite utilizar como plus el simulador de iPhone/iPad que tiene OS-X como complemento del IDE Cocoa.

A partir de la versión CS 6.0, Dreamweaver integró de lleno PhoneGAP a su plataforma de diseño, con lo cual podemos conectarnos a la red PhoneGAP Build con nuestro usuario y contraseña, y compilar nuestra App a una o varias plataformas móviles, con sólo presionar un botón.

Dreamweaver, a partir de su versión CS 5.5, integró a PhoneGAP, quien también es parte de Adobe, dentro del desarrollo de aplicaciones móviles. También, gracias a su vista en vivo, podemos codificar HTML5 y probar inmediatamente cómo está quedando nuestra App.

Como resultado de ello, obtendremos los links con cada una de las compilaciones realizadas para cada plataforma móvil que elegimos compilar.

La última versión de Adobe Creative Suite cambió su nombre por Adobe Creative Cloud, integrando en sí mismo una opción por suscripción mensual al servicio de Adobe Cloud, donde disponemos de 20 GB al mes para almacenar nuestros proyectos, y utilizar servidores web disponibles para Testing de las aplicaciones.
Cualquiera de estas últimas dos versiones de Dreamweaver nos permitirán desarrollar aplicaciones móviles híbridas, con la tecnología PhoneGAP, con muy poco esfuerzo y un entorno integrado de desarrollo, como sólo Adobe nos sabe brindar.

Debemos destacar que PhoneGAP nació allá por 2009, como un proyecto independiente y bajo la licencia BSD, de la mano de la empresa Nitobi. En el año 2011 Adobe adquirió PhoneGAP, junto con su equipo de desarrollo original, para que forme parte de Creative Suite. Su equipo de desarrollo pidió que PhoneGAP no sea licenciado, y que pueda seguir usándose de forma gratuita, o paga, a través del servicio PhoneGAP Build.

Adobe Dreamweaver se puede obtener en conjunto con el paquete Creative Cloud o Creative Suite 6, y también de forma individual. La web para su descarga es www.adobe.com. Dreamweaver es una aplicación propietaria con lo cual tiene un costo de algunos cientos de dólares. Igualmente si deseamos testearla podemos descargarla y utilizarla sin necesidad de compra durante 30 días.

Eclipse
Eclipse es un IDE desarrollado bajo los estándares Open Source, que nos permite desarrollar cualquier tipo de aplicación. Su uso es gratuito, y mediante plugins se puede integrar al desarrollo de software, plugins, o sitios web para cualquier plataforma existente.

Eclipse soporta como base el lenguaje Java y C++, y a través de distintos Plugins podemos incorporar soporte para HTML, CSS, JavaScript, PHP, ASP y otros tantos lenguajes más. Existe actualmente una gran diversidad de IDEs para distintas plataformas, que toman como base el código fuente de Eclipse, dado que éste ya dispone de toda la lógica que nos permite desarrollar en diversas plataformas.

Eclipse dispone de muchas versiones, y cuenta con un Plugin para integrar PhoneGAP en sus entrañas, lo cual nos permitirá desarrollar aplicaciones híbridas y compilarlas desde el mismo entorno. Para descargar Eclipse para trabajar con PhoneGAP, debemos hacerlo desde el siguiente Link: www.eclipse.org/downloads. Ingresado a su web oficial, debemos seleccionar la versión Eclipse Classic. Descargado el link, debemos crear una carpeta llamada, por ejemplo, Eclipse en el raíz de nuestra máquina y descomprimir allí el contenido del archivo descargado.

Una vez instalado Eclipse, nos queda instalar el Plugin ADT de PhoneGAP, y algún complemento emulador para Testing. Si estamos en Windows, podemos instalar el Android SDK solamente. Si estamos en OS-X podremos instalar el Android SDK y conectarnos al Simulador de iOS, el cual ya debe estar instalado en la computadora Apple junto con XCode.

Para Instalar Android SDK, debemos descargarlo desde el siguiente link: http://developer.android.com/sdk/index.html.

Para la instalación de ADT Plugin, que nos permitirá utilizar PhoneGAP desde el framework Eclipse Classic, debemos instalarlo como complemento desde Eclipse / Complements / Install New Software: Luego agregar la siguiente URL: http://dl-ssl.google.com/android/eclipse/

Y por último, nos queda descargar PhoneGAP desde su sitio oficial: www.phonegap.com/download. Al momento de escribir esta nota, PhoneGAP se encontraba en su versión 2.7 Stable.

Eclipse dispone de un asistente para crear nuevas aplicaciones PhoneGAP compatible, donde podremos especificar qué versión de la herramienta deseamos utilizar.

Hasta aquí repasamos las dos principales herramientas para desarrollo mediante PhoneGAP, que actualmente utilizan los programadores indie y las pequeñas empresas que incursionan en el mundo móvil.

Alternativas Corporativas

Por otro lado, existen más herramientas que nos permiten incursionar en el ambiente adecuado, orientadas especialmente al ámbito corporativo, que nos ayudarán a desarrollar desde un único punto para casi todas las plataformas móviles.

Entre ellas podemos encontrar a Kony One y RhoElements (código propietario y código abierto respectivamente).

Kony One
Esta herramienta es un Framework que permite acelerar el desarrollo de soluciones móviles orientadas al ámbito empresarial. Kony One en sí, es un plugin para Eclipse, mediante el cual podemos generar distintos paquetes de compilación cruzada, desde un único código fuente.

Esta herramienta permite desarrollar aplicaciones, combinando HTML5, CSS y JavaScript, como así también codificar las mismas con el lenguaje Java.

Kony One permite crear aplicaciones nativas para Android, Blackberry 5, 6, 7 y BB10 y iOS. Si nos interesa probar esta plataforma, podemos descargar Eclipse Full, desde la web www.eclipse.org/downloads, y luego instalar el complemento Kony One, accesible desde la URL: http://www.kony.com/products

RhoElements
Por otro lado, RhoElements, una solución propia de Motorola, ofrece un Framework / IDE completo que permite programar aplicaciones nativas, sin ninguna intervención directa de HTML5, CSS y JavaScript. Al igual que Kony One, permite compilar a varias plataformas móviles, entre las cuales encontramos a: Windows Embedded Handheld, Windows CE, Windows Phone 7, iOS, Android y Blackberry 5, 6, 7.

RhoElements es parte de la suite RhoMobile y posee una fuerte orientación hacia el manejo de datos remotos, mediante la utilización de servicios web de Cloud Computing.

Para descargar RhoElements, pueden hacerlo desde su sitio web oficial: www.motorolasolutions.com/

El mundo móvil

Hasta aquí hemos conocido las suites multiplataforma que más se ajustan a las principales necesidades de programación para dispositivos móviles. Entre las diversas opciones podemos encontrar también a NetBeans quien también comparte módulos para desarrollo móvil, pero decidimos dejarlo de lado, ya que en varios foros se habló de un alto consumo de memoria y recursos que Netbeans genera en los equipos. Esto sumado al alto consumo de memoria de los simuladores y/o emuladores, provoca reiterados cuelgues en la plataforma, por más memoria que se disponga en la misma.

Los desarrollos realizados con Netbeans suelen ser compilados y luego testeados directamente en los equipos, aunque esto conlleva un trabajo más arduo de realizar.

En las próximas entregas seguiremos viendo más herramientas, complementos y librerías, que nos permitirán desplegar, en un tiempo récord, el desarrollo de aplicaciones multiplataforma.