Jetpack Compose: el paradigma declarativo llega al desarrollo Android nativo
En los últimos tiempos, el desarrollo de aplicaciones –no sólo móviles–, se ha modernizado muy rápidamente. Mientras que en otras plataformas ya existía una aproximación al desarrollo de interfaces de usuario mediante paradigma declarativo (Swift UI para iOS, Flutter para multiplataforma, entre otras), en julio de 2021 por fin se liberó una versión estable de la herramienta que permite introducir este tipo de programación de forma nativa en Android: Jetpack Compose.
Pero, ¿por qué está teniendo tanto éxito esta tendencia? ¿Qué ventajas posee respecto al tradicional paradigma imperativo? ¿Es realmente el futuro del desarrollo de las interfaces de usuario?
Paradigma imperativo vs paradigma declarativo
Para poder profundizar más en la herramienta tratada, es necesario comenzar por la base: el funcionamiento de los dos paradigmas básicos con los que construir la parte gráfica de las aplicaciones.
En una interfaz de usuario desarrollada con paradigma imperativo, se debe indicar a cada uno de los componentes candidatos a cambiar cómo se tiene que comportar en respuesta a cada evento o interacción que ocurra, con el fin de modificar su estado interno. Es decir, construir una interfaz de usuario mediante programación imperativa implica indicar el cómo se debe comportar ésta en cada momento, con cada evento que ocurra.
Con un paradigma declarativo, los componentes no poseen estado interno, sino que cada vez que se actualiza el estado de la aplicación en respuesta a eventos o interacciones, éstos se construyen de nuevo con un aspecto distinto en caso necesario. Es decir, construir una interfaz de usuario mediante programación declarativa implica indicar el qué se debe mostrar en ésta en función del estado actual de la aplicación.
Definir interfaces de usuario de forma declarativa posee una importante ventaja frente a definirlas de manera imperativa. En un paradigma imperativo, tal y como se ha mencionado, los componentes se deben manipular cada vez que ocurre un evento. Modificar componentes de forma manual incrementa la probabilidad de aparición de errores, puesto que cuantos más componentes haya que mantener actualizados, más complejo será mantener un estado consistente, perjudicando así a la mantenibilidad del sistema.
Por ello, la ventaja que ofrece el paradigma declarativo es que no es necesario manipular estos componentes, sino que indicando desde un inicio qué se debe mostrar en función del estado actual, la interfaz de usuario se regenera completamente de forma automática cuando ocurre un cambio de estado, llevando así a cabo una recomposición. Esto simplifica enormemente el proceso de actualización de IU, dado que con cada recomposición la interfaz de usuario se generará en el estado correcto sin necesidad de manipular sus componentes, disminuyendo por ende la probabilidad de errores.
Beneficios de Jetpack Compose
Jetpack Compose es un kit de herramientas moderno para el desarrollo nativo de interfaces de usuario en aplicaciones Android, a través de una API declarativa. Se puede utilizar exclusivamente con el lenguaje de programación Kotlin, aunque posee interoperabilidad con el sistema de vistas XML aún utilizado en Android, lo que lo hace más flexible.
Jetpack Compose es una herramienta que viene pisando fuerte y que en el poco tiempo que lleva en el mercado, ha demostrado evidentes ventajas a la hora de desarrollar aplicaciones
Con todo esto, Jetpack Compose supone un beneficio en cuatro aspectos principales frente al desarrollo de interfaces de usuario mediante XML y paradigma imperativo:
- Menos código. Uno de los puntos en los que Jetpack Compose destaca es la necesidad de menos líneas de código para crear lo mismo que se haría mediante una programación imperativa. Esto supone una ventaja evidente a la hora de mantener el sistema.
- Más intuitivo. Al tratarse de un paradigma declarativo, que se basa en simplemente realizar una descripción de la interfaz de usuario que se va a mostrar, se considera que el código es mucho más legible y entendible para los desarrolladores.
- Acelera el desarrollo. Debido a la reducción de la complejidad en el desarrollo y mantenimiento que proporciona esta herramienta, crear aplicaciones es más directo, acortando así el tiempo necesario para desarrollarlas.
- Potente. Puesto que todo se desarrolla en Kotlin íntegramente, es posible aprovechar toda la potencia que ofrece el lenguaje para crear vistas dinámicas que no serían posibles solamente con el uso de XML. Además, aplica las guías de estilo de Material Design por defecto, por lo que no hay que preocuparse excesivamente de si se están siguiendo estos principios de diseño.
Casos de éxito
Por si aún no había quedado claro, sí, muchas aplicaciones Android conocidas se están pasando ya a Jetpack Compose en busca de la eficiencia que promete. Algunos de estos casos son de gran repercusión, tratándose de apps con varios millones o incluso miles de millones de descargas:
- Twitter. La red social del pajarito azul fue la primera de las grandes en dar el paso a Jetpack Compose. Tras realizar el cambio, el equipo de Twitter declara “haber incrementado la eficiencia y la velocidad en el desarrollo, además de convertir su aplicación en mucho más robusta que lo era antes”.
- Square. Uno de los TPV más famosos del mercado también decidió moverse a esta nueva herramienta. Esto les ha permitido “centrarse en las cosas importantes de manera mucho más simple”.
- Monzo. Este banco británico, basado en app móvil y con millones de usuarios por todo el mundo, fue otro de los que decidió pasar a utilizar Jetpack Compose en su app Android. Según declaran, “crear una app de alta calidad fue una tarea fácil con Jetpack Compose”.
Conclusión
Jetpack Compose es una herramienta que viene pisando fuerte y que en el poco tiempo que lleva en el mercado, ha demostrado evidentes ventajas a la hora de desarrollar aplicaciones. En términos generales, es posible ver cómo el proceso de desarrollo y mantenimiento de los sistemas que han puesto en práctica este paradigma ha mejorado, haciéndolo notable tanto para desarrolladores como para usuarios finales. Lo mejor de todo: esto es sólo el principio, ¿podrá sorprendernos aún más Jetpack Compose en un futuro? ¿Hablamos?