Le style asynchrone diffère le plus : coroutines Kotlin et suspension de la compilation vers les rappels/machines à états ; Java utilise traditionnellement des threads, des pools de threads, CompletableFuture (Java 8) et, depuis Java 21, les threads virtuels rendent le code bloquant bon marché à grande échelle. Même objectif : ne pas gaspiller les threads du système d'exploitation en attendant.
Kotlin : suspension et coroutines