ZIO es una librería que nos permite construir aplicaciones modernas, que sean asíncronas, concurrentes, resilientes, eficientes, fáciles de entender y testear, usando los principios de la programación funcional.
¿Por qué decimos que ZIO nos permite construir aplicaciones que sean fáciles de entender y testear? Porque nos ayuda a construir aplicaciones de cualquier complejidad en forma incremental, a través de una combinación de descripciones de interacciones con el mundo exterior. Por cierto, dichas descripciones son llamadas efectos funcionales.
¿Por qué decimos que ZIO nos permite construir aplicaciones que sean resilientes? Porque ZIO aprovecha al máximo el sistema de tipado de Scala, de tal manera que puede capturar más bugs en tiempo de compilación, en vez de en tiempo de ejecución. Esto es genial porque, con sólo mirar el encabezado de una función, podemos saber:
Y finalmente, ¿por qué decimos que ZIO nos permite construir aplicaciones que sean asíncronas y concurrentes? Porque ZIO nos da superpoderes para trabajar con programación asíncrona y concurrente, usando un modelo basado en fibras, el cual es mucho más eficiente que un modelo basado en hilos. No entraremos en mucho detalle acerca de este aspecto en particular en el presente artículo, sin embargo cabe mencionar que justamente en esta área es donde ZIO brilla, permitiéndonos construir aplicaciones realmente performantes.