Kotlin (programmeerimiskeel)

Kotlin on avaliku lähtekoodiga staatiliselt tüübitud programmeerimiskeel, mis kompileerub Java baitkoodiks ja kasutab Java virtuaalmasinat (JVM). Muud sihtplatvormid on JavaScript, Android ja riistvara lähedane programmeerimine. Keelt arendab ettevõte JetBrains, arendusmeeskond asub Peterburi linnas Venemaal.

Kuigi Kotlin ja Java ei ole süntaksi poole pealt ühilduvad, on Kotlin Java keelega funktsionaalsuse osas täielikult ühilduv ja sisemiselt kasutab Java teekide implementatsioone. Üks näide sellest oleks näiteks Java Collections raamistik. Kotlin kasutab automaatset tüübituvastust, kus see on kompilaatori jaoks võimalik. See võimaldab koodiridade hulka vähendada umbes 40% võrra võrreldes samaväärse Java koodiga.

Ajalugu
Keel on nime saanud Soome lahes asuva Kotlini saare järgi (saar kuulub Venemaale). 

Kotlini erinevus Scala keelest seisneb selles, et kui Scala eesmärk on anda võimalikult palju vabadust teekide loojatele, siis Kotlini eesmärk on olla hea tööriist lõppkasutaja jaoks.

Kotlini arendust alustati aastal 2010. Esimene ametlik versioon (1.0) ilmus veebruaris 2016. Alates oktoobrist 2017 on võimalik seda ametlikult kasutada Adroid operatsioonisüsteemi rakenduste arendamiseks.

28. novembril 2017 ilmus versioon 1.2. Selle versiooni suurim iseärasus oli see, et alates sellest versioonist on võimalik koodi taaskasutada JVM ja JavaScripti platvormide vahel. Selline lähenemine annab arendajatele võimaluse jagada äriloogikat erinevate moodulite vahel, mis tähendab, et nad ei pea enam iga uue komponendi jaoks äriloogikat ümber kirjutama.

Põhimõtted

Projektijuht Andrey Breslav rääkis, et keele põhimõte on olla parem keel kui Java, kuid samas peab Kotlin säilitama täielikku ühendatavust Java keelega selleks, et suured ettevõtted saaksid alustada osalist migreerimist uuele keelele. See lubab osaliselt üle kirjutada vana koodi, mitte kõike korraga.

Semikoolon ei ole kohustuslik avaldise lõpetamiseks, seega seda tuleks võimalusel vältida.

Tüübid deklareeritakse peale muutaja nime deklareerimist, eraldades neid kooloniga.

val a: String = "a"

Kotlinis saavad muutuja deklaratsioonid olla muteeritavad, kasutades võtmesõna var
var mutable = "a"

või mittemuteeritavad, kasutades võtmesõna val.

val immutable = "a"
Viimane on ekvivalente võtmesõnaga final
Java keeles.
Viimast tuleks eelistada kohtades, kus muutujat omistatakse ainult üks kord.

Klassi liikmed on vaikimisi avalikud. Klassidest ei saa vaikimisi pärida (sarnane juhtumiga, kui klass on deklareeritud võtmesõnaga final Java keeles).
Selleks, et klassist saaks alamklasse pärineda, tuleks vanema klassi deklareerimisel lisada võtmesõna open. Näiteks:
open class Foo

Kotlini keeles on olemas ka vaikimisi konstruktsioon üksikute objektide deklareerimiseks.
Selleks on olemas võtmesõna object, mida tuleks kasutada võtmesõna class asemel klassi deklareerimisel. Java keel sellist võimalust vaikimisi ei paku ning selleks tuleb kasutada staatilisi väljasid.

Koodi näide
Tere maailm programm Kotlinis:

fun main(args: Array<String>) {
    println("Tere maailm!")
}

Kotlini lambda funktsioonide kasutus:
fun main(args: Array<String>) {
    // Parameetriteta lambda
    val noParamLambda = { println("Tere, maailm!") }
    noParamLambda() // väljastab ekraanile "Tere, maailm!"

    // Lambda, mis võtab parameetrina sõne
    val paramLambda = { name: String -> println("Tere, $name") }
    paramLambda("maailm!") // väljastab ekraanile "Tere, maailm!"
}

Viited

Programmeerimiskeeled