Los desarrolladores de Facebook están apostando fuerte estos últimos años por su tecnología buque insignia: ReactJS. El framework JavaScript más de moda ha demostrado ser el rey en rendimiento, superando con creces a competidores como Angular o EmberJS gracias a un cálculo eficiente de los cambios necesarios y aplicación de los mismos mediante Virtual DOM.
Pero más allá del framework, lo que está creando Facebook es un ecosistema que sea realmente amigable y eficiente para el desarrollador. Por ejemplo, la arquitectura de flujo de información Flux facilita una estructura de programación más lógica que deshecha el two-way binding tan común en los frameworks JavaScript basado en MVC; o la herramienta de la que hablaremos en este artículo, React Native, que permite crear aplicaciones híbridas basadas en React y que compilan a código nativo, mejorando el rendimiento enormemente comparado a otros frameworks para crear apps híbridas basados en Phonegap.
Aquí podemos ver la presentación que hicieron los desarrolladores de React cunado lanzaron React Native por primera vez, a raíz de la necesidad de un framework híbrido con un buen rendimiento para su aplicación móvil de gestión de anuncios:
Facebook lanzó en primavera de este año la primera versión de React Native. En su primera versión solo tenía soporte para iOS, pero este Septiembre ha lanzado también una versión previa con soporte para Android. En este momento el equipo de Facebook está trabajando duro para ofrecer a los desarrolladores una mayor cantidad y calidad de componentes: todos ellos ofrecen un funcionamiento y diseño prácticamente idéntico a su equivalente widget en versión nativa. Al ser un software de código abierto, cualquiera puede crear un componente, tanto para iOS como para Android, y hacer un pull request para que lo incluyan en la rama principal del proyecto.
React Native funciona con Node y NPM, es decir, la base de la plataforma es puro JavaScript. Esto nos da la ventaja de tener a nuestro alcance todo el ecosistema JavaScript, que está en constante crecimiento y ahorra a los programadores mucho trabajo ya que podemos encontrar un paquete para casi cualquier funcionalidad que nos podamos imaginar. Opcionalmente, puedes usar React con watchman (para realizar acciones cada vez que se guarda un arcivo) y flow, que añade un sistema de tipado a JavaScript. Para instalar todo lo necesario para ponerse en marcha, la página de Getting Started de la documentación os aclarará cada paso que debéis dar. En estos momentos el único sistema operativo al que React Native ofrece soporte completo es Mac OSX; GNU/Linux está soportado de manera parcial y Windows aún no está soportado.
Pero sin duda el mayor reclamo para usar React Native es su rendimiento. Durante años muchos desarrolladores han descartado crear aplicaciones híbridas (mayormente basadas en Phonegap) debido a que su rendimiento es muy pobre si lo comparamos con código nativo. Aunque en las últimas versiones Phonegap (y por ende los frameworks basados en esta tecnología) ha mejorado mucho en este aspecto, todavía le queda mucho por mejorar y hay que tener en cuenta que la propia plataforma tiene limitaciones en este aspecto. React, en cambio, está pensado para ser lo más óptimo posible, y esto se nota cuandoel dispositivo donde se ejecuta el código tiene pocos recursos o la cantidad de operaciones a realizar sobre el DOM es muy grande.
Con nuevos frameworks como este, el perfil de desarrollador full-stack se está volviendo cada vez más útil: con un mismo lenguaje podemos crear el frontend y el backend de una webapp, y ahora también es posible crear aplicaciones multiplataforma para dispositivos que interactúen con el backend de una forma transparente. El único extra es aprender el funcionamiento de cada framework, pero al contrario de lo que pueda pensar mucha gente, si se hace una apuesta decidida por cada uno de ellos y los aprendes de uno en uno, el abanico de cosas que puedes hacer como desarollador es muy amplio.