Automatización en Kotlin: por qué vale la pena prestarle atención
¿Alguna vez ha perdido una hora renombrando cien archivos, analizando registros manualmente o copiando datos de una API a otra? Un dolor familiar. Normalmente, para estas tareas recurrimos a Python o Bash, pero Kotlin es una herramienta inesperadamente potente y elegante para la automatización en Kotlin. Combina la concisión de un lenguaje moderno con el rendimiento de la JVM y acceso completo al ecosistema de Java.
En este artículo no escribiremos otro «Hola, Mundo». Iremos directo al grano: analizaremos ejemplos de código Kotlin que realmente serán útiles en el trabajo diario de un desarrollador, administrador de sistemas o tester. Aprenderá a escribir scripts Kotlin para trabajar con archivos, enviar solicitudes HTTP, analizar datos y ejecutar comandos del sistema. ¡Allá vamos!
¿Por qué Kotlin y no Python o Bash?
Cada lenguaje tiene su nicho. Bash es ideal para comandos rápidos de una línea, Python para lógica compleja y ciencia de datos. Pero Kotlin para automatización ofrece varias ventajas únicas:
- Seguridad de tipos. No obtendrá un error «string vs int» en tiempo de ejecución; el compilador lo detectará al inicio.
- Compatibilidad total con Java. Cualquier biblioteca de Java (Apache POI, OkHttp, Jackson) está disponible de inmediato.
- Kotlin Script (.kts). Puede escribir scripts sin compilación; ejecútelos como un archivo .sh normal.
- Sintaxis concisa. Menos código repetitivo, más legibilidad.
Configuración del entorno para scripts Kotlin
Para ejecutar scripts Kotlin no es necesario instalar Android Studio. Basta con:
- Instalar el compilador de Kotlin (o SDKMAN).
- Crear un archivo con extensión
.kts. - Ejecutar con el comando:
kotlinc -script script.kts
Listo. Ahora escribamos el primer script realmente útil.
Ejemplo 1: Renombrado masivo de archivos
Imagine: tiene una carpeta con fotos IMG_001.jpg, IMG_002.jpg ... IMG_100.jpg. Necesita renombrarlas a holiday_01.jpg, holiday_02.jpg .... A mano: 10 minutos. Con un script: 2 segundos.
import java.io.File
fun main() { val folder = File("/ruta/a/fotos") val files = folder.listFiles()?.filter { it.extension == "jpg" } ?: return
files.sorted().forEachIndexed { index, file -> val newName = "holiday_${index.toString().padStart(2, '0')}.jpg" val newFile = File(folder, newName) file.renameTo(newFile) println("Renombrado: ${file.name} -> $newName") }}
// Ejecución: kotlinc -script rename.ktsEste ejemplo de código Kotlin hace tres cosas: filtra solo archivos JPG, ordena por nombre (para no perder el orden) y renombra con numeración. Observe padStart, una característica elegante de Kotlin para formatear números.
Ejemplo 2: Solicitud HTTP y análisis JSON
A menudo es necesario automatizar la recopilación de datos de una API web. Supongamos que obtenemos una lista de usuarios y la guardamos en CSV. En Kotlin para automatización esto se hace en pocas líneas con la biblioteca ktor-client (o el clásico java.net.HttpURLConnection).
Pero para un script es más fácil conectar una biblioteca externa mediante @file:DependsOn:
@file:DependsOn("com.google.code.gson:gson:2.10.1")@file:DependsOn("io.ktor:ktor-client-core:2.3.7")@file:DependsOn("io.ktor:ktor-client-java:2.3.7")
import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*import com.google.gson.Gsonimport com.google.gson.reflect.TypeTokenimport java.io.File\