Kotlin 1.1 Released with JavaScript Support, Coroutines and more
A few weeks ago I wrote the same application four times in four different JVM languages: Java, Groovy, Scala, and Kotlin, with a particular focus on the application using functional techniques and types as well as being reactive.  I also included as goals complete test coverage with a preferred test framework from each language and complete build tooling, all within a single Gradle project.<p>The only significant sources of variance were the following:<p>a) Groovy's support for functional programming is starting to show its age.  It worked with everything, though.<p>b) The Scala 2.12 compiler has at least one bug that appears to affect its interaction with Java 8 lambdas (in particular, in at least one case expr.method() and (expr).method() will not pass the compiler's typecheck, but { val x = expr; x.method() } does.  (All three pass IntelliJ's typechecker for Scala.)  Outside of this (aggravating) issue and slower build times, it did work.<p>c) Java works well with everything but ends up being quite verbose, especially in regards to a functional programming style (no surprise there).<p>d) Kotlin (1.0) works well with everything and is relatively succinct except for Mockito due to everything defaulting to 'final' - but it appears that Kotlin 1.1 fixes this with a compiler plugin.<p>Based on my experience with all four languages, I would definitely try adding Kotlin to projects.  It seems to be surprisingly mature and stable given how much less time it has spent in development (relative to the other three languages.)