Kotlin is a modern programming language that makes developers happier. Initially started as language to run on the JVM, it quickly gained popularity among Android developers, and got another boost as Google made it the default programming language for Android.

Useful language features / libraries

Kotlin Coroutines

Asynchronous or non-blocking programming is the new reality. Whether we're creating server-side, desktop or mobile applications, it's important that we provide an experience that is not only fluid from the user's perspective, but scalable when needed.

There are many approaches to this problem, and Kotlin takes a very flexible one by providing Coroutine support at the language level and delegating most of the functionality to libraries, much in line with Kotlin's philosophy.

As a bonus, coroutines not only open the doors to asynchronous programming, but also provide a wealth of other possibilities such as concurrency, actors, etc.

https://kotlinlang.org/docs/reference/coroutines-overview.html

Mockk

TDD can lead to more modularized, flexible, and extensible code. The use of the mock object design pattern contributes to the overall modularization of the code because this pattern requires that the code be written so that modules can be switched easily between mock versions for unit testing and "real" versions for deployment.

https://mockk.io

Koin

A pragmatic lightweight dependency injection framework for Kotlin developers. Written in pure Kotlin, using functional resolution only: no proxy, no code generation, no reflection.

https://insert-koin.io

Why do we adopt this technology?

Kotlin is the preferred language for writing native Android applications, and used for Kotlin multi-platform applications. We recommend using Kotlin over Java for new Android applications, and upgrade legacy projects to Kotlin where possible.