Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Kotlin — Avanzado

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 con dominio sólido de Kotlin que buscan llevar su práctica profesional al nivel de diseño arquitectónico y optimización sistémica. A lo largo de diez horas, el participante aborda los mecanismos más avanzados del lenguaje y su ecosistema: construirá sistemas de procesamiento asíncrono con Flow frío y caliente aplicando operadores de contrapresión, diseñará DSLs tipadas con funciones con receptor y @DslMarker, y evaluará el impacto real en bytecode JVM de las funciones inline, reified y crossinline. También aprenderá a detectar y eliminar cuellos de botella en corrutinas concurrentes con herramientas de profiling, a anticipar y neutralizar condiciones de carrera seleccionando el mecanismo de sincronización correcto, y a comparar críticamente estrategias de gestión de errores tipados para casos de negocio reales. Al finalizar, el participante será capaz de tomar decisiones de diseño fundamentadas en métricas, aplicar análisis estático avanzado en pipelines de CI y estructurar proyectos multi-módulo con compilación incremental optimizada.

  1. Describir las diferencias estructurales entre Flow frío y caliente, los operadores de contrapresión disponibles y los principios que rigen la sincronización entre corrutinas concurrentes.
  2. Diseñar una DSL tipada con funciones con receptor, builders anidados y @DslMarker, garantizando seguridad en tiempo de compilación.
  3. Optimizar el rendimiento de corrutinas concurrentes identificando cuellos de botella mediante perfiles de CPU y memoria, y eliminándolos con cambios justificados en la estructura de dispatchers y scopes.
  4. Evaluar el impacto en bytecode JVM de funciones inline, reified y crossinline, comparando métricas de tamaño de artefacto y overhead de invocación frente a alternativas equivalentes.
  5. Anticipar condiciones de carrera en estructuras de datos compartidas entre corrutinas, seleccionar el mecanismo de sincronización adecuado (Mutex, Channel, Actor) y validar la ausencia de deadlocks bajo pruebas de carga.
  6. Evaluar críticamente tres estrategias de gestión de errores tipados (sealed class, Result, Either de Arrow-kt) documentando sus trade-offs y seleccionando la más adecuada para un caso de negocio concreto.
  7. Arquitecturar un sistema de procesamiento de eventos asíncrono y un módulo multiplatforma (KMP), integrando además reglas Detekt personalizadas en CI para la detección automática de antipatrones Kotlin.

Bloque 1 — Flow avanzado y gestión de contrapresión. Se estudia en profundidad la diferencia conceptual y práctica entre Flow frío y caliente (SharedFlow, StateFlow), los operadores de contrapresión (buffer, conflate, collectLatest) y los criterios de rendimiento que justifican la elección de cada uno. Los participantes arquitecturan un sistema de procesamiento de eventos asíncrono completo, razonando sobre cada decisión de diseño.

Bloque 2 — Concurrencia segura y sincronización. Se analizan los patrones de concurrencia problemáticos más frecuentes en proyectos Kotlin: bloqueos en dispatcher, leaks de scope y condiciones de carrera en datos compartidos. El bloque cubre la selección fundamentada entre Mutex, Channel y el modelo Actor, e incluye técnicas de prueba de carga para validar la ausencia de deadlocks. Se conecta con la optimización de rendimiento de corrutinas mediante profiling con YourKit y Android Profiler, haciendo hincapié en la lectura e interpretación de métricas de CPU y memoria.

Bloque 3 — Metaprogramación y bytecode JVM. Se examina el funcionamiento interno de las funciones inline, reified y crossinline, evaluando su impacto en el bytecode generado con métricas concretas de tamaño de artefacto y overhead de invocación. A continuación se aborda el diseño de DSLs tipadas mediante funciones con receptor y builders anidados, utilizando @DslMarker para prevenir ambigüedades de scope en tiempo de compilación.

Bloque 4 — Gestión de errores tipados. Se comparan en detalle tres estrategias para modelar errores en dominios complejos: sealed class jerárquicas, el tipo Result estándar y Either de la librería Arrow-kt. A partir de un caso de negocio concreto, los participantes documentan los trade-offs de cada enfoque (expresividad, interoperabilidad, coste cognitivo) y justifican la elección final.

Bloque 5 — Calidad, tooling y escalabilidad del proyecto. Se integran reglas Detekt personalizadas en pipelines de CI para la detección automática de antipatrones (bloqueos en dispatcher, leaks de corrutinas, shadowing de scope). Seguidamente se aborda la arquitectura de módulos multiplatforma (KMP): distribución de lógica de dominio en commonMain, implementación de adaptadores en source sets específicos y gestión de las limitaciones de interoperabilidad con Swift y JavaScript. El bloque cierra con estrategias de optimización del tiempo de compilación incremental en proyectos multi-módulo: decoupling de API/implementación, opciones avanzadas del compilador (-Xbackend-threads) y configuración de caché de Gradle.

  • JDK 17 o superior instalado y configurado como JDK de proyecto.
  • IntelliJ IDEA 2024.1+ (Community o Ultimate) con el plugin de Kotlin actualizado a la versión estable más reciente (≥ 2.0).
  • Gradle 8.x con Kotlin DSL habilitado.
  • Plugin de Detekt instalado en el IDE y disponible como dependencia de Gradle en el proyecto de práctica.
  • Acceso a YourKit JVM Profiler (licencia de evaluación de 15 días es suficiente) o Android Studio con Android Profiler habilitado, según el entorno objetivo del participante.
  • Repositorio de prácticas clonado localmente (se facilitará la URL antes del inicio del curso); requiere conexión a internet para la resolución de dependencias Maven Central y la descarga de targets KMP (Kotlin/Native toolchain).
  • Memoria RAM mínima recomendada: 16 GB (los builds multi-módulo con KMP pueden requerir hasta 8 GB de heap de Gradle).
  • Manejo fluido de corrutinas Kotlin: suspend, CoroutineScope, launch/async, dispatchers y manejo básico de excepciones con CoroutineExceptionHandler.
  • Uso práctico de Flow estándar: creación con flow { }, operadores intermedios (map, filter, flatMapMerge) y colección con collect.
  • Conocimiento sólido del sistema de tipos de Kotlin: genéricos, varianza (in/out), funciones de extensión y lambdas con receptor.
  • Familiaridad con la estructura de proyectos multi-módulo en Gradle (Kotlin DSL) y con las fases básicas del compilador Kotlin.
  • Experiencia mínima con al menos una herramienta de análisis estático (Detekt, ktlint) y con la configuración de un pipeline de CI (GitHub Actions, GitLab CI o equivalente).