Frameworks CLI para Kotlin: Clikt, kotlinx-cli, picocli — revisión y comparación

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Frameworks CLI para Kotlin: creando potentes aplicaciones de consola



Kotlin es un lenguaje moderno que no solo es ideal para Android o desarrollo backend, sino también para crear aplicaciones de consola (CLI). Para no tener que escribir el análisis de argumentos manualmente, existen frameworks especializados. En este artículo analizaremos las tres soluciones más populares: Clikt, kotlinx-cli y picocli. Conocerás sus características, verás ejemplos de código y podrás elegir la herramienta adecuada para tu proyecto.



¿Por qué necesito un framework CLI?

Crear utilidades de línea de comandos es una tarea que se vuelve compleja rápidamente: hay que manejar flags, opciones, argumentos posicionales y mostrar ayuda. La implementación manual conduce a errores y duplicación de código. Los frameworks ofrecen mecanismos listos para usar:

  • Descripción declarativa de la interfaz de comandos
  • Generación automática de ayuda (--help)
  • Validación de entrada
  • Soporte para subcomandos (estilo git)
  • Seguridad de tipos


1. Clikt — el framework más "kotliniano"

Clikt (https://github.com/ajalt/clikt) es una biblioteca pura de Kotlin que utiliza DSL y propiedades delegadas. No depende de anotaciones Java y ofrece una API intuitiva.



Instalación

// build.gradle.ktsimplementation("com.github.ajalt.clikt:clikt:4.2.2")


Ejemplo: calculadora simple

import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.optionimport com.github.ajalt.clikt.parameters.types.int

class Calc : CliktCommand() { val a: Int by argument() val b: Int by argument() val multiply by option("--mult", "-m", help = "Multiplicar, no sumar").flag()

override fun run() { val result = if (multiply) a * b else a + b echo("Resultado: $result") }}

fun main(args: Array<String>) = Calc().main(args)


Ejecución: kotlin calc 5 3 --mult → Resultado: 15.



Ventajas de Clikt:

  • Integración completa con Kotlin (DSL, delegados)
  • Potente sistema de validación (validadores personalizados)
  • Soporte para subcomandos de cualquier profundidad
  • Generación automática de páginas man
  • Comunidad activa y actualizaciones frecuentes


2. kotlinx-cli — solución ligera de JetBrains

kotlinx-cli es una biblioteca experimental que forma parte del ecosistema Kotlin. Es minimalista y adecuada para utilidades pequeñas.



Instalación

// build.gradle.ktsimplementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")


Ejemplo: saludo

import kotlinx.cli.*

fun main(args: Array<String>) { val parser = ArgParser("greet") val name by parser.option(ArgType.String, shortName = "n", description = "Nombre") .default("mundo") val times by parser.option(ArgType.Int, shortName = "t", description = "Número de veces") .default(1)

parser.parse(args)

repeat(times) { println("¡Hola, $name!") }}


Ejecución: kotlin greet -n Kotlin -t 2 → ¡Hola, Kotlin! (dos veces).



Características de kotlinx-cli:

  • API muy simple — mínimo código
  • Soporte para tipos básicos (String, Int, Boolean)
  • No es adecuado para jerarquías de comandos complejas
  • Estado experimental (la API puede cambiar)
  • Sin validación ni sugerencias integradas


3. picocli — framework potente con raíces Java

picocli es un framework popular que funciona tanto con Java como con Kotlin. Utiliza anotaciones, pero tiene soporte especial para Kotlin DSL.

Recommendations