El poder de Kotlin Script API (main.kts)

Escrito por Lyoneel el en kotlin
 3 mins

El poder de Kotlin Script API (main.kts)

Descubriendo un diamante en bruto y sus posibilidades

¿Qué es Kotlin Script API?

Es una API experimental de Kotlin que permite correr código Kotlin como su fuera un script. Compila en el aire, usa una herramienta de compilación en segundo plano, y necesita una configuración mínima para que funcionar.

Hay variantes de kotlin scripts, aquí haremos foco en la variante “main.kts”.

Características clave

  • Standalone: Corre el código Kotlin directamente sin necesidad de un proyecto completo con Maven o Gradle.
  • Simplicidad: No necesita una clase y un método main para ejecutarse, escribe tu código procedural y listo.
  • Interoperable: Puede utilizar librerías estándar de Java y Kotlin, y ademas dependencias externas.
  • No todas las características están disponibles: No todas las características y APIs funcionan en los scripts
  • y no se sabe si lo estarán en el futuro.

¿Cómo creo esos scripts?

Aprendamos a través de ejemplos:

Hello World básico

1#!/usr/bin/env kotlin
2
3print("Hello world")

Hello World con parámetros y dependencias

 1@file:DependsOn("org.jetbrains.kotlinx:kotlinx-html-jvm:0.8.0")
 2
 3import kotlinx.html.*
 4import kotlinx.html.stream.createHTML
 5
 6val firstArg = args.firstOrNull() ?: "World"
 7
 8print(createHTML().html {
 9    body {
10        h1 { +"Hello, $firstArg!" }
11    }
12})

Hello World con parámetros y configuración compleja

 1@file:Repository("https://repo.maven.apache.org/maven2/")
 2@file:CompilerOptions("-opt-in=kotlin.RequiresOptIn")
 3@file:DependsOn("org.jetbrains.kotlinx:kotlinx-html-jvm:0.8.0")
 4
 5import kotlinx.html.*
 6import kotlinx.html.stream.createHTML
 7
 8val firstArg = args.firstOrNull() ?: "World"
 9
10print(createHTML().html {
11    body {
12        h1 { +"Hello, $firstArg!" }
13    }
14})

Como se puede apreciar no hay clases, ni funciones main, es solo código procedural. Internamente, autogenera el método main, pero es invisible al desarrollador.

¿Cómo puedo correr los scripts?

Kotlin compiler

Se necesita tener en el sistema kotlin compiler:

  • Linux: En la mayoría de las distros se puede instalar como kotlin usando el gestor de paquetes.
  • Windows: Descarga kotlin-compiler de Github releases , descomprimir el archivo a la carpeta deseada, y agregar la carpeta bin, donde encontrarás kotlinc.bat, al PATH del usuario o sistema, luego reinicia tu terminal.
  • Mac: No tengo idea, quizá brew?

Correr el script

Una vez instalado kotlin compiler, en Linux/Mac necesitas asegurarte de the el shebang está correctamente definida #!/usr/bin/env kotlin en la primera línea de tu archivo.

Ejecuta el siguiente comando dependiendo de tu sistema operativo/terminal:

Linux/Mac:

./my-script.main.kts

Windows CMD:

kotlinc.bat -script my-script.main.kts

Windows Powershell:

.\kotlinc.bat -script my-script.main.kts

Información adicional

Arranqué este artículo diciendo que iba a hablar de una variante de Kotlin Scripts API, los demás son:

  • Scripts básicos Kotlin (.kts en lugar de .main.kts): es para scripts simples, no tiene soporte para dependencias externas.
  • Kotlin Jupyter (Interactive Notebooks) : Esto no es parte de Script API, pero funciona de manera similar.

Script API tiene puede actuar como host para ejecutar scripts dentro de aplicaciones existentes .

Mantente al día

Se pueden ver los updates del progreso de Kotlin Script API en este ticket, al momento de escribir, las mejoras son lentas, pero van avanzando: https://youtrack.jetbrains.com/issue/KT-49511


Gracias por leer!

Namaste.