Basic Kotlin characteristics are:
1. Running on JVM (Java Virtual Machine) meaning that it is cross-platform compatible
2. Statically typed, the type of a variable is known at compile time
3. Functional:
- First-class functions: You can store functions as a variables or pass as a parameters to other functions as a parameters
- Immutability: It is guaranteed that state of an immutable object can’t change over time
- No side effects: Using pure functions that return the same result given the same inputs. Do not modify the state of other objects or interact with the outside world
4. Object-Oriented
5. Free and Open Source