React Native en el desarroll de apps

pexels-djordje-petrovic-2102416

Escrito por:

Yanina Muradas

Gestión de proyectos

React Native es un framework JavaScript para crear aplicaciones reales nativas para iOS y Android, basado en la librearía de JavaScript React para la creación de componentes visuales, cambiando el propósito de estos para, en lugar de ser ejecutados en navegador, correr directamente sobre las plataformas móviles nativas, en este caso iOS y Andorid. Es decir, en lugar de desarrollar una aplicación web híbrida o en HTML5, lo que obtienes al final como resultado es una aplicación real nativa, indistinguible de la que podrías desarrollar con tu código en Objective-C o Java.

Esa es la teoría, pero veamos cómo propone React Native alcanzar este objetivo.

React Native usa el mismo paradigma fundamental de construcción de bloques de UI (componentes visuales con los que interacciona el usuario) que las aplicaciones nativas reales de Android e iOS, pero gestiona la interacción entre los mismos utilizando las capacidades de JavaScript y React.

 

Características

Con esta idea de construcción de aplicaciones React Native nos proporciona las siguientes funcionalidades:

  • Compatibilidad Cross-Platform:ya que la mayoría de las APIs de React Native lo son de por sí, lo cual ayuda a los propios desarrolladores a crear aplicaciones que puede ser ejecutados tanto en iOS como Android simultáneamente con el mismo código base.
  • Funcionalidad nativa: las aplicaciones creadas mediante React Native funcionan de la misma manera que una aplicación nativa real creada para cada uno de los sistemas usando su lenguaje nativo propio. La unión de React Native junto con JavaScript permite la ejecución de aplicaciones más complejas de manera suave, mejorando incluso el rendimiento de las apps nativas y sin el uso de un WebView.
  • Actualizaciones instantáneas (para desarrollo y/o test):con la extensión de JavaScript, los desarrolladores tienen la flexibilidad de subir los cambios contenidos en la actualización directamente al dispositivo del usuario sin tener que pasar por las tiendas de aplicaciones propias de cada sistema y sus tediosos ciclos de procesos obligatorios previos. Hay que aclarar que este uno es exclusivo de versiones de desarrollo o para test, es ilegal, y puede llegar a conllevar castigos que llegan hasta la retirada definitiva de la aplicación si se realizan cambios directos sobre código con aplicaciones ya publicados y en producción. La tienda de Apple lleva un control muy exhaustivo sobre este tipo de prácticas.
  • Sencilla curva de aprendizaje:React Native es extremadamente fácil de leer y sencillo de aprender ya que se basa en los conceptos fundamentales del lenguaje JavaScript, siendo especialmente intuitivo tanto para los ya expertos en dicho lenguaje o incluso para las personas sin experiencia en él, ya que nos provee de un rango muy amplio de componentes, incluyendo ejemplo como los maps y filters típicos que se han usado siempre.
  • Experiencia positiva para el desarrollador: si bien la curva de aprendizaje hemos dicho que es sencilla, también el propio lenguaje nos motiva y ayuda a la hora de la evolución según aumentamos nuestro conocimiento y dominio de este. Nos ofrece varias características importantes como, por ejemplo, el Hot reloadingque nos refresca la app en el momento en que guardamos cambios, y nos ofrece una gran ventaja para el desarrollo y testing de nuevas versiones, como hemos comentado arriba. O el uso del flexbox layout engine gracias al cual nos permite abstraernos de muchos de los tediosos detalles de la generación de cada uno de los layouts correspondientes a iOS y Android. Así como el uso del debugger de las herramientas de desarrollados del navegador Google Chrome, facilitando de sobre manera la tarea de depuración de código.

Estas son cinco de las características principales que nos brinda React Native por defecto si lo elegimos como framework para nuestro desarrollo. A priori suenan muy bien ¿verdad? Más adelante, a lo largo de una serie de artículos, veremos que no es oro todo lo que reluce, y que todas estas características no se cumplen siempre, o no al cien por cien, en todos los casos.

Soporte

Sin embargo, aparte de los que nos ofrece el framework, hay otros factores, tanto o más importantes de cara a la elección de React Native como nuestra principal herramienta en el desarrollo, y es el soporte que tiene. Podríamos definir el soporte de una plataforma, grosso modo, como la compañía o compañías que está detrás del framework o que lo usan y lo publicitan activamente.

Todos tenemos claro, y es notorio, que el principal soporte de la librería React (que como hemos comentado arriba es parte fundamental del proceso de desarrollo en React Native) recae sobre Facebook. Sabemos que la compañía ha construido su propia web y la de su red social hermana Instagram. ¿Pero sabemos si ese soporte se extiende a sus aplicaciones móviles? La respuesta a esta pregunta probablemente es no (al menos en mi caso, no lo sabía a ciencia cierta), no lo sabemos con la contundencia que hablamos de React y las respectivas webs de Facebook e Instagram, pero la respuesta es sí, sus aplicaciones móviles están desarrolladas con React Native (aunque la aplicación de Instagram no está soportada en IPad debido a problemas relacionados con el framework).

 

  • Growth through innovation/creativity:
    Rather than be constrained by ideas for new products, services and new markets coming from just a few people, a Thinking Corporation can tap into the employees.
  • Increased profits:
    The corporation will experience an increase in profits due to savings in operating costs as well as sales from new products, services and ventures.
  • Higher business values:
    The link between profits and business value means that the moment a corporation creates a new sustainable level of profit, the business value is adjusted accordingly.
  • Lower staff turnover:
    This, combined with the culture that must exist for innovation and creativity to flourish, means that new employees will be attracted to the organization.