Gjersjøen lake Kotlin is a statically typed JVM language developed by Jetbrains . It has some good documentation so today I will focus on a tiny part of it - null safety . There are at least couple of approaches to null handling in JVM languages: Java doesn’t go much further than C - every reference (“pointer”) can be null , whether you like it or not. If it’s not a primitive, every single field, parameter or return value can be null . Groovy has similar background but adds some syntactic sugar , namely Elvis Operator ( ?: ) and Safe Navigation Operator ( ?. ). Clojure renames null to nil , additionally treating it as false in boolean expressions. NullPointerException is still possible. Scala is first to adopt systematic, type safe Option[T] monad (Java 8 will have Optional<T> as well!) Idiomatic Scala code should not contain null s but when interoperating with Java you must sometimes wrap nullable values. Kotlin takes yet another approach. Ref