Native • Statically-typed • Object-oriented and functional paradigms • Open source under Apache 2.0 • Ver 1.0 in 2016 • Compatibility commitment • Now at version 1.2
class Person(var name: String, var lang: Language = Language.EN). fun main(args: Array<String>) { val person = Person("Roman") println("Hello, ${person.name}!") }. Default value
class Person(var name: String, var lang: Language = Language.EN) fun main(args: Array<String>) { val person = Person("Roman") println("Hello, ${person.name}!") }..
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") }. fun main(args: Array<String>) { val person = Person("Roman") println("Hello, ${person.name}!") }..
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") } fun main(args: Array<String>) { val person = Person("Roman") println("Hello, ${person.name}!") }
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") } fun main(args: Array<String>) { val person = Person("Roman") }
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") } fun main(args: Array<String>) { val person = Person("Roman") person.greet() } > Hello, Roman!
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") }.. fun main(args: Array<String>) { }.
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") }.. fun main(args: Array<String>) { val people = listOf( Person("Roman"), Person("Romario", Language.SP), Person("Roman de Belov", Language.FR) ). }.
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") }.. fun main(args: Array<String>) { val people = listOf( Person("Roman"), Person("Romario", Language.SP), Person("Roman de Belov", Language.FR) ). for (person in people) {. person.greet() }. }.
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") }.. fun main(args: Array<String>) { val people = listOf( Person("Roman"), Person("Romario", Language.SP), Person("Roman de Belov", Language.FR) ). people.forEach {.person -> person.greet() }. }.
class Person(var name: String, var lang: Language = Language.EN) { fun greet() = println("${lang.greeting}, $name!") }.. fun main(args: Array<String>) { val people = listOf( Person("Roman"), Person("Romario", Language.SP), Person("Roman de Belov", Language.FR) ). people.forEach { it.greet() }. }.
is notation, not syntax • Pure Kotlin is Null-Safe • Kotlin+Java is as safe as Java • Annotations Still Applicable – @NotNull String in Java becomes String in Kotlin • Dynamic Type for JavaScript Interop – JS is even unsafer than Java