Kotlin 1.4
As far as the Java platform (AKA &quot;the JVM&quot;) goes, Kotlin is painting itself into a corner. Kotlin was designed in 2009-10, in the Java 7 days, around the time of the Oracle acquisition, and at a time of stagnation for Java due to Sun&#x27;s decline. At the time, Android was also quite similar to Java. Kotlin was a great design in those conditions. Things are very different today.<p>Kotlin&#x27;s design goals are now contradictory. It seeks to be a low-overhead language, i.e. provide abstractions that don&#x27;t add overhead over the target platform, give access to all platform capabilities, and at the same time target multiple platforms -- Java, Android, LLVM and JS -- over <i>none of which</i> does Kotlin exert much influence (maybe a bit on Android). Since 2010, Java has moved away from Android, to the point that there are very big gaps between the two, and they&#x27;re only growing.<p>By both trying to target multiple platforms (with no say in their design) and trying to add little or no overhead, Kotlin will soon find itself in a bind. It&#x27;s coroutines are in conflict with Java&#x27;s upcoming virtual thread&#x27;s design, and its inline classes will cause problems with Java&#x27;s Valhalla vs. Android. Kotlin will have to choose to either give up on low-overhead abstractions, give up on some of its platforms, give up on giving access to full platform capabilities, or split into multiple languages, each targeting a different platform. For example, if Kotlin&#x27;s inline types will make use of Valhalla, then they won&#x27;t work on Android, at least not without much overhead.<p>TL;DR: A full-capability, low-overhead, multi-platform language is hard to pull off in the long run when you have low market share on all of those platforms (except Android) and little or no influence on any of them. This was viable under some accidental circumstances, but those are no longer holding.