img_secundaria_ionic-vs-react-blogA lo largo de esta última temporada, hemos presenciado grandes cambios en el sector del desarrollo mobile cross-platform, y en general, en el ámbito tecnológico que utiliza lenguajes web. De todos los avances, es innegable el protagonismo de lo que hoy vamos a hablar: Ionic 2 y React Native. Víctor Oliva, Middleware Tech Lead de SlashMobility nos ayudará con el siguiente análisis de ambas tecnologías para tomar la decisión más adecuada a la hora de decantarnos por una u otra de cara a desarrollar nuestro proyecto.

empecemos por el principio

Antes de nada, vamos a hacer un recordatorio sobre qué es una aplicación nativa y qué es una aplicación híbrida. Como ya explicábamos en esta infografía, hay dos tipos de tecnologías de cara al desarrollo de aplicaciones: Cross-platform y Nativa. Por un lado, las apps híbridas (Cross-platform) se desarrollan usando HTML5, CSS y Javascript, es decir, utilizan el mismo código independientemente de la plataforma en que se ejecutan. Por otro lado, las app nativas se desarrollan en el lenguaje requerido por la plataforma de destino: Objective-C y Swift para iOS, Java para Android, etc.

Así pues, Ionic 2 se desarrolla con Angular 2 y de la mano de Cordova permitiéndonos el desarrollo de aplicaciones híbridas respetando la guía de estilo de cada plataforma.

Por otro lado, React Native se desarrolla principalmente con Javascript, lo que supone que la mayor parte del código puede ser compartida para diferentes plataformas, pero, el desarrollo no es 100% cross-platform, pues su base es que permite trabajar a nivel de programación funcional en la construcción de interfaces y que estos reaccionen – de ahí su nombre – a través del framework.

React, perteneciente a Facebook, hace poco tiempo que fue liberado y, desde entonces, cambia de una forma importante el modo de programar las webs al considerarlas como una agrupación de componentes (pequeñas partes).

En el caso de Ionic 2, el framework Angular, base de Ionic, decidió que era hora de renovarse y sacó la segunda versión, cambiando Javascript por Typescript y añadiendo también el concepto de componentes.

Todo esto empieza en el 2009 con PhoneGap, que es  una plataforma que permite exportar una mobile app utilizando internamente un webview para ejecutarla, y aunque en un principio no estaba demasiado optimizado, fue evolucionando hasta que salieron frameworks especializados para esta plataforma, como es el caso de Ionic.

Si nos fijamos en los intereses de búsqueda encontramos algo muy curioso: mientras que en el ámbito web la gente parece tener más interés en Angular 2 que en React, en el mundo cross-platform esta situación se invierte.

trends

¿cómo funcionan?

Ionic 2, sigue apostando por Cordova y crea una web mediante Angular 2. También proporciona un paquete de utilidades llamado Ionic Native, que son funciones de código que simplifican el proceso de las funcionalidades nativas del dispositivo, como puede ser la cámara, el teclado o el bluetooth.

Por otra parte, React Native tiene un enfoque bien distinto, y es que, como decíamos antes, solo utiliza un motor Javascript (V8 en Android, Javascript Core en iOS) para poder ejecutar la app; las vistas las crea de forma nativa lo que significa que tiene un intérprete que a medida que la app se va ejecutando, lee el HTML de estas vistas y va colocando cada uno de los componentes nativos en su posición, por ejemplo, si la vista expresa que hay que poner un botón en la pantalla de Home, cuando la app llegue a esta pantalla React Native creará un botón nativo y lo colocará en su posición correspondiente, dándole la clara ventaja de que todo el frontend, es decir, todas las interacciones con el usuario, sean nativas.

Lo más difícil es elegir con cuál de los dos quedarse: Ionic 2 ha mejorado muchísimo el rendimiento respecto su versión anterior e incorpora distintos estilos para cada una de las plataformas sumando la clara ventaja respecto a React Native en cuanto a su posibilidad de desarrollar muy cómoda y ágilmente en un navegador de escritorio y el hecho de programar una sola vez para cada pantalla, reduciendo el coste y el mantenimiento de forma significativa. Pero a la vez, no podemos negar que el resultado de las aplicaciones desarrolladas con React Native es bastante mejor al parecerse mucho a las aplicaciones desarrolladas de forma nativa. Entre facilidad de desarrollo y resultado final, ¿con cuál os quedáis?

Recommended Posts

Leave a Comment