INFO Technology RadarINFO Technology Radar

Kotlin

This item was not updated in last three versions of the Radar. Should it have appeared in one of the more recent editions, there is a good chance it remains pertinent. However, if the item dates back further, its relevance may have diminished and our current evaluation could vary. Regrettably, our capacity to consistently revisit items from past Radar editions is limited.
Hold

We now prefer Node.js as backend technology over Kotlin (and Java).

In the context of choosing the backend technology for new projects, facing challenges in staffing our projects with backend developers and in sharing technical backend skills, we decided to prefer Node.js (and the related TypeScript stack/ecosystem) over Kotlin (the Kotlin/Java/JVM stack/ecosystem) as our main backend technology, to achieve more consolidation on backend technology within our company, accepting that we will to a large degree stop using the Kotlin (and Java) skills and experiences we have gathered and that we will need to put effort into helping developers switch from Kotlin to Node.js.

We believe that in our current context consolidating on backend technology will make it easier for us to staff and maintain our client projects and we also expect it will make it easier to recruit new developers in future.

We also feel that in the modern, typically distributed, software architectures that we use in our client projects the multi-threading concurrency model of Kotlin/Java/JVM is no longer a decisive benefit over the event loop model of Node.js.

Adopt

Kotlin is one of our preferred backend technologies.

We see Kotlin as a logical evolution of Java bringing increased agility to development teams while requiring a minimal learning curve when coming from Java. When using Kotlin we prefer Ktor over Spring Boot as web framework.

When compared to Node.js we prefer Kotlin when:

  • The application needs to perform multiple tasks concurrently, where some of these tasks can be computationally expensive. The application needs to remain performant during this time. The concurrency model of Kotlin is usually a better and more performant match in these cases compared to the event-based Node.js model. Typically this situation will be encountered only in monolithical (and sometimes also microservices) architectures and not in serverless architectures where separate tasks are normally executed in isolation.