Qu'est-ce que la bibliothèque standard Kotlin ?
La bibliothèque standard Kotlin (kotlin-stdlib) est un ensemble de modules intégrés au langage qui fournissent aux développeurs des solutions prêtes à l'emploi pour les tâches quotidiennes. Contrairement à Java, où de nombreuses choses doivent être écrites manuellement ou nécessitent des bibliothèques tierces, Kotlin propose des outils intégrés puissants pour travailler avec les collections, les chaînes, les flux, les coroutines et la sérialisation. La bibliothèque est entièrement compatible avec Java, tout en étendant ses capacités, rendant le code plus concis et plus sûr.
Modules principaux de la bibliothèque standard
- kotlin-stdlib — le noyau de la bibliothèque : collections, ranges, sequences, fonctions standard (let, apply, also, run).
- kotlinx-coroutines — prise en charge de la programmation asynchrone via les coroutines.
- kotlinx-serialization — sérialisation/désérialisation en JSON, Protobuf et autres formats.
- kotlin-test — outils pour les tests unitaires.
- kotlin-reflect — réflexion et manipulation des types à l'exécution.
Collections et séquences
L'un des points forts de Kotlin est la gestion des collections. La bibliothèque propose à la fois des collections mutables et immutables. Toutes les opérations de base (filtrage, transformation, regroupement) sont implémentées sous forme de fonctions d'extension.
Exemple : travailler avec des listes
val numbers = listOf(1, 2, 3, 4, 5, 6)val evenSquares = numbers .filter { it % 2 == 0 } .map { it * it } .sortedDescending()println(evenSquares) // [36, 16, 4]Dans cet exemple, nous utilisons une chaîne d'appels : filtrage, transformation et tri. Toutes les opérations sont exécutées paresseusement jusqu'à l'appel d'une opération terminale (dans ce cas, l'impression). Pour les grands ensembles de données, il est recommandé d'utiliser Sequence.
Séquences pour les calculs paresseux
val largeList = (1..1_000_000).toList()val result = largeList.asSequence() .filter { it % 2 == 0 } .map { it * 2 } .take(10) .toList()println(result) // [4, 8, 12, 20, 24, 28, 32, 36, 40]Contrairement aux collections classiques, Sequence ne crée pas de listes intermédiaires, ce qui économise de la mémoire lors du traitement de grands volumes de données.
Coroutines : l'asynchrone sans douleur
Le module kotlinx-coroutines est la méthode standard pour travailler avec du code asynchrone en Kotlin. Il remplace les callbacks et RxJava, offrant une syntaxe séquentielle simple.
Exemple simple de coroutine
import kotlinx.coroutines.*
fun main() = runBlocking { val result = async { delay(1000L) "Terminé !" } println("Attente...") println(result.await()) // "Terminé !" après 1 seconde}Concepts clés :
runBlocking— bloque le thread actuel jusqu'à la fin de la coroutine (utilisé dans main).async— lance une coroutine et retourne unDeferred(analogue à Future).await— suspend la coroutine jusqu'à l'obtention du résultat.
Concurrence structurée
fun main() = runBlocking { launch { repeat(3) { i -> delay(500L) println("Tâche $i terminée") } } println("La coroutine principale continue son travail")}Grâce à la concurrence structurée, toutes les coroutines enfants se terminent automatiquement lorsque la coroutine parente se termine. Cela évite les fuites de mémoire et rend le code prévisible.
Sérialisation des données (kotlinx.serialization)
Le module kotlinx-serialization permet de convertir des objets Kotlin en JSON, XML, Protobuf et d'autres formats sans utiliser la réflexion. La sérialisation fonctionne à la compilation, ce qui la rend rapide et
Aussi dans la bibliothèque
ORM pour TypeScript : comparaison de TypeORM, Prisma et MikroORM
Générateur de QR codes en Swift : bibliothèque EFQRCode pour iOS et macOS
Clap — un puissant framework CLI pour Rust