Easy Tech: ¿Conoces las tecnologías de movilidad?

Oct 08 2019

Por Carlos Reyes

Vivimos en un mundo en el que la tecnología avanza de forma frenética. Cada año, Apple y Google, o más bien los fabricantes que construyen dispositivos Android, sacan al mercado entre uno y dos dispositivos tope de gama al año. Esto suele ir acompañado no solo de un nuevo terminal, sino que cada año, también aparece una nueva versión de los sistemas operativos móviles, que de la mano de estos nuevos dispositivos ofrecen nuevas características a los usuarios tanto de software como de hardware. 

 

Esto implica que aquellos que nos dedicamos al desarrollo de aplicaciones móviles, debemos adaptarnos a los cambios y al ritmo que imponen tanto Apple como Google en la aparición de nuevas versiones de iOS y Android. Esto es debido a que estás nuevas versiones del sistema operativo, también suelen ir acompañadas de cambios ocultos a los usuarios, pero que sí que tienen un gran impacto en los desarrolladores, ya sea porque "imponen" un nuevo lenguaje de desarrollo, alguna herramienta que se utilizaba hasta el momento desaparece, o simplemente, modifican cómo se accede o utiliza algún recurso. 

Por ello, existe un gran ecosistema que permite el desarrollo de aplicaciones móviles, en el que cada framework tiene sus particularidades, ventajas e inconvenientes que hacen que optar por llevar a cabo el desarrollo de una aplicación en una tecnología concreta no sea una decisión fácil, y no puede tomarse a la ligera. 

Para aclarar un poco estos puntos, vamos a profundizar un poco en cada uno de ellos. 

Nativo 

El caso más evidente del desarrollo móvil es hacerlo con tecnologías nativas, es decir, aquellas que ofrecen directamente Google y Apple. Sin embargo, estás han sufrido una importante evolución a lo largo del tiempo. 

Por una parte, Apple utilizaba como lenguaje de programación en la salida de iOS, Objetive-C, que con el tiempo fue sustituido por Swift, el cual recibe una actualización cada vez que sale una nueva versión del sistema operativo. Pese a lo que pueda parecer, Objetive-C no ha caído del todo en el olvido. Pese a que lo recomendable es realizar los desarrollos de una nueva aplicación en la última versión de Swift, en el caso del desarrollo de librerías la opción más habitual es optar por un desarrollo en Objetive-C 

En el otro lado, Android inició su andadura desarrollando las aplicaciones en Java, pero en los últimos años, ha optado por virar esta opción hacia Kotlin. La posibilidad que ofrece Google a la hora de incluir Kotlin en un desarrollo es la capacidad de integrarse en un desarrollo en Java, no haciendo necesaria una migración completa de las aplicaciones de un lenguaje al otro, es decir, que es posible que una aplicación desarrollada en Java, incluya funcionalidades desarrolladas en Kotlin. Esto da mucha más libertad a los desarrolladores, y permite una migración hacia Kotlin mucho menos agresiva. 

Las ventajas que ofrece el desarrollo nativo frente a cualquier otra opción son principalmente el rendimiento, por encima de cualquiera de las otras opciones, y el soporte ofrecido por Google y por Apple a las nuevas funcionalidades incluidas en sus terminales. Sin embargo, su mayor problema radica en que al ser lenguajes de desarrollo totalmente distintos, es necesario tener dos equipos con habilidades diferentes para desarrollar una aplicación para Android e iOS. 

Híbrido 

Un desarrollo híbrido implica que con un único desarrollo en un lenguaje de programación común, pueden generarse aplicaciones Android e iOS completamente funcionales. Es decir, unificar en un único desarrollo los dos sistemas operativos. La cantidad de código compartido entre las dos plataformas, varía según la solución que se adopte. 

En cuanto a estas soluciones, por un lado, tenemos los desarrollos basados en SDKs, que terminan generando una aplicación nativa.

Estos frameworks, como pueden ser React Native, NativeScript o Xamarin ofrecen un único lenguaje de entrada, que puede ser Javascript en el caso de React Native y Nativescript, o .Net en el caso de Xamarin, y durante el proceso de construcción de la aplicación, traducen ese código convirtiéndolo en código nativo, de tal forma que la experiencia de usuario sea muy semejante a una aplicación nativa.  

El mayor problema que ofrecen este tipo de desarrollos, es que cuanto más semejante se quiere hacer la experiencia a una aplicación nativa, mayor es la divergencia del código entre las dos plataformas, obligando a realizar desarrollos en la capa nativa de las aplicaciones. 

Por otro lado, existen los desarrollos híbridos basados en Cordova, con Ionic como su framework de desarrollo más extendido. Es decir, la aplicación se ejecuta en un pseudo-navegador, integrado en una aplicación nativa, que ofrece puentes para poder comunicarse con el sistema operativo. Al ejecutarse en un pseudo-navegador, el desarrollo es íntegramente con tecnologías web, sin embargo, para obtener un buen resultado en cuanto a rendimiento y experiencia de usuario, la arquitectura de la aplicación debe estar orientada a un desarrollo móvil. Es decir, que pese a utilizar tecnología web, todo el paradigma y arquitectura de desarrollo debe ser móvil. En el caso de este tipo de desarrollos, la reutilización de código es prácticamente total, con unas diferencias entre plataformas mínimas. Sin embargo, el rendimiento y experiencia de usuario es algo inferior a las opciones anteriores. Esto se agrava si el desarrollo se ha llevado a cabo más orientado a web que a móvil, algo que suele ocurrir de forma habitual. 

WebApps 

Por último, el caso de las WebApps es realmente el más alejado al desarrollo de una aplicación móvil en sí misma. Es decir, en este caso no estamos hablando de un desarrollo orientado a los dispositivos móviles (aunque se trate de un desarrollo mobile first, puesto que aplica más a la relación de aspecto, que a la arquitectura en sí misma), sino que ha sido pensado orientado a la web. Esto quiere decir que estamos hablando de webs que se ejecutan en el navegador del dispositivo móvil. Esto implica que, en cuanto a recursos del sistema operativo, están limitados a aquellos que el protocolo de HTML5 permite acceder.  

Por otro lado, existen también las Progressive Web Apps (PWAs), estas "aplicaciones" son una web que Chrome encapsula y convierte en una pseudo-aplicación móvil. Realmente se trata de una web, pero al usuario le da impresión de ser una aplicación, puesto que la ve como un icono más. Las PWA no requieren de instalación desde el market, sino que se instalan directamente desde la web, y amplían la funcionalidad de esta, permitiendo la recepción de notificaciones push o tener cache offline. El mayor problema de las PWAs, es que Apple no ofrece soporte y su funcionamiento en dispositivos iOS es bastante limitado, haciendo que incluso su instalación, sea complicada. 

Entonces... ¿Qué opción es mejor? 

Si hubiera una respuesta fácil a la pregunta de qué opción es mejor, esta se habría impuesto a todas las demás. Por tanto, no hay una receta, incluso puede que haya dos buenas soluciones para una misma aplicación, por lo que hay que estudiar cada caso por separado, y revisar qué se adapta más a lo que se busca en la aplicación. 

Carlos Reyes


Comparte este artículo

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.