I think Kotlin is the statically-typed language I've been waiting for, especially with the team's interest in native and JS targets.
I think Kotlin is the statically-typed language I've been waiting for, especially with the team's interest in native and JS targets.
But Kotlin also has simplicity that, for example, Scala doesn't. I tried Clojure after spending a couple months with Scala and giving up, and then I used Clojure fulltime for 3+ years.
Eventually, I felt like I was hitting a ceiling with Clojure since it lacked good static analysis. I moved to Node because I felt like, if I'm going to use a dynamically-typed language, I might as well use the ubiquitous one. Also, Clojure was a hard sell to other developers I would meet.
What Clojure does have is an ecosystem of simplicity that I hope the Kotlin ecosystem will adopt.
For example, compare ztellman's http://aleph.io/ (Clojure) to Java's Netty or to the somewhat mind-numbing https://docs.oracle.com/javase/8/docs/api/java/util/concurre.... And compare Clojure's Ring to any Java web framework.
Even Spark, Java's simplest option afaict, doesn't have real middleware, just before/after "filters". That's why I went with the `(Request) -> Response` signature over the `(Request, Response) -> Unit` signature.
There's also ClojureScript's integration and tooling which are pretty impressive these days while Kotlin's JS support is still fledgling.
Though these are the impressions of someone who has only been using Kotlin for a few months without a Java background. And it's not like anyone should be using my lil framework in production, it's just a hobby.