lunes, 2 de septiembre de 2019

Frameworks para desarrollo de aplicaciones móviles híbridas

Frameworks para desarrollo de aplicaciones móviles híbridas


El desarrollo de aplicaciones móviles mediante tecnologías web ha revolucionado el mercado del desarrollo móvil. Esto es debido a que este tipo de tecnología permite aprovechar las mejores características del desarrollo nativo, además de toda la potencia y facilidades que ofrece la tecnología web.
La tecnología híbrida nació para reducir los costes, los tiempos y facilitar el aprendizaje y desarrollo de aplicaciones móviles, aportando también la posibilidad de crear webs con estos desarrollos. Por ello podríamos decir que este tipo de aplicaciones son totalmente multiplataforma (Móvil, Tablet, Ordenador, TV…). Con el desarrollo de un código único podemos generar aplicaciones para las plataformas deseadas. En el caso de móvil, para Android e iOS.
El desarrollo de aplicaciones híbridas tiene una curva de aprendizaje mucho más suave que el desarrollo nativo. Para desarrollos nativos se requiere tener conocimientos en lenguajes de programación como son Java / Kotlin / XML para Android, y Swift / Objective-C para iOS, además de las herramientas y particularidades específicas de cada plataforma. Ello supone mayores costes al tener que contar con personal específico para Android e iOS, un aumento en el tiempo de desarrollo y tener que coordinar el diseño de modo que se asemeje lo máximo posible en ambas plataformas.
Imagen CC0 por Caspar Camille Rubin en Unsplash
Dependiendo del proyecto habrá que valorar la creación de un desarrollo nativo o híbrido, así como el tipo de tecnologías y los recursos que requiere el proyecto. El desarrollo nativo aporta una integración completa con el sistema operativo y, en cuanto a potencia, suele ser más potente a costa de más costes, tiempo, posibles errores, etc.
Para el caso de aplicaciones híbridas, será necesario disponer de ciertos conocimientos más específicos de framework o frameworks que lo componen, y esto dependerá del lenguaje en el que esté basado (JavaScript, ECMAScript, TypeScript, Dart…), además de otros conocimientos en HTML5, CSS3 (en muchos casos junto a SASS), JavaScript, así como las herramientas de Front-End utilizadas (Webpack, npm, Gulp, herramientas de testing…).
Tras esta pequeña introducción genérica a algunas de las diferencias entre aplicaciones nativas y aplicaciones híbridas, vamos ahora a repasar brevemente los frameworks más famosos para desarrollo de aplicaciones móviles híbridas; los que tienen mayor apoyo y desarrollo por parte de la comunidad. La mayoría de estos frameworks de aplicaciones híbridas que indicamos utilizan por debajo Cordova o PhoneGap para generar las aplicaciones.

PhoneGap / Apache Cordova

PhoneGap, que pertenece a Adobe Systems, permite desarrollar aplicaciones híbridas mediante tecnología web HTML5, CSS3 y JavaScript. Utiliza una API que permite acceder a elementos de hardware del sistema como la cámara, almacenamiento, acelerómetro, etc. Permite integrarse con otros frameworks como por ejemplo jQuery Mobile, etc. Apache Cordova es la versión de código abierto de PhoneGap, la principal diferencia entre estos dos frameworks es que PhoneGap tiene acceso al servicio de compilación en la nube Adobe Creative Cloud permitiendo compilar la aplicación para el sistema operativo deseado e independiente del sistema operativo donde se desarrolle. Consulta este artículo para más información sobre sus similitudes y diferencias.
Al contrario que otros frameworks mencionados más abajo que se ocupan de la parte de la interfaz, PhoneGap/Apache Cordova se encarga de la integración dentro del sistema operativo móvil y de dar acceso a los servicios de éste. Así que probablemente lo usarás junto a alguno de estos frameworks, que en muchos casos sólo ofrecen la parte de la interfaz de usuario en HTML, CSS y JavaScript.

jQuery Mobile

JQuery mobile dispone de una larga experiencia en este mundo de aplicaciones híbridas. Únicamente integra el framework jQuery basado en JavaScript. Su curva de aprendizaje es muy baja, sobre todo si ya se dispone de conocimientos de jQuery y JavaScript. Se ha quedado un poco atrás en cuanto a potencia y diseño si lo comparamos con el resto de nuevos frameworks que hay en el mercado, pero igualmente jQuery Mobile puede utilizarse en paralelo con otros frameworks de diseño como son Bootstrap, Materialize, etc.
Siempre es una buena opción para un desarrollo de la interfaz de aplicaciones híbridas, pero seguramente será necesario utilizar otra serie de librerías o plugins para mejorar su diseño o funcionalidades, dado que no contiene un diseño pensado en los estándares de diseño de las actuales plataformas móviles.

Ionic

Es uno de los frameworks más famosos para el desarrollo de aplicaciones híbridas. En sus inicios Ionic utilizaba el framework AngujarJS y PhoneGap para la parte de integración con plataformas móviles. Sin embargo, en sus últimas versiones (actualmente su última versión es Ionic 4) ha ido incorporando nuevos frameworks Front-End con los que poder desarrollar. Actualmente permite su desarrollo con los más famosos: Angular, React, Vue.JS.
Ionic integra una capa de diseño con estilos css y recursos como iconos, etc. Estos estilos pueden ser adaptados a los estándares de diseño de las plataformas Android e iOS. Otra de sus muchas ventajas es que Ionic tiene su propio IDE de desarrollo que nos facilitará el diseño y programación de aplicaciones.

React Native

React Native es un framework para crear aplicaciones híbridas que está basado en JavaScript y en un conjunto de componentes del framework ReactJS. Actualmente también es uno de los más famosos, y cuenta con una gran comunidad de desarrollo. Forma parte de aplicaciones muy potentes y conocidas, como Facebook, Pinterest, Skype o Instagram.
En el año 2018 la empresa Airbnb se vio obligada a cancelar un proyecto que estuvo desarrollando durante 2 años con React Native debido a que este framework no se encuentra maduro para proyectos de gran envergadura por muchos problemas en sus actualizaciones de versiones, fallos de inconsistencia, etc.
A pesar de todos estos problemas, React Native es una buena elección ya que tiene un potente equipo de desarrollo detrás: un equipo dentro de Facebook. Ello aporta una garantía soporte y desarrollo a largo plazo. Además, cada mes se realizan revisiones de React Native corrigiendo errores o aportando nuevas funcionalidades y mejoras.

Framework 7

Framework 7 no es uno de los más conocidos, pero tiene la ventaja de que es completamente independiente y por lo tanto no tiene dependencias externas en frameworks como Angular o React. En su apartado de diseño se asemeja a Ionic, aportando un diseño ajustado a los estándares de diseño de Android e iOS dependiendo de la plataforma en la que se ejecute.
Este framework tiene una curva de aprendizaje más baja que React Native e Ionic gracias a que se pueden realizar aplicaciones híbridas utilizando simplemente HTML5, CSS3 y JavaScript. No obstante Framework 7 permite su desarrollo también con Vue.JS o React si nos interesa. Para la emulación y ejecución requiere la combinación con Cordova o PhoneGap.

NativeScript

NativeScript permite el desarrollo de aplicaciones nativas mediante JavaScript y TypeScript. También permite el desarrollo mediante el Framework Angular, y en su última versión se ha incorporado también la posibilidad de desarrollar mediante el Framework Vue.js. NativeScript genera aplicaciones verdaderamente nativas, utilizando las mismas APIS que tendrías disponibles desde Android Studio (entorno de desarrollo nativo para Android) y XCode (IDE de Apple para desarrollo nativo en iOS). Incluso permite el acceso a bibliotecas nativas de terceros, aportando así mayores capacidades respecto al rendimiento y capacidades de las aplicaciones. Su mayor inconveniente es que el desarrollo de las interfaces de usuario es más complejo (es XML, no HTML), así como las abstracciones necesarias para acceder al código nativo de manera independiente del sistema. Con NativeScript no necesitarás a PhoneGap/Apache Cordova.

Conclusión

La principal ventaja que aportan las aplicaciones híbridas es que permiten, con un mismo framework, crear una aplicación para las distintas plataformas móviles. Esto permite desarrollar un mismo código para ambas plataformas, cosa que en proyectos nativos no es posible debido a que cada plataforma tiene que ser desarrollada en su propio lenguaje y con sus propias herramientas. Por lo tanto los proyectos híbridos suponen costes menores y menor tiempo.
En realidad cualquiera de los mencionados es una buena elección. Sin embargo, aunque se domine HTML/CSS/JavaScript y algún framework Front-End, mi consejo sería que tuvieses también algunos conocimientos sobre cómo trabajan las aplicaciones nativas y sus lenguajes, ya que te vendrán bien a la hora de compilar las aplicaciones, realizar ciertas tareas como configurar el controlador de versiones o la información requerida por las plataformas de publicación (Play Store, App Store), realizar integraciones con servicios de terceros o hardware, o efectuar modificaciones más avanzadas.
Actualmente uno de los frameworks que se están abriendo mucho hueco es Vue.js, ya que facilita mucho el trabajo y dispone de una curva de aprendizaje baja si se conoce bien JavaScript y jQuery. Por lo tanto, si tengo que elegir, personalmente me decantaría por una tecnología de las anterioremente citadas que permita desarrollar con Vue.js, es decir: Ionic o Framework 7.


EmoticonEmoticon