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
- https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md
- https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-global-scope
- https://blog.jetbrains.com/de/kotlin/2021/05/kotlin-coroutines-1-5-0-released
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: