Kotlin 1.9.0

kotlin 1.9.0

Kotlin 1.9.0

Kotlin 1.9.0 ya es estable y viene con novedades muy interesantes. La más llamativa es que K2, el nuevo compilador, que ya está en fase beta.

Este contenido está restringido.
Adquiere alguna formación.
O suscríbete para difrutar de los audios y vídeos exclusivos de Los androides Premium.

K2

Como te contaba arriba, esto probablemente sea lo más destacado. Y es que la nueva versión del compilador de Kotlin sigue mejorando en su estabilidad, y ya está en fase beta. Con lo que si no lo has hecho aún, quizá ya sea un buen momento para probarlo a ver qué tal.

Para ello, basta con que añadas esta línea dentro de tu gradle.properties:

kotlin.experimental.tryK2=true

O también puedes pasarlo como parámetro si quieres simplemente probarlo sin modificar ningún fichero.

./gradlew assemble -Pkotlin.experimental.tryK2=true

Gradle build reports

Y si eres de los que usan Gradle Enterprise para analizar las builds y demás, ahora podrás ver con qué versión del lenguaje se ha hecho la compilación. Vamos, que si se ha usado Kotlin 1 o Kotlin 2. 💡

Limitaciones

Si en tu proyecto usas una versión de Gradle por debajo de la 8.3, hay ciertas limitaciones aún. Y de hecho, a fecha que estoy escribiendo esto, la última versión oficial es la 8.2. Con lo que pasito a pasito. 😉

Lenguaje

Entries

Ya de manera estable, entries sustituye a values() en las enum classes.

Esto hace que a grandes rasgos, en lugar de obtener un array, tengamos un listado. Y ya se han encargado de optimizar todo esto a nivel de performance.

Ejemplo:

enum class Foo {
    ONE,
    TWO,
    THREE
}

fun main() {
    val values: Array<Foo> = Foo.values()
    val entries: EnumEntries<Foo> = Foo.entries
}

Data Objects

Los data objects, de los que te hablé en la novedades en la versión 1.7.0 del lenguaje, ya son estables.

Soporte para constructores secundarios con body en las Inline values classes

☝🏼¡Toma encabezado! La verdad es que uno ya no sabe si está escribiendo en castellano, en inglés, o en algo raro… espero que se entienda. 😄

A ver, te lo pongo con un ejemplo para tratar de explicarme:

@JvmInline
value class Androide(
    private val subscriptionState: SubscriptionState
) {

    constructor(isPremium: Boolean) : this(
        if (isPremium) {
            SubscriptionState.SUBSCRIBED
        } else {
            SubscriptionState.NOT_SUBSCRIBED
        }
    ) {
        check(isPremium) {
            "The androide is premium."
        }
    }
}

enum class SubscriptionState {
    SUBSCRIBED,
    NOT_SUBSCRIBED
}

Antes de la versión 1.9 de Kotlin, no podíamos añadirle el body al constructor secundario (te saltaba un error de compilación). Lo que aquí pone como:

check(isPremium) {
    "The androide is premium."
}

Y si todo esto te parece un lío, quédate con que la idea es que ahora es más versátil. 😉

Conclusiones

Esto no son todas las novedades en esta release de Kotlin. Puedes echar un vistazo a la fuente oficial. Y de hecho esto es así, porque lo que pretendo es darte el contenido curado con lo que yo considero que es más relevante. Y es que menos, es más. 💪🏼

Si hay alguna cosa que crees que sí se debería tocar, algo que consideres que debería explicar mejor, o que me haya equivocado, no dudes en hacérmelo saber.

Para eso tenemos nuestra comunidad de Desarrolladores Android en Discord en la que nos ayudamos mutuamente. 🚀

Por cierto, ¿has visto ya la entrevista a Philipp Lackner?

Publicado: 2023-07-10 Actualizado: 2023-07-16