Kotlin (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 | |
---|---|
Tyypitys | vahva, staattinen |
Julkaistu | 2011 |
Kehittäjä | JetBrains |
Käyttöjärjestelmä | alustariippumaton |
Verkkosivu |
kotlinlang |
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 // 1
fun 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 -esimerkki
fun 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.[11]
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.[12]
Lähteet
- Martin Heller: What is Kotlin? The Java alternative explained infoworld.com. 26.10.2017. Viitattu 19.2.2020. (englanniksi)
- Krill, Paul: JetBrains readies JVM language Kotlin 22.7.2011. InfoWorld. Viitattu 2.2.2014.
- Lardinois, Frederic: Kotlin is now Google’s preferred language for Android app development 7.5.2019. TechCrunch. Viitattu 27.9.2019. (englanniksi)
- Higher-Order Functions and Lambdas kotlinlang.org. Viitattu 19.2.2020. (englanniksi)
- Generics kotlinlang.org. Viitattu 25.2.2020. (englanniksi)
- https://play.kotlinlang.org/byExample/01_introduction/01_Hello%20world (Arkistoitu – Internet Archive)
- Build Better Apps with Kotlin Android Developers. Viitattu 31.3.2023. (englanniksi)
- Codecademy Team: What Is Kotlin Used For? Codecademy Blog. 5.10.2021. Viitattu 31.3.2023. (englanniksi)
- The State of Kotlin Support in Spring | The Kotlin Blog The JetBrains Blog. Viitattu 31.3.2023. (englanniksi)
- Ktor: Build Asynchronous Servers and Clients in Kotlin Ktor Framework. Viitattu 31.3.2023. (englanniksi)
- Codecademy Team: What Is Kotlin Used For? Codecademy Blog. 5.10.2021. Viitattu 31.3.2023. (englanniksi)
- Kotlin Programming - The State of Developer Ecosystem in 2020 Infographic JetBrains: Developer Tools for Professionals and Teams. Viitattu 31.3.2023. (englanniksi)
Aiheesta muualla
- Virallinen sivusto
- Grammar – kielioppi ANTLR 4 -muodossa (englanniksi)
- Android Kotlin Fundamentals: Welcome to the course (englanniksi)