I never fully switched to Kotlin. It’s good, but not good enough. I also like the direction Java has been evolving in over the last 10 years, to the point that a JVM server is actually lighter than a Node.js server :)
Sure, Java is slowly getting most of the features and sometimes even in a better form because they control the runtime (virtual threads arguably just work). But IMO Java is still incredibly verbose, Kotlin's type system is just better and I've genuinely never come across anything that would be easier to do in Java. Even virtual threads can be used from Kotlin.
if (obj instanceof Point(double x, double y)) {
foo(x,y)
}
Kotlin with its smart cast feature lets you do if (obj is Point) {
foo(obj.x, obj.y);
}if (obj instanceof Point p) {
foo(p.x(), p.y());
}