Groovy, because it seems to have so much flexibility in what you can do with it. Its' the true "scala" to me in the sense that I can write single line bash scripts with it, but I can also write full fledged complex applications and high performance code that gets close enough to performance with Java and even C++ for most of my use cases. I can switch seamlessly between any level of static / dynamic typing to achieve whatever I want from among these different applications, and I can even do it after the fact.
Kotlin. Learning curve is gentle, reduced boilerplate, aggressive null handling, first class language support in IDEA and interoperability with Java codebase.
Kotlin for me too. It’s like the pinched the cool bits from other languages to boost java. Plus the power of java ecosystem. The tooling is amazing because obviously it’s Jetbrains’ baby. Gradle are on board as are the android team. Spring boot lot are going for it. It stands a good chance of getting a lot more mindshare than it has currently
Because it's "java like" enough that all of my years of experience using Java still pay dividends, but yet it knocks off most of the warts Java has (writing getters and setters, for example), while adding cool stuff like dynamic typing, closures, currying, map literals, string interpolation, tons of handy convenience methods, etc.
> adding cool stuff like dynamic typing, closures [to Java]
Both dynamic-style inferred typing and closure-like lambdas have been added to Java since Apache Groovy was first released. Groovy's business case has become less compelling as a result.
Groovy's business case has become less compelling as a result.
By a small margin, yes. Personally, I still find Groovy far more compelling than plain Java, especially when I'm using Grails for "web stuff". For pure backend REST services, I do sometimes go with plain Java and Spring Boot. As the old saying goes "use the right tool for the job". Hell, I'd use COBOL if there was a compelling reason. :-)
I thought that too at first, but actually trying to use lambdas in Java still ends up a lot more verbose and cumbersome than the kind of fluid APIs you can do with Groovy.