Kotlin

Language based on JVM are the new trend in Java World. It seems everyone dislike Oracle on these days.

Kotlin score some point on these days because it will be supported officially on Android (Mid-May announce):

Starting now, Android Studio 3.0 ships with Kotlin out of the box, meaning Android developers no longer need to install any extras or worry about compatibility. It also means that moving forward, you can rest assured that both JetBrains and Google will be supporting Android development in Kotlin.

It is a good news for an huble language with good IDE support like this.

So I have reviewed again Kotlin, after a first look two years ago.
Kotlin, born in 2011, is backed by JetBrains, and also can compile to Javascript and to a “Native format”….

Kotlin/Native is primarily designed to allow compilation for platforms where virtual machines are not desirable or possible (such as iOS, embedded targets), or where developer is willing to produce reasonably-sized self-contained program without need to ship an additional execution runtime.

Anyway in the FAQ you read about Kotlin/Native:

There is a Technology Preview released but it is not production-ready yet

So I will not consider it. By the way, getting evn a suboptimal JVM-like garbage collector and thread implementation is not an easy task, and I suggest to avoid it at all.

At first glance Kotlin spot a simple syntax to create POJO, define lambdas and inferring types a bit.
It supports default arguments and named parameters, and procedural programming like functions.
It seems a lot like Python…but 20 years after Python.

Kotlin makes a distinction between nullable and non-nullable datatypes. All nullable objects must be declared with a “?” postfix after the type name.

Also, immutable values are declared with “val”, whereas variable are declared with var, saving some typing.

The language is slick and tiny. No other feature at the horizon. No pattern matching.

There is only an experimental “coroutine” API.

 

So, on my huble opinion Kotlin is worth to learn, if and only if you plan to do a huge investment on it.
If you plan a new JVM product do a Proof-of-Concept with Kotlin.

Also  see how your team react to it,  because it is a quite complete new syntax, and it require some time to grasp it, even if it is well done.

For instance, you need no more to use “new” so switching from Kotlin and Java back and forth will drive you crazy because of a lot of tiny “syntax gliches”

Pro:

  1. Very easy to learn
  2. No big feature
  3. Production ready on its own

Contra

  1. Syntax is different from Python, Swift, Java and so on. 
  2. No big feature
  3. It come in a world where Swift, Go, Python, Erlang, are already here. Are there enough seats for all of these new languages?

JavaScript has already eaten Dart, and Google Go is alive thank to BigG, not on its own.