En el sector de las aplicaciones para dispositivos móviles, los desarrollos nativos siguen siendo la mejor opción tanto en rendimiento como en UX (experiencia de usuario), sin embargo, presenta la necesidad de desarrollar soluciones distintas para cada plataforma móvil.
El auge del sector y la necesidad por parte de los clientes de tener presencia en el mayor abanico posible de dispositivos, sin perder de vista el objetivo de reducir el time to market, hacen que cada vez se demanden más soluciones cross-platform.
Una primera opción, especialmente para aquellas empresas que ya disponen de un servicio en entorno web y que quieren dar el salto a los dispositivos móviles, es adaptar su aplicación web con un diseño responsive, el cual se adapte a las distintas resoluciones de dispositivos móviles y a su interfaz táctil. No obstante, a veces, esta solución no es suficiente porque muchos clientes quieren una aplicación que pueda estar en los rankings de las stores de cada plataforma y así ganar visibilidad.
Todos estos factores hacen que el desarrollo de aplicaciones híbridas se esté imponiendo como una gran alternativa a las opciones anteriores.
¿Cuál es la mejor alternativa en cada caso?
Como no podía ser de otra forma, depende de las características de la aplicación que se quiere desarrollar. Son muchos los factores que influyen en la respuesta para cada caso específico:
-
Un alto nivel de procesado de datos y uso intensivo de memoria, así como un óptimo ajuste de la UX a los standards de cada plataforma son factores que siguen favoreciendo el desarrollo nativo como solución adoptada.
-
La integración del hardware de los dispositivos móviles en la aplicación es limitada en soluciones no nativas, por lo que será necesario tener en cuenta las necesidades de la aplicación en este ámbito, para tomar una decisión
-
La reducción del tiempo de desarrollo cuando se quiere tener presencia en más de una plataforma y, por tanto, la reducción también del time to market es el principal punto fuerte de las soluciones web y las híbridas.
-
Las soluciones web se imponen en cuanto a velocidad de despliegue, ya que no necesitan pasar por los procesos de validación para entrar en las stores oficiales de cada plataforma, pero también debe tenerse en cuenta la confianza que puede producir en el cliente final el hecho de haber superado estas validaciones.
-
Las distintas plataformas en las que se quiere tener presencia es también un factor a tener en cuenta ya que no todas las herramientas de desarrollo cross-platform soportan todas las plataformas. Sin embargo, cuanto mayor número de plataformas se quiera abarcar, mayor sería el beneficio, a nivel de desarrollo, ofrecido por una solución cross-platform.
Son muchos los frameworks que existen para el desarrollo de soluciones híbridas, y se pueden observar en ellos dos tendencias.
Frameworks para desarrollo pseudo-nativo
Estos frameworks optan por un desarrollo único en una cierta tecnología y, a partir de ese código base, generan soluciones pseudo-nativas para las distintas plataformas soportadas.
En este grupo podemos destacar:
- Appcelerator titanium
Se trata de un framework open source para el desarrollo de un único código base con Javascript y HTML, que es ejecutado en el intérprete Javascript de cada plataforma, generando para cada una los componentes nativos adecuados, y dando acceso a hardware y funcionalidades de SO subyacente, como el acelerómetro, cámara, contactos, calendario, geolocalización.
Las plataformas soportadas son iOS, Android, Blackberry y Tizen y, aunque a principios del año pasado se anunciaba la pronta incorporación de Windows Mobile al listado, a día de hoy esta incorporación aún no es un hecho.
En el caso de Xamarin, se trata de una solución de pago y la tecnología base seleccionada para el desarrollo es C#. Su SDK es una abstracción de las librerías nativas, por lo que al desplegar la aplicación en una plataforma concreta, se genera código 100% nativo. No obstante, no todo el código de la aplicación desarrollada puede ser compartido para todas las plataformas, la interfaz de usuario debe ser específica para cada plataforma.
En este caso, las plataformas soportadas son iOS, Android y Windows Mobile.
Frameworks para desarrollo web
Atacan el problema con el desarrollo de una aplicación web (HTML + CSS + Javascript), que es encapsulada en un contenedor nativo para su despliegue en cada plataforma.
En este grupo podemos destacar:
Es un framework HTML5, basado en Ext.JS, que ofrece una implementación del patrón MVC y pone a disposición del desarrollador un gran abanico de widgets o componentes visuales optimizados para ofrecer una experiencia de usuario adaptada a cada plataforma mobile. La integración con los dispositivos móviles incluyen también animaciones y el uso de sensores como el acelerómetro, la cámara y el GPS.
Existen distintos tipos de licencia, algunos de ellos gratuitos, dependiendo de la tipología de proyecto a desarrollar.
Aunque inicialmente este framework estaba limitado a su uso exclusivo en navegadores WebKit, la versión actual permite también su uso en plataformas Windows 8.
Como complemento a la librería de desarrollo, la aplicación Sencha Cmd ofrece la posibilidad de generar el esqueleto de nuestra aplicación, así como construir builds de la misma para su distribución en los distintos canales, sin depender de herramientas de terceros.
- Phonegap / Cordova
Phonegap es un framework de desarrollo mobile web basado en el proyecto open source cordova. No incluye componentes visuales que faciliten el desarrollo de la interfaz de usuario para obtener una UX comparable a las aplicaciones nativas, lo que ofrece es una API para la integración de la aplicación con los elementos de software y hardware de cada dispositivo, así como el encapsulado de la aplicación web para su distribución en las stores de cada plataforma.
Aunque el nivel de integración en cada plataforma es distinto, soporta total o parcialmente iOS, Android, Blackberry, Blackberry 10, Windows Phone 7 / 8, Tizen, WebOS y Symbian.
Una herramienta interesante que ofrece Phonegap es Phonegap Build, un servicio remoto que permite la compilación de la aplicación para las distintas plataformas, sin necesidad de configurar en local el entorno de desarrollo de cada una de ellas. Es un framework open source para el desarrollo de aplicaciones web, pero para el encapsulado de la aplicación web, debe ser usado conjuntamente con una herramienta como Phonegap. Es desarrollado por Google, ideado para superar la limitación que supone que HTML sea un lenguaje pensado para presentación de contenido estático, y no para el desarrollo de aplicaciones. Extiende el lenguaje HTML mediante tags y atributos custom y está focalizado a minimizar el código JS necesario para dinamizar el contenido, minimizando así también la probabilidad de errores en el código.- jQuery mobile
Al igual que AngularJS, no ofrece una solución completa para el desarrollo de aplicaciones híbridas, ya que el encapsulado de la aplicación debe hacerse con soluciones de terceros. Se trata de un framework de desarrollo web creado sobre jQuery y optimizado para una UX touch. Ofrece un fácil desarrollo de transiciones entre páginas, gestión de eventos touch y widgets optimizados para dispositivos móviles.
Soporta las plataformas iOS, Android, Symbian, Blackberry t Windows Phone 7 / 8.El desarrollo de aplicaciones cross-platform está actualmente en auge, y como hemos mostrado son muchas las opciones, muchas más que las presentadas, y muchos los factores a tener en cuenta para decantarse por una u otra. Esperamos que estas líneas puedan ayudaros en vuestra toma de decisión.
Autor: Xavier Santana
]]>
Hola!
Soy desarrollador y he realizado apps nativas y también híbridas en la empresa en la que trabajo. Para mi, sinceramente, un desarrollo nativo no tiene nada que ver con uno híbrido, cosa que, es una buena solución dependiendo de las características de la app que hay que desarrollar.
Yo hago una pequeña «selección»: si la app es consumo de datos y mostrado de ellos (listado, detalle, favoritos, etc.) sin interactuación con el hardware del dispositivo (GPS, bluetooth, BD, etc.), con una interfaz «normal» en cuanto a UX y navegación, es una candidata a desarrollo híbrido, mientras que una app más «compleja» sería óptimo desarrollarla en nativo.
Hay otra alternativa que sería encapsular código html y javascript dentro de la app y hacer que interactue con la carcasa nativa, de ese modo podemos tener menú o elementos complejos en nativo y usar html para las pantallas «simples», que serán las que comparten las plataformas y lo complicado que cada una la resuelva de la mejor manera.
Lo que más rabia me da es cuando dicen «soy desarrollador móvil» y lo que hace es desarrollar cross-platform como decís. Para mí, ese perfil es «adaptador de web a móvil». OJO! que un desarrollador móvil puede echar mano de este tipo de tecnología, no lo estoy excluyendo o criticando.
Hola Sergio,
Primero de todo, agradecerte el interés en nuestro contenido.
En relación a tu comentario, creemos que, si bien no es lo mismo una app nativa que una en cross en cuanto a potencia de rendimiento y especificación, en el día a día los desarrolladores cross tienen que hacer frente a problemas tanto en tecnología web como nativa, ya que al hacer uso de funcionalidades del dispositivo (cámara, GPS, gestión de ficheros, etc..) deben conocer cada una de las plataformas para las que se desarrolla la app. Por tanto, pensamos que si sólo fueran «adaptadores de web a móvil» no habría ninguna app cross en la App Store, porque Apple directamente las rechazaría y aconsejaría tener una web.
De todas formas, nos encanta conocer otras perspectivas de profesionales del sector. Si algún día estás por Barcelona, nos gustaría que participaras en una de nuestras SlashFridays para poder hablar más en profundidad sobre estos temas.
Un saludo
Hola!
Mucha razón… igual también soy muy talibán, pero ya te digo que yo intento programar en todo lo que pueda y en lo que mejor sea para el cliente o para mi. Me queda mucho por aprender!
Por Barcelona complicado, soy de San Sebastián… el que ha dicho por Twitter si habría stremaing de ese evento. JAJA.
Es un placer compartir opiniones y si no las hubiera nuestro sector no sería un referente.
Siempre desde mi humilde opinión. Saludos!