| > However, now that Java is making strides in the language features, as compared to historical improvements at the VM level, I’m curious to see how the market share for Kotlin outside of android is going to be affected. My employer has decided to abandon Scala, and they proposed Java as the language to head toward. I don't think Java's strides are fast enough to provide modern table stakes. In 2025, the big ones to me are: 1. null handling at the cultural and language level 2. abstractions over concurrency For null handling, Java has Option, but you're just going to have to deal with the fact that basically any API or caller can give you null. This is not good enough in 2025. For concurrency, Java has an excellent java.util.concurrent package (and the JVM is very good at concurrency in general). However, I've come to believe that it's a losing proposition to expect the average programmer to use concurrency primitives correctly, even at that level of abstraction. Every Java PR I review I have to add 20-30 comments about thread interruption, memory barriers, etc. Structured Concurrency helps, but is new/in preview, and hardly helps with actually providing safer concurrency operations. I think Java is doing the right things and the glacial pace of innovation at the language level is correct for protecting their users (contrast this with Scala 3...), but on the flipside I just think that it is hard to recommend Java vs C#/Kotlin. |
One example out of many, https://www.aicas.com
This isn't like Meadows, this is a real-time VM with AOT compilation and soft-realtime deadlines, there are others.
Or stuff like https://www.azul.com/products/prime/cloud-native-compiler, again there are others offering the same.
Kotlin will always be a second language on the JVM, it isn't what Oracle, IBM, and others think about when designing runtime features, and eventually like all guest languages will face the problem to either exposed the platform features, or have multiple ways, with different semantics, to achive the same.
Virtual threads, versus co-routines, structured concurrency, SIMD/Vector, value class/records,....