Kotlin-Updates: kotlinx.coroutines 1.5

Im vierten Teil der Kotlin-Updates-Serie geht es um die Bibliothek kotlinx.coroutines, die bei der Programmierung asynchronen Codes zum Einsatz kommt. In meinem Kotlin-Buch habe ich mich auf Version 1.3.9 bezogen, inzwischen gibt es Version 1.5. Soviel vorweg: Es gibt zwar viele Änderungen, diese betreffen die Einführungsbeispiele aus Kapitel 17 aber nicht und sind nur für Entwickler relevant, die fortgeschrittene Funktionen der Bibliothek nutzen.

Dieser Text bezieht sich auf die folgenden Versionsnummern:

IntelliJ: 2021.1
Kotlin: 1.5.20
kotlinx.coroutines: 1.5
Gradle: 6.8

Gradle

Eine minimale build-gradle-Datei können Sie nach dem folgenden Muster aufbauen:

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.5.20'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
    mavenCentral()
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0'
}
compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

GlobalScope-Warnung

Beim Beispielprojekt hello-coroutines zeigt IntelliJ bei der Verwendung von GlobalScope mehrfach die folgende Warnung an:

This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.

Die Dokumentation zur Klasse warnt davor, dass derart gestartete asynchrone Methoden unlimitiert laufen. Daraus ergibt sich die Gefahr, dass das Programm unnötig Speicherplatz und die CPU blockiert (memory and resource leaks). Die Dokumentation empfiehlt, asynchrone Methoden mit suspend zu markieren und direkt bzw. im Kontext eines Objekts auszuführen.

All diese Warnungen treffen natürlich vollkommen zu. Im Beispielprojekt hello-coroutines geht es aber ausschließlich darum, diverse Programmiertechniken zu zeigen, ohne den Code durch eine echte Anwendung im Kontext eines Android-, Ktor-, Datenbank-Programms unnötig kompliziert zu machen. Daher können Sie die Warnungen in diesem Fall ignorieren.

Quellen/Links

Download

Die aktualisierten Beispielprojekte zu Kapitel 17 können Sie hier herunterladen:

https://kofler.info/uploads/kotlin/kap17.zip

Die Kotlin-Updates-Serie

Weitere Kotlin-Update-Artikel finden Sie hier auf meiner Website:

https://kofler.info/tag/kotlin-updates