14. Pour aller plus loin
Ce document a présenté le langage Kotlin et les bibliothèques les plus utilisées pour écrire, sur la machine virtuelle Java, des applications en couches, des clients et serveurs réseau et des services web. Voici les principaux thèmes qui le prolongent.
14.1. Le traitement des documents XML
Le JSON a largement remplacé XML pour les échanges de données, mais XML reste présent (fichiers de configuration, formats de documents, services SOAP existants). Kotlin utilise directement les API XML du JDK, dans le paquetage [javax.xml] :
- DOM ([DocumentBuilder], [Document], [Element]) : le document est chargé en mémoire sous forme d'arbre, que l'on parcourt et modifie ;
- StAX ([XMLStreamReader], [XMLStreamWriter]) : le document est lu ou écrit au fil de l'eau, sans être chargé entièrement en mémoire ;
- XPath ([javax.xml.xpath]) pour interroger un document, et XSLT ([javax.xml.transform]) pour le transformer.
Hors du JDK, Jackson sait lire et écrire du XML avec son module [jackson-dataformat-xml], comme il le fait pour JSON (chapitre 5), et la bibliothèque kotlinx.serialization de JetBrains, qui génère le code de sérialisation à la compilation, dispose elle aussi de formats XML développés par la communauté.
14.2. Les applications web
Le chapitre 13 ne présente que les services web (des applications qui produisent des données). Pour les applications web qui produisent des pages HTML, ou pour d'autres façons d'écrire des services web en Kotlin, on dispose notamment de :
- Spring MVC avec un moteur de modèles comme Thymeleaf : des pages générées côté serveur. Spring prend Kotlin en charge au même titre que Java (classes de données, coroutines dans les contrôleurs, DSL Kotlin pour la configuration des routes) ; l'auteur a écrit le cours Introduction étape par étape au framework web Spring MVC (septembre 2026) ;
- Ktor, le cadriciel web de JetBrains, écrit en Kotlin et pour Kotlin : serveurs et clients HTTP construits sur les coroutines du chapitre 9, configurés par du code Kotlin plutôt que par des annotations ;
- d'autres cadriciels de la JVM qui prennent Kotlin en charge : Quarkus, Micronaut, Javalin, et les serveurs d'applications Jakarta EE ;
- des interfaces écrites en JavaScript (Vue.js, Angular, React) qui consomment des services web Kotlin ; l'auteur a écrit le cours Introduction étape par étape au framework Vue.js (septembre 2026). Kotlin peut lui-même être compilé en JavaScript (Kotlin/JS) ou en WebAssembly (Kotlin/Wasm), ce qui permet d'écrire aussi la partie cliente en Kotlin.
14.3. Les applications mobiles et de bureau
Ce document ne présente pas les interfaces graphiques : les applications de gestion s'écrivent aujourd'hui le plus souvent avec des interfaces web. Mais c'est un domaine où Kotlin est très présent :
- sur Android, Kotlin est le langage recommandé par Google, et l'interface s'écrit avec Jetpack Compose, une bibliothèque déclarative entièrement écrite en Kotlin ; les coroutines (chapitre 9) y servent à garder l'interface réactive pendant les accès au réseau ou aux bases de données ;
- Compose Multiplatform, de JetBrains, reprend Compose pour écrire des interfaces de bureau (Windows, Linux, macOS), iOS et web avec le même code ;
- plus généralement, Kotlin Multiplatform permet de partager le code métier (les couches [metier] et [dao] du chapitre 6, par exemple) entre la JVM, Android, iOS (par Kotlin/Native, qui produit du code machine sans machine virtuelle) et le web ;
- sur la JVM, les bibliothèques Java Swing et JavaFX restent utilisables depuis Kotlin. Les notions des chapitres 7 (écouteurs d'événements) et 9 (revenir sur le thread de l'interface graphique avec [Dispatchers.Main]) s'y appliquent directement.
14.4. Les tests
Le chapitre 6 présente JUnit et [kotlin.test]. On les complète souvent par :
- Kotest, un cadriciel de tests écrit pour Kotlin, avec plusieurs styles d'écriture des tests et une riche bibliothèque d'assertions ([liste shouldHaveSize 7]) ;
- MockK, la bibliothèque de « doublures » (objets simulés) des couches dont dépend la couche testée, conçue pour Kotlin (classes finales, objets, fonctions de suspension) ; Mockito reste utilisable ;
- kotlinx-coroutines-test, qui exécute les tests de code à base de coroutines avec un temps virtuel : un [delay(10_000)] y passe instantanément ;
- Testcontainers, qui lance une vraie base de données (MySQL, PostgreSQL…) dans un conteneur Docker le temps des tests d'intégration ;
- les outils de test de Spring Boot ([@SpringBootTest], [MockMvc]) pour tester un service web sans le déployer.
14.5. Les performances
Un programme Kotlin est exécuté par la machine virtuelle Java : il bénéficie de sa compilation à la volée et de ses optimisations pendant l'exécution, avec des performances équivalentes à celles d'un programme Java. Parmi les outils qui vont plus loin :
- l'outil JMH (« Java Microbenchmark Harness »), utilisable en Kotlin directement ou par le greffon Gradle kotlinx-benchmark, pour mesurer précisément les performances d'un code en tenant compte du préchauffage de la machine virtuelle ;
- JDK Flight Recorder et JDK Mission Control, qui enregistrent et analysent le comportement d'un programme en production ; IntelliJ IDEA intègre un profileur et un débogueur de coroutines ;
- la compilation anticipée en code natif avec GraalVM Native Image : un exécutable autonome qui démarre en quelques millisecondes, au prix de restrictions sur la réflexion ; Spring Boot et Quarkus savent produire de tels exécutables à partir de code Kotlin ;
- le choix du ramasse-miettes (G1 par défaut, ZGC pour des pauses très courtes sur de gros tas mémoire).
14.6. Le déploiement
Un programme Kotlin se déploie comme un programme Java : sous forme d'archive [.jar] exécutée par un JDK installé sur le poste ([java -jar application.jar]), à condition d'y joindre la bibliothèque standard de Kotlin (c'est ce que font les scripts produits par [gradlew installDist], chapitre 2 ; Spring Boot produit un [.jar] autonome qui contient toutes ses bibliothèques), sous forme d'application autonome qui embarque une machine virtuelle réduite à ce dont elle a besoin (outils [jlink] et [jpackage] du JDK), ou dans un conteneur Docker (Spring Boot produit directement une image de conteneur par [gradlew bootBuildImage]).
14.7. Les ressources
- le site officiel de Kotlin, avec sa documentation, ses tutoriels et les pages « What's new » de chaque version : https://kotlinlang.org ;
- le bac à sable en ligne Kotlin Playground, pour essayer du code Kotlin dans un navigateur ;
- les exercices Kotlin Koans, proposés sur le site de Kotlin et dans IntelliJ IDEA ;
- les propositions d'évolution du langage (KEEP), pour suivre les nouveautés des versions à venir : https://github.com/Kotlin/KEEP ;
- le code source du compilateur et de la bibliothèque standard, sur GitHub : https://github.com/JetBrains/kotlin, et celui des coroutines : https://github.com/Kotlin/kotlinx.coroutines ;
- la documentation de l'API Java SE 25, pour les classes du JDK utilisées depuis Kotlin : https://docs.oracle.com/en/java/javase/25/docs/api/ ;
- les ouvrages « Kotlin in Action » (Manning) et « Effective Kotlin » de Marcin Moskała, et, pour la concurrence sur la JVM, « Java Concurrency in Practice » de Brian Goetz et al. (Addison-Wesley).