Kotlin (programazio-lengoaia)

Kotlin (programazio-lengoaia)
ParadigmaMultiparadigma, Objektuetara bideratutako programazioa, inperatiboa, funtzionala, hausnartua, generikoa, adierazpenezkoa, bloketan egituratua
DiseinatzaileaJetBrains
GaratzaileaJetBrains
Agerpena2016
Kaleratze Egonkorra2.0.0 (2024-05-21)
Sistema EragileaMultiplataforma: JVMren euskarri den edo Javascript interpretea duen edozein
LizentziaApache 2
Webguneahttps://kotlinlang.org
Eragina
Java, Scala, Groovy, C#, Gosu

Kotlin programazio-lengoaia bat da, multiplataforma, objektuetara bideratua, goi-mailakoa, helburu orokorrekoa, datu-moten egiaztapena konpilazio garaian modu estatikoan egiten duena eta adierazpenen motaren inferentzia modu automatikoan egiten duena. Javarekin elkarrekintzan aritu ahal izateko diseinatuta dago. Kotlin-en liburutegi estandarraren Java Makina Birtual bertsioa (ingelesez, Java Virtual Machine, JVM) Java Class Library-ren mende dago, baina datu moten inferentziari esker sintaxia laburragoa izan daiteke.[1] Kotlin batez ere JVMrako diseinatuta dago, baina JavaScript ere konpilatzen du (adibidez, React erabiltzen duten front-end web aplikazioetarako) eta baita makina-lengoaia ere behe mailako makina birtualen (ingelesez Low Level Virtual Machine, LLVM) bidez (Android aplikazioekin negozio-logika partekatzen duten iOS aplikazio natiboetan, adibidez).[2][3] Lengoaiaren garapen-kostuak JetBrains enpresak ordaintzen ditu eta Kotlin marka komertziala Kotlin fundazioak babesten du.[4]

2019ko maiatzaren 7an, Android aplikazioen garatzaileek gehien atsegin zuten programazio-lengoaia Kotlin zela iragarri zuen Googlek. 2017ko urrian Android Studio 3.0 plazaratu zenetik, Kotlin eskaintzen da Java konpiladore estandarraren alternatiba gisa.[5] Besterik adierazi ezean, Android-en Kotlin konpiladoreak Java 8 bytecode kodea sortzen du, ondorengo edozein JVM-tan exekuta daitekeena, baina programatzaileari Java 9 eta Java 18 arteko bytecode kodea sortzeko aukera ematen dio, optimizatzeko. Java 16an gehitu zen JVM-rako erregistro-klaseen bi noranzkoetako elkarreragingarritasunerako euskarria. Kotlin 1.5etik aurrera elkarreragingarritasun hori egonkor bihurtu dela ontzat ematen da.[6]

Kotlin-ek badu weberako euskarria. JavaScript konpilatzen du, 1.3 bertsiotik aurrera, back-end klasikoa duen Kotlin/JS egonkorra da. Berriena den Kotlin/JS tarteko mailako lengoaia batean oinarrituta dago eta 1.5.30 bertsiotik aurrera beta egoeran dago. Apple txipekin bateragarri den Kotlin/Native beta bertsioan dago 1.3 bertsiotik aurrera.[7][8]

Historia

2011ko uztailean JetBrains-ek Kotlin Proiektua ezagutzera eman zuen. Garapen-fasean urtebetez egon ondoren, JVMrako sortutako lengoaia berri bat zen.[9] JetBrains taldeko buru zen Dmitry Jemerov-ek esan zuen programazio-lengoaia gehienetan ez zituztela aurkitzen bilatzen zituzten ezaugarriak, Scala lengoaian izan ezik. Scala lengoaiaren konpilazio-denbora motela akats nabaria zela esan zuen.[9] Kotlin lengoaia garatzean, helburuetako bat Java bezain azkar konpilatzea zen.[erreferentzia behar]

2012ko otsailean, JetBrains-ek proiektuaren iturburu-kodea askatu zuen Apache 2 lizentziapean.

2017an bultzada handia jaso zuen, Google-ek Androiderako lengoaia ofizial izendatu baitzuen Kotlin, Javaren maila berean.

Filosofia

Lengoaiaren garapena gidatu duen Andrey Breslav-ek esan du Kotlin kalitate industriala duen eta objektuetara bideratuta dagoen programazio-lengoaia izateko diseinatu dutela. Horrez gain, Java baino hobea izateko diseinatu dutela esan du, eta Java kodearekin elkarreragiteko gaitasuna duela, Javatik Kotlinera pasa nahi duten enpresei migrazioa pixkanaka egiteko aukera emanez.[10]

Sintaxia

Pascal, Haxe, PL/SQL, F#, Rust, Go eta Scala programazio-lengoaiek bezala (eta C eta bere aldaera diren C++, Java, C# eta D lengoaiek ez bezala), Kotlin-en aldagaiak eta parametroak erazagutzean, datu-mota identifikatzailearen ondoren jartzen da, eta haien artean bi puntuko bereizlea jartzen da. Beste programazio-lengoaia modernoetan bezala (Scala eta Groovy, adibidez), sententziaren amaieran puntu eta koma jartzea ez da derrigorrezkoa, hautazkoa baizik; askotan, lerro-jauzi bat nahikoa da konpiladorea konturatzeko deklarazioa amaitu dela.[11]

Semantika

Objektuetara bideratutako programazioan ohikoak diren klaseez eta metodoez gain (Kotlin-en funtzio kide deituak), Kotlin-ek programazio funtzionala (prozeduren bidezkoa) ere onartzen du.[12] C eta C++ lengoaietan bezala, Kotlin lengoaian idatzitako programak "main" izeneko funtzio batekin hasten dira. Funtzio horrek array bat jasotzen du, bertan gordetzen dira komando lerrotik pasatako argumentuak. Perl eta Unix/Linux-en shell programetan bezala, karaktere-kateen barruan aldagaiak interpolatzea onartzen du. Kotlinen beste ezaugarri bat da datu moten inferentzia egiten duela.

Adibidea

fun main() {
  val scope = "mundua"
  println("Kaixo, $scope!")
}

Kotlinek bereizi egiten ditu datu-mota deuseztagarriak (balio nulua izan dezaketenak edo baliorik ez dutenak) eta ez-deuseztagarriak. Deuseztagarriak diren objektuak erazagutzeko (deklaratzeko), motaren izenaren ondoren "?" ikurra jarri behar da atzizki gisa. Objektu deuseztagarriekin egindako eragiketek garatzaileen arreta berezia eskatzen dute, hau da, erabili aurretik balioa nulua dela egiaztatu behar da. Garatzaileei laguntzeko, Kotlin-ek balio nuluak egiaztatzeko seguruak diren eragileak eskaintzen ditu:

  •  ?. Nabigazio seguruko eragilea. Nulua izan daitekeen objektu baten metodo edo propietate bat modu seguruan atzitzeko erabil daiteke. Objektua nulua bada, metodoari ez zaio deituko eta adierazpena ebaluatzearen emaitza null izango da.
  •  ?: Koaleszentzia nuluko eragilea edo Elvis eragilea:
fun kaixoEsan(agian : String?, inoizezNull : Int) {
   // Elvis eragilearen erabilera
   val izena : String = agian ?: "ezezaguna"
   println("Kaixo, $izena")
}

Nabigazio seguruko eragilearen erabileraren adibide bat:

// null itzuliko du baldin...
// - baldin foo() -ren emaitza null bada,
// - edo baldin foo() -ren emaitza null ez bada, baina bar() -ren emaitza null bada,
// - edo baldin foo() eta bar() -ren emaitzak null ez badira, baina baz() -ren emaitza null bada.
// alderantziz, null ez den balioa itzuliko du baldin eta soilik baldin foo(), bar() eta baz() -ren emaitza null  ez bada
foo () ?. bar() ?. baz()

Tresnak

  • IntelliJ IDEA garapenerako inguruneak Kotlin-erako plugin bat dauka.[13] IntelliJ IDEA 15 da Kotlin plugina IntelliJ instalatzailean txertatua duen lehen bertsioa eta hasieratik euskarria ematen duena.
  • JetBrains-ek Eclipserako plugin-a ere badu.[14]
  • Apache Maven plugina.[15]
  • Apache Ant-erako ataza.[15]
  • Gradle plugina .[15]
  • Android Studio-k 3.0 bertsiotik onartzen du Kotlin.
  • NetBeans-ek ere badu Kotlinerako plugina.

Erreferentziak

Artikulu hau, osorik edo zatiren batean, {hizkuntza} wikipediako «Kotlin (lenguaje de programación)» artikulutik itzulia izan da. Jatorrizko artikulu hori GFDL edo CC-BY-SA 3.0 lizentzien pean dago. Egileen zerrenda ikusteko, bisita ezazu jatorrizko artikuluaren historia orria.

Ikus, gainera

Kanpo estekak