Kotlin (ohjelmointikieli)

ohjelmointikieli

Kotlin on yleiskäyttöinen avoimen lähdekoodin staattisesti tyypitetty ohjelmointikieli.[1] Kieli kääntyy JVM-tavukoodiksi. Kotlinilla kirjoitettuja ohjelmia voi siis ajaa kaikissa Java-spesifikaation mukaisia virtuaalikoneita tukevissa ympäristöissä.Kotlin julkaistiin kesäkuussa 2011, kun siitä tiedotti JetBrains-ohjelmistoyhtiö, työstettyään kielen toteutuksia vuoden ajan.[2] Vuonna 2012 JetBrains julkaisi kielen avoimen lähdekoodin lisenssillä.[1]

Kotlin
Tyypitysvahva, staattinen
Julkaistu2011
KehittäjäJetBrains
Käyttöjärjestelmäalustariippumaton
Verkkosivukotlinlang.org

Vuonna 2017 Google ilmoitti tukevansa Kotlin-kieltä Android-kehitysympäristössään ja toukokuussa 2019 Google ilmoitti, että Kotlin on Android-sovelluskehityksen suositeltu kieli.[3]

Ominaisuudet

Kieli on vahvasti tyypitetty: val ja var avainsanoja voidaan käyttää vain kun tyyppi voidaan päätellä, muutoin tyyppi on määriteltävä.[1] Kielessä funktiot voidaan määritellä myös luokan ulkopuolisiksi toisin kuin Javassa.[1]

Kieli tukee muun muassa anonyymejä lambda-funktioita, korkean tason funktioita (voivat saada funktion parametrina) ja inline-funktioita.[1][4]

Kotlin tulee funktionaalisen ohjelmoinnin lisäksi Javan tapaista olio-ohjelmointia: kieli tukee luokkia konstruktoreilla ja rajapintaluokkia (engl. interface).[1] Kotlinissa ei ole new-avainsanaa vaan instanssit luodaan kutsumalla konstruktoria.[1] Esimerkiksi Javan tapa:[1]

StringBuilder sb = new StringBuilder();

.. on Kotlinissa:

val sb = StringBuilder()

Kotlin yksinkertaistaa ja poistaa null-tuen standardityypeistä.[1]

Kotlin tukee C#:in tapaan laajennusmetodeja, jolloin luokkaa voidaan laajentaa uudella toiminnallisuudella perimättä siitä.[1]Kotlin tukee Javan tapaan geneerisen ohjelmoinnin ominaisuuksia (luokat, rajapinnat), jossa on kuitenkin myös eroja.[5]

Kotlinissa ei ole tukea Javan checked exceptions -poikkeuksille, joista oli hyötyä lähinnä leluohjelmissa.[1]

Koodiesimerkki

Yksinkertainen esimerkki Hei maailma -ohjelmalla:[6]

package org.kotlinlang.play         // 1fun main() {                        // 2    println("Hello, World!")        // 3}

.. jossa rivillä 1 on valinnainen pakettimäärittely.[6] Versiosta 1.3 lähtien main-funktion voi määritellä ilman parametreja (rivi 2).[6] Rivillä 3 kirjoitetaan standarditulosteeseen.[6] Puolipisteet lauseen lopussa ovat valinnaisia.[6]

Muita esimerkkejä:

// Hei maailma -esimerkkifun main() {  val scope = "maailma"  println("Hei $scope!")}fun main(args: Array<String>) {  for (arg in args) {    println(arg)  }}

Suosio

Nykyään yli 60% ammattilaisista Android-kehittäjistä käyttävät Kotlinia. Syitä Kotlinin suosioon on muun muassa parempi tuottavuus, sovelluksen laatu ja tyytyväisemmät työntekijät. Yli 95 % 1000 suosituimmasta Android-sovelluksista sisältävät Kotlin-koodia.[7] Kotlin säästää aikaa koodia kirjoittaessa vähentäen turhaa boilerplate-koodin määrää. Kotlinissa on myös hyödyliisiä vurottaisrutiineja samanaikaisten tietokantakutsujen tekemiseen, toisin kuin Javassa.[8] Kotlinissa on myös lukuisia muita ominaisuuksia, jotka kasvattavat sen suosiota Javaan verrattuna, kuten null-osoittimien turvallisuus, laaja yhteisö ja sovellusalustojen yhteensopivuus.

Kotlin on myös suosittu palvelinpuolesessa kehityksessä. Spring-ohjelmistokehys lisäsi tuen Kotlin-ohjelmointikielelle Tammikuussa 2017. Se on myös lisännyt paljon dokumentaatiota Kotlinin käyttöön ja tuen Kotlin-kohtaisille ominaisuuksille, kuten vuorottaisrutiineille.[9] JetBrains on myös itse tuottanut Ktor-ohjelmistokehyksen verkkosovelluksien rakentamiseen.[10] Kotlinia voi käyttää myös front-end - kehityksessä hyödyntäen Kotlin/JS-sovelluskehystä. Full-stack - kehittäjä voi pärjätä siis pelkästään Kotlinilla.[8]

Vuonna 2020 JetBrains piti kyselyn Kotlin-kehittäjille, josta kävi ilmi 56 prosentin kehittäjistä käyttävän Kotlinia mobiilisovelluksiin, ja 47 prosentin käyttävän sitä back-end:iin. Noin kolmas sanoin olevansa siirtymässä Kotlinin pariin toisesta kielestä. Suurin osa kehittäjistä kehittivät nimenomaan Androidille tai muuten Java Virtual Machine:lle, jättäen vain 7 % natiiviin käyttöön.[11]

Lähteet

Aiheesta muualla