Kotlin fixes some of the Java issues.
Null references are controlled by the type system.
No raw types
Arrays in Kotlin are invariant
Kotlin has proper function types, as opposed to Java’s SAM-conversions
Use-site variance without wildcards
Kotlin does not have checked exceptions
Java has below that kotlin does not have
Primitive types that are not classes
Ternary-operator a ? b : c
What Kotlin has that Java does not
Lambda expressions + Inline functions
Type inference for variable and property types
Declaration-site variance & Type projections
Separate interfaces for read-only and mutable collections