Scala for Backend Engineering & Functional Programming · Lección

Ejecución de aplicaciones ZIO

ZIOAppDefault

Lección 4 de 413 pasos

Ejecución de aplicaciones ZIO es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.

De la descripción a la ejecución

Un valor ZIO es únicamente un esquema. Para ejecutarlo, debe entregarlo al runtime de ZIO, normalmente extendiendo ZIOAppDefault en lugar de llamar manualmente al runtime.

ZIOAppDefault

Extienda ZIOAppDefault e implemente run. El framework proporciona servicios predeterminados (Console, Clock, Random, System) y gestiona el inicio y el cierre.

import zio._

object Hello extends ZIOAppDefault {
  def run = Console.printLine("Hello, ZIO!")
}

El valor run

run es un ZIO cuyo entorno queda satisfecho mediante los servicios predeterminados. Sus tipos de error y de éxito son flexibles; el runtime informa de los fallos y establece el código de salida.

Una aplicación de varios pasos

Componga la lógica de la aplicación con una for-comprehension. Cada línea es un efecto que el runtime ejecuta secuencialmente.

import zio._

object Greeter extends ZIOAppDefault {
  def run = for {
    _    <- Console.printLine("What is your name?")
    name <- Console.readLine
    _    <- Console.printLine(s"Hello, $name!")
  } yield ()
}

Provisión de capas en run

Si su aplicación depende de servicios personalizados, proporcione sus capas con provide sobre el efecto run, para que el entorno quede completamente satisfecho antes de la ejecución.

import zio._

object App extends ZIOAppDefault {
  // def run = program.provide(MyService.layer)
  def run = ZIO.unit
}

Códigos de salida

De forma predeterminada, un run correcto termina con el código 0 y uno fallido, con un código distinto de cero. También puede devolver un ExitCode explícito mediante exitCode.

import zio._

object App extends ZIOAppDefault {
  def run = Console.printLine("done").exitCode
}

Argumentos de la línea de comandos

Acceda a los argumentos del programa con ZIOAppArgs mediante ZIOApp.args o getArgs, que devuelven un Chunk[String].

import zio._

object App extends ZIOAppDefault {
  def run = for {
    args <- getArgs
    _    <- Console.printLine(s"args: ${args.mkString(", ")}")
  } yield ()
}

Gestión de fallos en el límite

Es recomendable gestionar o registrar los errores en el nivel superior para que el runtime muestre un mensaje claro. Use catchAll o tapError en run.

import zio._

object App extends ZIOAppDefault {
  val logic = ZIO.fail("oops")
  def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}

Bifurcación de fibers

Dentro de run puede aplicar fork a los efectos para ejecutarlos de forma concurrente en fibers y posteriormente aplicarles join. El runtime supervisa todos los fibers y los interrumpe durante el cierre.

import zio._

val prog = for {
  fiber  <- ZIO.succeed(40).fork
  result <- fiber.join
  _      <- Console.printLine(s"got $result")
} yield ()

Ejecución manual no segura

Fuera de ZIOAppDefault puede ejecutar un efecto con Unsafe.unsafe y un Runtime, pero esto se reserva para los límites de integración, no para el código habitual de la aplicación.

import zio._

// Unsafe.unsafe { implicit u =>
//   Runtime.default.unsafe.run(myEffect).getOrThrow()
// }

main de Scala básico

Como comparación, un punto de entrada autónomo de Scala. ZIOAppDefault desempeña el papel de main, pero conecta los servicios, la notificación de errores y la supervisión de fibers.

object Main {
  def main(args: Array[String]): Unit = {
    println("Hello, ZIO!")
  }
}

Comprobación rápida

¿Cuál es la forma recomendada de ejecutar una aplicación ZIO?

Repaso

Ha aprendido a ejecutar aplicaciones ZIO:

  • ZIOAppDefault con un efecto run
  • servicios predeterminados y provide de capas
  • códigos de salida, argumentos y gestión de errores en el nivel superior
  • bifurcación de fibers y límites no seguros

Ha completado el curso Fundamentos de ZIO.

Gratis para empezar

Aprende Scala con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
39
Lecciones
143

Preguntas frecuentes

¿La lección «Ejecución de aplicaciones ZIO» es gratis?

Sí — el texto completo de «Ejecución de aplicaciones ZIO» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.

¿Qué aprenderé en «Ejecución de aplicaciones ZIO»?

ZIOAppDefault Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?

No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Ejecución de aplicaciones ZIO»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?

Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El efecto ZIO
  2. Composición de ZIO
  3. Canales de errores y dependencias
  4. Ejecución de aplicaciones ZIO
← Volver a Scala for Backend Engineering & Functional Programming