Blog Consultoria

Un paseo por la tecnología de desarrollos de apps

Desde ya hace ya varios años una de las primeras cuestiones a las que nos enfrentamos al momento de comenzar a desarrollar una aplicación para móviles, es que modelo, tecnología y lenguaje de programación usar.
Esta decisión impacta mucho en el costo del desarrollo, en el costo del mantenimiento y por supuesto en la calidad de la solución para tener una muy buena experiencia del cliente.
El mundo de las Apps desde nuestro punto de vista, se puede dividir en tres grandes grupos de acuerdo a la técnica con que fueron desarrolladas:
  • 1. Nativas
  • 2. Hibridas
  • 3. Generadas

    1. Nativas: Estas apps fueron las primeras y significa que para su desarrollo se utilizó el lenguaje de programación nativo del dispositivo, Objetive C o Swift para iOS o Java para Android por ejemplo. Esto implica que, si quiero desarrollar una app para un móvil iPhone y un Android, debo codificar doble.
    Los principales paradigmas asociados a las Apps nativas son:
    1. Se puede lograr el mejor rendimiento posible en cuanto a performance.
    2. Se puede lograr un look&feel óptimo acorde al sistema operativo. Es decir, una muy buena experiencia de usuario si lo hago bien.
    3. Se puede acceder a todas las capacidades del dispositivo

    2. Hibridas: Son aplicaciones desarrolladas usando HTML5, CSS y JavaScript, desplegadas dentro de un contenedor nativo como Phonegap / Cordova el cual brinda acceso a las capacidades del dispositivo de una forma totalmente neutral respecto al sistema operativo. Es un modelo neutro respecto a la plataforma y con portabilidad máxima. Apache Cordova un popular entorno de desarrollo de aplicaciones móviles, originalmente creado por Nitobi. Adobe compró Nitobi en 2011 y le cambió el nombre a PhoneGap, y más tarde liberó una versión de código abierto del software llamado Apache Cordova.

    3. Generadas: Son aplicaciones desarrolladas usando herramientas como Xamarin o Genexus (entre muchas otras), en donde el desarrollo se realiza usando técnicas y lenguajes específicos de la herramienta y luego se genera la App en el lenguaje de la plataforma destino para ser compilada con las herramientas nativas. Se les denomina también falsas nativas, pero sus fabricantes las nombras Apps nativas, éstas no cumplen con ninguno de los tres paradigmas de las Apps nativas. Por esta razón las denominamos Generadas.
  • La evolución estos últimos años dio un vuelco con la apareción de otros “Frameworks” específicos. Y hoy, Flutter y React Native son los frameworks más populares, que permiten generar aplicaciones nativas de alta calidad en iOS y Android en un tiempo récord. Ambos son frameworks gratuitos y de código abierto
    Estos frameworks o plataformas de desarrollo, nos permite ahorrar tiempo de desarrollo y habría que evaluar cuál conviene más. Aunque en Cenco tenemos experiencia en ambos.

    A continuación profundizaremos en comentar algunas diferencias entre React Native y Flutter:

    1. Lenguaje de programación
    Por un lado, React usa JavaScript.
    JavaScript tiene una comunidad muy grande; esto hace que puedas asistir a múltiples eventos, conocer a muchos desarrolladores y tener la posibilidad de compartir sus experiencias en desarrollo con React. Además la curva de aprendizaje en JavaScript es muy sencilla, se pueden ver resultados muy rápidos con pocos conceptos de programación aprendidos.

    Por otro lado, Flutter usa Dart.
    Este lenguaje es relativamente nuevo, aunque Google se ha esforzado mucho por documentarlo, igual sigue siendo difícil encontrar soluciones para problemas específicos en comparación con JavaScript. Dart es un lenguaje orientado a objetos muy similar a Java en sintaxis para algunos esto puede ser un beneficio y otros pueden percibirlo como algo negativo.

    2. Tiempo en desarrollo
    React tiene menos componentes, proporciona sólo las API de renderización de la interfaz de usuario y el acceso a dispositivos es muy dependiente de bibliotecas de terceros.
    Flutter cuenta con más componentes. El framework de Flutter incluye componentes de UI, acceso al API del dispositivo, navegación y pruebas, así que elimina la necesidad de usar bibliotecas de terceros.

    3. Performance
    El nivel de performance se debe a la arquitectura que posee cada framework.

    React Native utiliza la arquitectura Flux de Facebook. Básicamente el código JavaScript se complila a código nativo en tiempo de ejecución para tener acceso a los módulos nativos de la plataforma móvil.
    En cambio, Flutter utiliza Skia como motor haciendo que compile todo directamente a Nativo controlando cada pixel para evitar problemas de rendimiento.

    4. Comunidad
    La comunidad de React Native (2015) le lleva 2 años de ventaja a Flutter (2017), esto ha permitido que se generen más eventos de encuentro, mejor documentación, etc. Una comunidad fuerte ayuda a los desarrolladores a aprender unos de otros y resolver los problemas que enfrentan.

    Finalmente queremos compartir algunos datos de una encuesta que se realizó a principios del año 2020 a 65.000 desarrolladores de todo tipo de aplicaciones que enseña el sitio de stack overflow (insights.stackoverflow.com). Esta encuesta mostró que los dos frameworks más usados eran jquery y React.js para el desarrollo web habitual, pero cuando se profundizó en la consulta de un segundo framework, ya cuando se trataba de desarrollos de app para móviles, aparecían un 11,5% con react native, contra un 7,2% flutter y Cordova un 6%.-

    Una segunda consulta que nos pareció interesante, intenta ver cuanto “ama” o se le tiene miedo a esa plataforma que usan los desarrolladores y ellos mencionan que:
  • Flutter es un 68,8% amado y temido 31,2%
  • React Native es un 57,9% y temido 42,1%
  • Cordova es un 28,7% y temido 71,3%
  • Xamarin 45,4% y temido 54,6%

    Todo va a cambiar, eso es seguro, pero hoy React Native y Flutter parecen ser los lideres para el desarrollo de apps que han elegidos los desarrolladores y aquí en Cenco somos expertos en estos frameworks.
    Luego en otro momento hablaremos de frameworks para aplicaciones web.
  • Leave a comment

    Tu dirección de correo electrónico no será publicada.