Asynchronous or non-blocking programming is the new reality. When creating server-side, desktop or mobile applications, it's important to provide an experience that is not only fluid from the user's perspective, but scalable when needed.
Kotlin solves this problem in a flexible way by providing coroutine support at the language level and delegating most of the functionality to libraries.
As a bonus, coroutines not only open the doors to asynchronous programming, but also provide a wealth of other possibilities such as concurrency and actors.
How to start
New to Kotlin? Take a look at the Getting started page.