Out of curiosity, how many of you are using Kotlin for backend development? It seems that Java has caught up a bit, and the advantages of Kotlin (extension methods, better syntax, better null-checking) might not be enough to justify the risk of lock- in?
Personally, I quite like Kotlin, but I haven't been able to convince most of my greybeard colleagues to make the leap.
I do not have an opinion on if Kotlin is great as a backend for every project. Kotlin does excel as a pick for projects where you are also compiling for native mobile front ends.
Write a Kotlin multiplatform client side business logic module in tandem with your Kotlin backend. The multiplatform module compiles for both your Android and Apple environments and for extra flexibility you are able to quickly port code from the client business logic module to the backend (or vice versa).
Been in a weird position where I had to learn Java real fast, then learn Kotlin real fast to replace it. I find Java to be so incredibly unproductive compared to Kotlin, for all the reasons a sibling comment listed. I mean come on, default argument values and named input parameters are table stakes— it kills off the billion overloads, billion positional arguments, annd builder pattern nonsense all at once. Kotlin immutability by default is fantastic, I am 1000% behind default immutable data structures. The stupid, awful nullability madness disappears (mostly, need to train people to never use ! and !!). I appreciate Java, it got us to Kotlin, but Kotlin is ACTUALLY FUN to use, and expresses all ideas I have cleanly. Less, cleaner code just makes things easier to maintain, full stop.
We did and it's awesome. Normal SaaS startup-sized codebase. Migrated from java maybe 4 years back. Was so perfect that you could migrate file by file. Later on we split up the codebase via gradle modules. Very very happy with that! Java will never get where kotlin is. It's a perpetual catch up game.
i've been writing kotlin since 1.0 (2016) and my past few jobs have been at startups using kotlin entirely on the backend. it's really enjoyable, there isn't another language with as good of a development experience due to Jetbrains controlling both sides.
coroutines are the biggest downside imo. they're great for android and other environments, but now that we've got loom on the jvm they're needlessly complex (accidental blocking calls, coloring, headaches with libraries that use thread locals, reentrant lock, etc.)
i've used ktor for 2 small-ish microservices. It's fine. I was curious about corouitnes. I know SpringBoot has support for corouitnes as well, but in ktor it's front and center. (Disclaimer: I never used Scala)
at the (semi-state owned) company (in Germany) I work at, Kotlin is a first-class language also for backend. It depends on the teams wheather they prefer Java or Kotlin. I'm firmly in the team-Kotlin camp and Java code that becomes my responsibility has the strong tendency to suddenly become Kotlin code. By the way, I never worked on Android, so all my Kotlin work (since 2019) was server-side Kotlin.
Java is getting better, so maybe in 10 years it'll be a less ergonomic Kotlin variant.
PSS: Jetbrains is actually working on an official Kotlin-lsp server: https://github.com/Kotlin/kotlin-lsp So devs in the near future won't be locked into the IntelliJ ecosystem, if that is a concern of yours.
I have been using detekt for work and personal projects for years now. Writing advanced lint rules that take advantage type resolution makes it the best linter for Kotlin. I just hope they get k2 support soon.
The worst thing about kotlin is the intellij lock in. VSCode support is exceptionally poor and that makes using modern AI tooling (like cursor) a pain.
I just have Cursor open in another window for the agent mode while I do my editing with intellij (or other jetbrains products).
I would never voluntary do any editing in VS Code or forks of it. It is just so slugish on large files. Plus there is always subtle things that annoy me, I can't even describe it, it just feels off. I hope Zed takes off as it is a bit more tolerable though still not there yet.
I love Detekt! It's particularly good for enforcing project conventions that can't be covered with standard linters. With access to the full AST, you can basically enforce any kind of rule you want with custom analyzers. And LLMs take out 90% of the effort for creating new analyzers.
20 comments
[ 3.3 ms ] story [ 44.3 ms ] threadPersonally, I quite like Kotlin, but I haven't been able to convince most of my greybeard colleagues to make the leap.
Come in; the water is fine.
Write a Kotlin multiplatform client side business logic module in tandem with your Kotlin backend. The multiplatform module compiles for both your Android and Apple environments and for extra flexibility you are able to quickly port code from the client business logic module to the backend (or vice versa).
There is almost no locking with Kotlin. You can stop writting Kotlin code any time and start writting Java code.
However I think it's not possible to call coroutine code from Java.
PROFIT!
coroutines are the biggest downside imo. they're great for android and other environments, but now that we've got loom on the jvm they're needlessly complex (accidental blocking calls, coloring, headaches with libraries that use thread locals, reentrant lock, etc.)
don't use ktor etc where some people wanna take their scala religion and put into kotlin.
kotlin is nice is you keep is super simple. use it the same way as you do Golang and you will find it pleasurable.
Java is getting better, so maybe in 10 years it'll be a less ergonomic Kotlin variant.
PS: Jetbrains - the company behind Kotlin - started a strategic partnership with the Spring team, to make the combo Kotlin-Spring even better: https://blog.jetbrains.com/kotlin/2025/05/strategic-partners...
PSS: Jetbrains is actually working on an official Kotlin-lsp server: https://github.com/Kotlin/kotlin-lsp So devs in the near future won't be locked into the IntelliJ ecosystem, if that is a concern of yours.
I would never voluntary do any editing in VS Code or forks of it. It is just so slugish on large files. Plus there is always subtle things that annoy me, I can't even describe it, it just feels off. I hope Zed takes off as it is a bit more tolerable though still not there yet.