Kotlin Multiplatform Mobile: ¿La panacea del desarrollo móvil? Ha sido salvado
El uso de aplicaciones móviles está en auge y la demanda de desarrollo de aplicaciones está contribuyendo a su crecimiento. Según un estudio elaborado por WeAreSocial, en colaboración con Hootsuite, la descarga de aplicaciones ha aumentado un 23.7% respecto al año anterior, con un total de 142.9 billones de aplicaciones descargadas. En consecuencia, el desarrollo de aplicaciones móviles se encuentra en su etapa de mayor crecimiento y debe haber un manera más rápida y eficaz de crear aplicaciones.
Durante la etapa de planificación de una aplicación móvil, el principal desafío es decidir si la aplicación debe ser nativa o híbrida. Sin embargo, el problema de una aplicación híbrida, y a pesar de que el desarrollo es unificado, es que el rendimiento suele inferior respecto a una aplicación nativa, además de que tienen más dificultades para trabajar con las funciones integradas del dispositivo (GPS, cámara, bluetooth, etc).
Y entonces, ¿por qué no utilizar una tecnología híbrida que solucione los problemas de rendimiento y que no tenga que lidiar con las funciones integradas del dispositivo?
¿Qué es Kotlin Multiplatform Mobile?
Kotlin Multiplatform Mobile es un SDK para el desarrollo móvil multiplataforma desarrollado y suministrado por JetBrains. Su principal beneficio es la capacidad para reducir el tiempo invertido tanto en el desarrollo como en mantenimiento del mismo código fuente para diferentes plataformas manteniendo la flexibilidad y los beneficios de la programación nativa.
A menudo, las versiones para Android y iOS de una aplicación tienen mucho en común, pero también pueden diferir en gran medida (especialmente en cuanto a interfaz de usuario). Al mismo tiempo, la lógica de negocio, como la gestión de datos, analíticas y autenticación, suele ser idéntica. Por eso resulta natural compartir algunas partes de una aplicación entre plataformas y mantener otras partes totalmente separadas.
Con KMM, se puede disfrutar de esta flexibilidad, abstrayendo en un único código común toda la lógica de negocio y utilizar este código tanto en aplicaciones iOS como Android, y mantener las ventajas de la programación nativa, escribiendo el código especifico de cada plataforma cuando sea necesario, por ejemplo, para implementar una UI nativa o utilizar APIs específicas de cada plataforma.
¿Cómo funciona KMM en iOS y Android?
La estructura de un proyecto básico en KMM está formado principalmente por tres módulos:
Shared Module
El shared module contiene la lógica común, escrita en Kotlin y compilada mediante Gradle, tanto para las aplicaciones Android como para las aplicaciones iOS. Sin embargo, a veces es necesario escribir lógica especifica de la plataforma dentro del shared module. En estos casos, Kotlin proporciona el mecanismo expect/actual. Con este mecanismo, el shared module define las declaraciones de tipo expect, y los módulos de las plataformas especificas deben proporcionar las implementaciones de tipo actual correspondientes.
Está organizado en 3 sub-módulos respectivamente:
Una vez tenemos el código fuente, este es compilado en un artefacto Android ARchive (AAR), en el caso de Android. En cambio, para iOS, el código fuente es compilado en un framework usando Kotlin Native. Además, por cada plataforma, se pueden compilar uno o más artefactos. Por defecto la compilación incluye:
Android App
El módulo Android App como parte de un proyecto KMM, es la típica aplicación Android escrita en Kotlin y compilada mediante Gradle. Y para acceder a la lógica común dentro del shared module, se añade el artefacto como una dependencia dentro de Gradle:
iOS App
El módulo iOs App como parte de un proyecto KMM, es la típica aplicación iOS escrita en Swift y compilada mediante XCode. Y para acceder a la lógica común dentro del shared module, se debe de configurar de manera correcta:
Ventajas y desventajas de KMM
Las principales ventajas de KMM son:
A pesar de las ventajas, también hay una serie de desventajas que hay que tener en cuenta antes de usar Kotlin Multiplatform Mobile:
Conclusión
Kotlin es un lenguaje de programación magnifico y KMM lo acerca a otras plataformas con la intención de crear aplicaciones escalables y fácilmente mantenibles teniendo una única lógica de negocio común. A pesar de que el código compartido es ligeramente menor al de otras tecnologías (no es posible compartir la UI), nos da la ventaja de crear la UI acorde con las directrices de diseño y las buenas prácticas de las plataformas específicas.
Además, combinar KMM con programación reactiva y un flujo de datos unidireccional, nos ayuda a crear una solución totalmente desacoplaba y agnóstica a la UI. Usando KMM se espera compartir un 70 – 80% del código entre todas las plataformas, y añadir una nueva plataforma, sería solo cuestión de implementar una nueva UI.
Y, por último, pero no menos importante, y a pesar de que KMM se encuentra en fase Alpha, es totalmente seguro utilizarlo en producción gracias a que Kotlin JVM es estable y Kotlin Native se encuentra en fase Beta.
Autor del artículo
Marc Gareta, consultor de Consultoría Tecnológica de Deloitte