Flutter vs Kotlin Karla Delgado Balderas Praxis, Gerencia de Soluciones Móviles México, Ciudad de México

Página creada Tomas Ferrando
 
SEGUIR LEYENDO
Flutter vs Kotlin

       Karla Delgado Balderas
Praxis, Gerencia de Soluciones Móviles
     México, Ciudad de México
RESUMEN                                        utilizando tecnologías y plataformas
                                               que permitan su portabilidad entre las

Considerando la tendencia creciente            dos grandes familias de dispositivos

que ha existido por años de desarrollo         móviles en el mercado. A raíz de la

de apps dentro de las plataformas              aceleración en transformación digital

móviles (Android, IOS) dominantes en           resultante del gran confinamiento de

el mercado, es relevante analizar dos          2020, el incremento en el uso de

de las plataformas de desarrollo que           herramientas, lenguajes y tecnologías

enfocan sus fortalezas en maximizar            multiplataforma ha sido dramático y se

la portabilidad de los aplicativos,            estima que siga a la alza [1].

particularmente       en      una      clara
segmentación de la GUI y la lógica de          El mercado está dominado desde el

negocio.       Este        ejercicio     de    punto de vista de volumen por

comparación sirve como referencia              Android, con un 71.93% [2] del share,

desde un punto de vista cualitativo no         pero nivelado desde el punto de vista

puramente técnico sino enfocado a              de las compras que realizan los

beneficios    y   puede      usarse    para    usuarios de iOS, las organizaciones

alimentar criterios de selección entre         siguen generando estrategias para

una y otra.                                    llegar a través de sus apps a todas las
                                               audiencias y cubrir casi el 100% de los

PALABRAS CLAVE:                                usuarios de dispositivos móviles.

                                               La evolución de los frameworks cross-
Kotlin, Flutter, Android, iOS, app,
                                               platform o multiplataforma ha llegado
compilación.
                                               a un punto de madurez en donde se
                                               reconoce que, en muchos casos hay
INTRODUCCIÓN
                                               porciones del desarrollo que debe
                                               realizarse utilizando opciones nativas.
Existe una tendencia desde hace años
                                               Por consecuencia frameworks como
de incrementar el desarrollo de apps
                                               React, Xamarin, Flutter y Kotlin han
trabajado,     desde       perspectivas        Google extendió la funcionalidad de
diferentes esta interacción compuesta          Android Studio desde su versión 3.0
entre lo multiplataforma y lo nativo. El       para incluir la capacidad de procesar
centrarse en Flutter y Kotlin tiene una        código de Kotlin y a partir de 2019 se
explicación: son las dos opciones que          convirtió en el lenguaje preferido para
están respaldadas por Google, quien            desarrollo nativo en Android [5].
está detrás de Android.
                                               ¿Qué es Flutter?

DESARROLLO
                                               Flutter es un SDK creado por Google
                                               para    desarrollo   de    aplicaciones
¿Qué es Kotlin?
                                               móviles y centradas en facilitar el
                                               desarrollo de UI de apps, cuidando
Kotlin es el nombre tanto de un
                                               que se mantenga una misma base de
lenguaje        de        programación
                                               código para diferentes plataformas.
“pragmático” creado originalmente por
JetBrains y adoptado oficialmente por
                                               Flutter utiliza un lenguaje propietario
Google para la plataforma Android en
                                               denominado “Dart”. Cuenta con una
2017[3] así como de una plataforma de
                                               serie de herramientas de pruebas y de
desarrollo   para    soluciones       cross-
                                               widgets que reducen drásticamente la
platform.    Para    efectos     de    este
                                               curva de entrada en el desarrollo de la
comparativo, nos centraremos en el
                                               interfaz gráfica de una app nueva [6].
lenguaje de programación.

                                               Desarrollo con Kotlin
La promesa de Kotlin es ser un
lenguaje de programación que permita
                                               Kotlin funciona de manera nativa con
tener   un    mismo     código    fuente,
                                               Android Studio y es una de dos
principalmente para la lógica de
                                               opciones       de      lenguaje       de
negocio en aplicaciones destinadas a
                                               programación. Desde el punto de vista
ejecutarse en dispositivos móviles
                                               de desarrollo para Android, Kotlin
Android y iOS [4].
funge en todo sentido como tecnología                 -     La UI debe utilizar aspectos
nativa. Está soportado el uso de Kotlin                     nativos complejos que no son
con      Java       para       Android       con            solventables con tecnologías
interoperabilidad transparente [7].                         que no son nativas.

En el caso de iOS el IDE de xCode                  Desarrollo con Flutter
soporta       plugins     para     Kotlin    que
permiten compilar el código Kotlin de              El SDK de Flutter se puede integrar a
forma     nativa.       En     todo     lo   que   diferentes      editores   e    IDEs.     Las
corresponda         backend,       es    posible   opciones de Android Studio y Visual
utilizar Kotlin y es común utilizar                Studio    Code      son    particularmente
Swift/Objective-C para elementos de                sencillas de utilizar. Está pensado
UI, los cuales pueden interactuar con              también para utilizarse con xCode
Kotlin. [8]                                        para iOS [9].

Bajo estas premisas, es claro que el               Tanto para Android como iOS cuenta
desarrollo con Kotlin es un camino                 con una amplia gama de herramientas
natural cuando:                                    y elementos para una UI muy rica y de
                                                   alto desempeño.
    -   La estrategia de despliegue de
        la    app       incluye    dispositivos    El enfoque de desarrollo está basado
        Android           o       debe       ser   en elementos declarativos, lo cual
        multiplataforma.                           puede ser un cambio en paradigma
    -   La     app      está      centrada   en    respecto a programadores habituados
        funcionalidad compleja y reglas            a lenguajes imperativos         [10].   Existe
        de negocio robustas.                       también      un    manejo      de   estados
    -   La UI no es uno de los puntos              embebido que facilita la interacción
        focales con relación a lo que se           entre componentes internos de la app.
        espera entregar a los usuarios
        finales.
Es     igualmente           posible   integrar   criterios, basados en escenarios, que
plataformas            nativas            para   sugiere este análisis como básicos
complementar           la       funcionalidad,   para selección entre una de estas
particularmente en el manejo de datos            tecnologías:
y el backend.
                                                                                                 Flutter   Kotlin
                                                                                   App                       X
Bajo estas premisas, es claro que el
                                                                             exclusivamente
desarrollo con Flutter es un camino

                                                 Características de la app
                                                                                 Android
natural cuando:                                                                    App             X
                                                                             multiplataforma
                                                                             enfocada en UI
     1. La estrategia de despliegue de
                                                                                   App                       X
        la app debe ser multiplataforma
                                                                             multiplataforma
     2. La app está centrada en una                                             enfocada
        interfaz de usuario enriquecida,                                      funcionalidad
        eficiente       y        visualmente                                 Experiencia en                  X
        impresionante.                                                       desarrollo nativo
                                                                             Experiencia en        X
                                                 Dev Team

     3. La lógica y reglas de negocio no
                                                                                desarrollo
        son complejas, así como el
                                                                                 frontend
        manejo de los datos                                                     Curva de           X
     4. No hay lógica de negocio                                               aprendizaje

        significativa residiendo en la
        app y se utilizan módulos                CONCLUSIÓN:
        centrales      (web       core)    y/o
        distribuidos          (microservices)    En todos los procesos de selección de
        donde residen esas reglas.               un camino de implementación o
                                                 tecnología no hay una respuesta
Comparativa.                                     booleana, ni una receta que abarque
                                                 todos los escenarios. Cada evaluación
Tomando en cuenta lo anteriormente
                                                 corresponde a un contexto y análisis
expuesto, la siguiente matriz ilustra los
                                                 caso por caso.
En cuanto a la utilización de Kotlin y     REFERENCIAS
Flutter parece relativamente evidente
que las fortalezas de Kotlin se centran    [1] Bussines of apps, 2021, App
en garantizar una portabilidad simple y    development trends 2021, recuperado
consistente del backend. Mientras que      de:
Flutter es una alternativa cuando el       https://www.businessofapps.com/app-
foco se tiene en la UI.                    developers/research/app-
                                           development-trends/#tabs-
Ahora en el caso de Android la             directory:~:text=Cross%2Dplatform%
decisión de una u otra parecería           20app%20development%20will%20c
reducirse a un tema de preferencia,        ontinue%20provide,on%20developme
pues el soporte nativo de Android para     nt%20for%20multiple%20mobile%20
Kotlin permite que se puedan utilizar      platforms.
ambas tecnologías aprovechando sus         [2] Statcounter Global Stat, 2021,
fortalezas. Si bien en la teoría esto es   Mobile    Operating        System      Market
cierto, en la práctica no hay aún una      Share Worldwide, recuperado de:
difusión masiva de esta aproximación,      https://gs.statcounter.com/os-market-
si bien es completamente válida.           share/mobile/worldwide
                                           [3]Kotlin, 2021, Kotlin, recuperado de:
En esta misma línea, no es imposible       https://kotlinlang.org/docs/kotlin-
hacerlo para apps en iOS, pero la          foundation.html
combinación de estas tecnologías           [4]    Kotlin,    2021,       Multiplatform
haría, irónicamente, más compleja su       programming,         recuperado           de:
manutención y actualización pues la        https://kotlinlang.org/lp/mobile/
oferta    de     especialistas     sería   [5] Developers, Desarrolla apps para
extremadamente escasa por el know          Android con Kotlin, recuperado de :
how tan específico.                        https://developer.android.com/kotlin
                                           [6]   Flutter,   Flutter    2.2   is   here.,
                                           recuperado                  de              :
                                           https://flutter.dev/docs/resources/faq
[7] Kotlin, 2021, Kotlin for Android,
recuperado                             de:
https://kotlinlang.org/docs/android-
overview.html
[8] Kotlin, 2021, Kotlin/Native as an
Apple framework – tutorial recuperado
de:   https://kotlinlang.org/docs/apple-
framework.html
[9] Flutter, Flutter 2.2 is here, Set up an
editor,         recuperado             de:
https://flutter.dev/docs/get-
started/editor?tab=emacs
[10] Flutter, Flutter 2.2 is here, Start
thinking declaratively, recuperado de:
https://flutter.dev/docs/development/d
ata-and-backend/state-
mgmt/declarative

                                              Claudia Castilla Bello
                                              Gerente de Soluciones Móviles

                                              Tel. 55 5080 0048
                                              c.castilla@praxisglobe.com
                                              Claudia Castillo Bello
También puede leer