El desarrollo multiplataforma

foto 1Hoy tengo el placer y la oportunidad de escribir mi primer post, el primero de muchos espero, como bloguero de Sogeti. El tema que he escogido para iniciar mi camino en esta comunidad es: el desarrollo multiplataforma para dispositivos móviles.

En los últimos años hemos visto como los smartphones y las tablets, gracias a las facilidades que nos ofrecen a través de sus múltiples aplicaciones y funciones, han pasado a formar parte inseparable de nuestro día a día. Es por este motivo que las empresas, dentro de sus estrategias de negocio y marketing, siempre tendrán un pensamiento en: ¿y si hacemos una aplicación móvil?

Actualmente existen tres grandes sistemas operativos móviles: Android, iOS y Windows (Windows Phone & WinRT). La existencia de estos implica que las empresas deban plantearse desarrollar la misma aplicación para el máximo de sistemas operativos con la finalizad de llegar al máximo público posible, o con el fin de dar servicios a todos los empleados de estas, si no tienen definido un SO corporativo. En este punto es cuando nace el concepto Cross-Platform.

Cuando decimos que una aplicación es Cross-Platform-, queremos decir que puede ejecutarse en, diversas plataformas, es decir, una aplicación podría funcionar tanto en Android, en iOS,  Windows Phone  o WinRT, sin la necesidad de haber realizado un desarrollo específico para cada plataforma. Desde un punto de vista empresarial, el desarrollo Cross-Platform es un concepto muy interesante ya que amplía el alcance de las aplicaciones y reduce el time to market.

Hay dos tipos de desarrollo Cross-Platform: el desarrollo que genera código nativo y es ejecutado por el terminal como si de una aplicación nativa se tratara; o bien el desarrollo que no genera código nativo y es ejecutado e interpretado por un navegador web dentro de la aplicación.

A continuación me gustaría detallar una herramienta para cada uno de estos tipos:

foto 2Apache Cordova / PhoneGap: se trata de un framework libre y gratuito que nos permite crear aplicaciones móviles utilizando lenguajes de programación web (HTML, JavaScript y CSS), en vez de los lenguajes nativos de cada plataforma. No incluye componentes visuales que faciliten el desarrollo de una interfaz de usuario comparable a la nativa, aunque se podría introducir algún framework (Ratchet, Ionic…) que nos ofreciera un look & feel nativo, pero ofrece una API para la integración de la aplicación con los elementos de cada dispositivo  (GPS, Acelerómetro, Cámara…).

Básicamente se trata de una aplicación web encapsulada en un paquete nativo que nos permite acceder, mediante JavaScript, a los componentes del teléfono.

El desarrollo se puede realizar utilizando diversos IDE’s como NetBeans o Eclipse pero actualmente existe una integración con Visual Studio.

El resultado final es una aplicación que se instala igual que una creada de forma nativa y que podrá formar parte de las diferentes stores de cada plataforma.

Soporta total o parcialmente iOS, Android, Blackberry, Windows Phone, WinRT, Palm WebOS, Bada, Symbian y FirefoxOS.

foto 3Xamarin: se trata de una solución de pago que nos permite crear aplicaciones móviles utilizando C# pero manteniendo el desarrollo nativo de la interfaz de usuario (UI). Nos ofrece acceso a todos los componentes del móvil (GPS, acelerómetro, cámara…), permite compartir toda la lógica de la aplicación entre las diferentes plataformas, lo que ahorra mucho tiempo de desarrollo, y nos ofrece la capacidad de combinar ese desarrollo con interfaces de usuario nativas para cada plataforma mejorando la experiencia de usuario.

La curva de aprendizaje es más pronunciada, los desarrolladores deberán conocer C# / .NET y un poco del lenguaje de cada plataforma para poder afrontar el desarrollo de las interfaces de usuario.

De todos modos, Xamarin nos ofrece Xamarin.Forms que es una API que nos da la capacidad de desarrollar la interfaz de usuario de forma nativa para todas las plataformas utilizando C# y XAML, gracias a diversos controles creados por Xamarin. Al final, casi todo el código es reutilizable para todas las plataformas.

Destacar que Xamarin ofrece su propio IDE para el desarrollo de las aplicaciones, pero también se puede integrar con Visual Studio.

Al desplegar la aplicación se genera código 100% nativo, es decir, no tenemos una aplicación web encapsulada en un paquete nativo si no que generamos una aplicación nativa completamente. Soporta iOS, Android, Windows Phone y WinRT.

Hay muchas más herramientas que nos permiten realizar desarrollos multiplataforma (Appcelerator / Titanium, RhoMobile, Sencha, Corona, Qt…) pero he querido centrarme en estas dos porque, personalmente y bajo mi criterio, creo que son las más interesantes de cada grupo.

foto 4Por otro lado y siguiendo con el desarrollo Cross-Platform nos queda la opción de realizar aplicaciones web, las de toda la vida, adaptadas para dispositivos móviles. El lenguaje HTML ha debido adaptarse a la era de los dispositivos móviles y combinado con frameworks como jQuery Mobile, Mobile Angular UI, Sencha Touch, Kendo UI, Bootstrap, entre otros, nos permiten desarrollar aplicaciones web que se adapten a todos los dispositivos (diseño responsive). Estas aplicaciones no se podrán consumir a través de ninguna store, no podrán instalarse en el dispositivo y no podrán acceder a los componentes del terminal (GPS, acelerómetro, cámara…), pero sí que serán multiplataforma y se podrá acceder a ellas desde cualquier dispositivo con un navegador web.

Finalmente y ya para acabar, destacar que cada aplicación es única y serán sus características las que determinaran que tipo de tecnología es más adecuada para su desarrollo. Por lo tanto, y a nivel personal, creo que no hay una tecnología “mejor” ni “peor” que otra simplemente una de ellas se adaptará mejor a los requisitos de nuestra aplicación o de nuestro equipo de desarrolladores.

Descubre aquí como SOGETI puede ayudarte en el desarrollo de apps y estrategia de movilidad empresarial.

Marçal Montserrat

Software Engineer and Team Lead | Soluciones Microsoft | SOGETI ESPAÑA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s