Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Kotlin — Intermedio

10h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • kotlin

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Dirigido a desarrolladores que ya dominan los fundamentos de Kotlin y buscan consolidar patrones de diseño idiomáticos y técnicas avanzadas del lenguaje en contextos profesionales reales. A lo largo de las diez horas del curso, el participante profundizará en el sistema de tipos —incluyendo tipos nulables, sealed classes e interfaces— aprenderá a transformar código imperativo en estilos funcionales con las APIs de colecciones, diseñará abstracciones reutilizables mediante extension functions y funciones de orden superior, y abordará la concurrencia asíncrona con corrutinas y Flow. Al finalizar, el participante será capaz de escribir código Kotlin más expresivo, seguro frente a nulos y preparado para integrarse en pipelines de datos asíncronos, aplicando criterios razonados de diseño en cada decisión técnica.

  1. Explicar las diferencias conceptuales entre sealed class, interface, object, companion object y clase ordinaria, identificando el propósito que cada construcción cumple dentro del sistema de tipos de Kotlin.
  2. Diseñar jerarquías de tipos que modelen un dominio de negocio acotado y extension functions reutilizables que amplíen módulos sin comprometer su encapsulamiento.
  3. Adaptar código imperativo existente a un estilo funcional sobre colecciones usando map, filter, flatMap y fold, y justificar la elección entre List, MutableList, Sequence y Array según criterios de mutabilidad y evaluación diferida.
  4. Integrar el sistema de tipos nulables y los operadores asociados en flujos de datos reales, eliminando el uso injustificado del operador !!.
  5. Integrar Flow de Kotlin Coroutines en un pipeline de transformación de datos asíncrono, depurando condiciones de carrera y cancelaciones incorrectas en corrutinas para identificar y corregir su causa raíz.
  6. Depurar fallos de serialización y deserialización localizando el error en la definición de data class o en el adaptador correspondiente.

Bloque 1 — Sistema de tipos avanzado Se revisan en profundidad las construcciones que articulan la jerarquía de tipos en Kotlin: sealed class, interface, object y companion object. El participante analizará escenarios concretos de modelado de dominio, comparará cada opción frente a las clases ordinarias y tomará decisiones razonadas sobre cuál aplicar en función de la semántica del problema. Se presta especial atención al uso de when exhaustivo sobre jerarquías selladas como mecanismo de seguridad en tiempo de compilación.

Bloque 2 — Nulabilidad y seguridad de tipos Se examina el sistema de tipos nulables de Kotlin como herramienta de diseño, no solo como salvaguarda. El participante integrará los operadores ?., ?:, let y run en flujos de datos reales, aprenderá a reconocer los contextos en que el operador !! resulta justificado y eliminará su uso indiscriminado mediante refactorizaciones guiadas.

Bloque 3 — Programación funcional con colecciones El bloque cubre la transformación de código imperativo hacia un estilo funcional haciendo uso de map, filter, flatMap y fold sobre las APIs estándar de colecciones. Paralelamente, se estudia cómo seleccionar la estructura de datos adecuada —List, MutableList, Sequence o Array— atendiendo a criterios de mutabilidad, rendimiento y evaluación diferida, con ejercicios que confrontan al participante con tres contextos de uso distintos.

Bloque 4 — Extensibilidad y diseño funcional del módulo Se trabaja el diseño de extension functions y funciones de orden superior como mecanismo para enriquecer módulos existentes sin modificar su visibilidad interna. El participante construirá una pequeña biblioteca de utilidades para un módulo dado y evaluará la legibilidad y mantenibilidad del resultado frente a alternativas basadas en herencia.

Bloque 5 — Concurrencia asíncrona: corrutinas y Flow El bloque introduce los problemas más frecuentes en el uso de corrutinas —condición de carrera, cancelación incorrecta y fuga de scope— y proporciona estrategias de depuración sistemática. A continuación, se integra Flow como abstracción para pipelines de transformación de datos asíncronos, diferenciando cuándo una suspend fun simple es suficiente y cuándo la naturaleza reactiva de Flow aporta valor real.

Bloque 6 — Serialización y depuración de datos Se analiza el ciclo de vida de la serialización y deserialización con kotlinx.serialization y Gson, prestando atención a los errores más habituales derivados de una data class mal anotada o de un adaptador incorrectamente configurado. El participante practica la localización de fallos a partir de trazas de error reales y aplica correcciones concretas en el código.

  • JDK 17 o superior instalado y configurado en la variable JAVA_HOME.
  • IntelliJ IDEA Community Edition 2023.3 o superior (recomendado) o cualquier IDE con soporte oficial para Kotlin.
  • Plugin de Kotlin actualizado a la versión 1.9.x o superior.
  • Gradle 8.x para la gestión de dependencias de los proyectos de práctica.
  • Dependencias de proyecto: kotlinx-coroutines-core ≥ 1.7, kotlinx-serialization-json ≥ 1.6 y, opcionalmente, Gson ≥ 2.10 para el bloque de serialización.
  • Conexión a internet para la descarga inicial de dependencias mediante Gradle.

El participante debe haber completado el curso KOT01 — Kotlin Iniciación o demostrar dominio equivalente de los siguientes contenidos: sintaxis básica de Kotlin (variables, funciones, clases y data class), uso elemental de lambdas y la biblioteca estándar de colecciones, comprensión básica del sistema de tipos nulables y experiencia mínima con algún entorno de construcción como Gradle o Maven.