Share to: share facebook share twitter share wa share telegram print page

Kotlin (linguaxe de programación)

Kotlin
Desenvolvedor(es)JetBrains
Publicación inicial22 de xullo de 2011
Última versión2.2.10 [1]
(14 de agosto de 2025)
Repositoriogithub.com/JetBrains/kotlin
Sistema operativoMultiplataforma
Plataforma/s
LicenzaApache 2.0
Sitio webhttps://kotlinlang.org/

Kotlin (/ˈkɒtlɪn/)[4] é unha linguaxe de programación de alto nivel multiplataforma, de tipado estático, e de propósito xeral con inferencia de tipos. Kotlin está deseñado para interoperar totalmente con Java, e a versión JVM da biblioteca estándar de Kotlin depende da biblioteca de clases de Java, pero a inferencia de tipos permite que a súa sintaxe sexa máis concisa. Kotlin está dirixido principalmente á JVM, pero tamén compila en JavaScript (por exemplo, para aplicacións web frontend que usan React)[5] ou código nativo a través de LLVM (por exemplo, para aplicación nativas de iOS que comparten lóxica empresarial con aplicacións de Android).[6] Os custos de desenvolvemento da linguaxe corren a cargo de JetBrains, mentres que a Fundación Kotlin protexe a marca rexistrada Kotlin.[7]

O 7 de maio de 2019, Google anunciou que a linguaxe de programación Kotlin se convertera na súa linguaxe preferida para os desenvolvedores de aplicacións de Android.[8] Desde o lanzamento de Android Studio 3.0 en outubro 2017, Kotlin incluíuse como alternativa ao compilador estándar de Java. O compilador Kotlin de Android emite bytecode de Java 8 por defecto (que se executa en calquera JVM posterior), pero permite orientarse dende Java 9 ata Java 20 para optimizar,[9] ou permite máis funcionalidades; ten compatibilidade con interoperabilidade de clases de rexistro bidireccional para JVM, introducida en Java 16, considerada estable a partir de Kotlin 1.5.

Kotlin ten compatibilidade coa web con Kotlin/JS, a través dun backend intermedio baseado en representacións que foi declarado estable desde a versión 1.8, lanzada en decembro de 2022. Kotlin/Native (por exemplo, compatibilidade con Apple silicon) foi declarado estable desde a versión 1.9.20, lanzada en novembro de 2023.[10][11]

Historia

Mascota de Kotlin chamada Kodee (versión regular)
Mascota de Kotlin chamada Kodee (versión pequena)

Nome

O nome deriva da illa Kotlin, unha illa rusa no Golfo de Finlandia, preto de San Petersburgo. Andrey Breslav, antigo deseñador principal de Kotlin, mencionou que o equipo decidiu nomeala como unha illa, imitando a linguaxe de programación Java que comparte nome coa illa indonesia de Xava.[12]

Desenvolvemento

A primeira confirmación no repositorio Git de Kotlin foi o 8 de novembro de 2010.[13]

En xullo de 2011, JetBrains presentou o Proxecto Kotlin, unha nova linguaxe para a JVM, que levaba un ano en desenvolvemento.[14] O líder de JetBrains, Dmitry Jemerov, dixo que a maioría das linguaxes non tiñan as características que buscaban, coa excepción de Scala. Non obstante, citou o lento tempo de compilación de Scala como unha deficiencia.[14] Un dos obxectivos declarados de Kotlin é compilar tan rápido como Java. En febreiro de 2012, JetBrains publicou o proxecto en código aberto baixo a licenza Apache 2.[15]

JetBrains esperaba que Kotlin impulsase as vendas de IntelliJ IDEA.[16]

Kotlin 1.0 foi lanzado o 15 de febreiro de 2016.[17] Esta considérase a primeira versión oficialmente estable, e JetBrains comprometeuse coa compatibilidade con versións anteriores a longo prazo a partir desta versión.

No Google I/O de 2017, Google anunciou soporte de primeira clase para Kotlin en Android.[18] O 7 de maio de 2019, Google anunciou que a partir de ese momento, Kotlin era a súa linguaxe preferida para os desenvolvedores de aplicacións de Android.[8]

Deseño

O xefe de desenvolvemento, Andrey Breslav, afirmou que Kotlin está deseñado para ser unha linguaxe orientada a obxectos de potencia industrial e unha "mellor linguaxe" que Java, pero que aínda así sexa totalmente interoperable co código Java, o que permite ás empresas facer unha migración gradual de Java a Kotlin.[19]

Os puntos e coma son opcionais como terminador de instrucións; na maioría dos casos un salto de liña é suficiente para que o compilador deduza que a instrución rematou.[20]

As declaracións de variables e as listas de parámetros de Kotlin teñen o tipo de dato despois do nome da variable (e cun separador de dous puntos), de xeito similar a Ada, BASIC, Pascal, TypeScript e Rust. Isto, segundo un artigo de Roman Elizarov, actual xefe do proxecto, resulta na aliñación dos nomes das variables e é máis agradable á vista, especialmente cando hai unhas poucas declaracións de variables sucesivas e un ou máis dos tipos son demasiado complexos para a inferencia de tipos ou necesitan ser declarados explicitamente para que os lectores humanos os entendan.[21][22]

A influencia de Scala pódese ver no amplo soporte tanto para a programación orientada a obxectos como para a funcional[23] e nunha serie de características específicas:

  • Existe unha distinción entre variables mutables e inmutábeis (palabra clave var vs val).
  • Todas as clases son públicas e finais (non herdables) por defecto.
  • As funcións e os métodos admiten argumentos predeterminados, listas de argumentos de lonxitude variable e argumentos nomeados.

Kotlin 1.3 engadiu soporte para contratos,[24] que son estables para as declaracións estándar da biblioteca, pero aínda experimentais para as declaracións definidas polo usuario. Os contratos están inspirados no paradigma de programación deseño por contrato de Eiffel.[25]

Seguindo ScalaJS, o código de Kotlin pódese transpilar a JavaScript, o que permite a interoperabilidade entre o código escrito nas dúas linguaxes. Isto pódese usar para escribir aplicacións web completas en Kotlin ou para compartir código entre un backend de Kotlin e un frontend de JavaScript.[26]

Sintaxe

Estilo de programación procedimental

Kotlin relaxa a restrición de Java de permitir que os métodos e variables estáticos existan só dentro dun corpo de clase. Os obxectos e funcións estáticos pódense definir no nivel superior do paquete sen necesidade dun nivel de clase redundante. Para compatibilidade con Java, Kotlin proporciona unha anotación JvmName que especifica un nome de clase usado cando se visualiza o paquete desde un proxecto Java. Por exemplo, @file:JvmName("JavaClassName").

Punto de entrada principal

Do mesmo xeito que en C, C++, C#, Java, e Go, o punto de entrada a un programa de Kotlin é unha función chamada "main", á que se lle pode pasar unha lista que contén calquera argumento da liña de comandos. Isto é opcional desde Kotlin 1.3.[27] Admítese a interpolación de cadeas ao estilo shell de Perl, PHP, e Unix. Tamén se admite a inferencia de tipo.

// Exemplo Hello, World!
fun main() {
    val scope = "World"
    println("Hello, $scope!")
}
fun main(args: Array<String>) {
    for (arg in args)
        println(arg)
}

Funcións de extensión

De xeito similar a C#, Kotlin permite engadir unha función de extensión a calquera clase sen as formalidades de crear unha clase derivada con novas funcións. Unha función de extensión ten acceso a toda a interface pública dunha clase, que pode usar para crear unha nova interface de función para unha clase de destino. Unha función de extensión aparecerá exactamente como unha función da clase e mostrarase na inspección de finalización de código das funcións da clase. Por exemplo:

package com.example.myStringExtensions

fun String.lastChar(): Char = get(length - 1)

>>> println("Kotlin".lastChar())

Ao colocar o código anterior no nivel superior dun paquete, a clase String amplíase para incluír unha función lastChar que non estaba incluída na definición orixinal da clase String.

// Sobrecarga do operador '+' usando unha función de extensión
operator fun Point.plus(other: Point): Point {
    return Point(x + other.x, y + other.y)
}

>>> val p1 = Point(10, 20)
>>> val p2 = Point(30, 40)
>>> println(p1 + p2)
Point(x=40, y=60)

Funcións de ámbito

Kotlin ten cinco funcións de ámbito, que permiten cambiar o ámbito dentro do contexto dun obxecto. As funcións de ámbito son let, run, with, apply, e also.[28]

Desempaquetar argumentos co operador de dispersión

Semellante a Pitón, o asterisco de operador estendido (*) desempaqueta o contido dunha lista como argumentos individuais para unha función, por exemplo:

fun main(args: Array<String>) { 
    val list = listOf("args: ", *args)
    println(list)
}

Desestruturación de declaracións

As declaracións de desestruturación descompoñen un obxecto en varias variables á vez, por exemplo, un obxecto de coordenadas 2D pode desestruturarse en dous enteiros, x e y.

Por exemplo, o obxecto Map.Entry admite a desestruturación para simplificar o acceso aos seus campos de clave e valor:

Non se debe confundir co método destrutor común nas linguaxes orientadas a obxectos.

for ((key, value) in map)
    println("$key: $value")

Funcións aniñadas

Kotlin permite declarar funcións locais dentro doutras funcións ou métodos.

class User(val id: Int, val name: String, val address: String)
    
fun saveUserToDb(user: User) {
    fun validate(user: User, value: String, fieldName: String) {
        require(value.isNotEmpty()) { "Can't save user ${user.id}: empty $fieldName" }
    }
    
    validate(user, user.name, "Name") 
    validate(user, user.address, "Address")
    // Gardar o usuario na base de datos 
    ...
}

As clases son finais por defecto

En Kotlin, para derivar unha nova clase a partir dun tipo de clase base, a clase base debe marcarse explicitamente como "open". Isto contrasta coa maioría das linguaxes orientadas a obxectos, como Java, onde as clases están abertas por defecto.


Exemplo dunha clase base que está aberta para derivar unha nova subclase a partir dela:

// open na clase significa que esta clase permitirá clases derivadas
open class MegaButton {

    // se non hai un open nunha función significa que 
    // o comportamento polimórfico desactívase se a función se sobrescribe na clase derivada
    fun disable() { ... }

    // open nunha función significa que
    // o comportamento polimórfico permítese se a función se sobrescribe na clase derivada
    open fun animate() { ... }
}

class GigaButton: MegaButton() {

    // Uso explícito da palabra clave override necesario para sobrescribir unha función na clase derivada
    override fun animate() { println("Giga Click!") } 
}

As clases abstractas son abertas por defecto

As clases abstractas definen funcións abstractas ou estruturas puramente virtuais de funcións que se definirán nunha clase derivada. As clases abstractas están abertas por defecto.

// Non se precisa a palabra clave open aquí, xa está aberta por defecto
abstract class Animated {

    // Esta función virtual xa está aberta por defecto tamén
    abstract fun animate()
  
    open fun stopAnimating() { }

    fun animateTwice() { }
}

As clases son públicas por defecto

Kotlin proporciona as seguintes palabras clave para restrinxir a visibilidade das declaracións de nivel superior (como as clase) e dos membros da clase: public, internal, protected e private.

Cando se aplica a un membro da clase:

Palabra clave Visibilidade
public (por defecto) En todas partes
internal Dentro dun módulo
protected Dentro de subclases
private Dentro dunha clase

Cando se aplica a unha declaración de nivel superior:

Palabra clave Visibilidade
public (por defecto) En todas partes
internal Dentro dun módulo
private Dentro dun ficheiro

Exemplo:

// A clase só é visible para o módulo actual
internal open class TalkativeButton {
    // o método só é visible para a clase actual
    private fun yell() = println("Hey!")
    // o método é visible para a clase actual e as clases derivadas
    protected fun whisper() = println("Let's talk!")
}
internal class MyTalkativeButton: TalkativeButton() {
    fun utter() = super.whisper()
}
MyTalkativeButton().utter()

Construtor primario vs. construtores secundarios

Kotlin admite a especificación dun "construtor primario" como parte da propia definición da clase, que consiste nunha lista de argumentos despois do nome da clase. Esta lista de argumentos admite unha sintaxe ampliada nas listas de argumentos de funcións estándar de Kotlin que permite a declaración de propiedades da clase no construtor primario, incluíndo atributos de visibilidade, extensibilidade e mutabilidade. Ademais, ao definir unha subclase, as propiedades das superinterfaces e superclases poden ser anuladas no construtor primario.

// Exemplo dunha clase que usa a sintaxe do construtor primario
// (Só se require un construtor para esta clase)
open class BaseUser(open var isSubscribed: Boolean)
open class PowerUser(protected val nickname: String, final override var isSubscribed: Boolean = true):BaseUser(isSubscribed) { }

Non obstante, nos casos nos que se necesita máis dun construtor para unha clase, pódese definir un construtor máis xeral usando a sintaxe do construtor secundario, que se asemella moito á sintaxe do construtor utilizada na maioría das linguaxes orientadas a obxectos como C++, C# e Java.

// Exemplo dunha clase usando a sintaxe do construtor secundario
// (requírese máis dun construtor para esta clase)
class Context
class AttributeSet
open class View(ctx:Context) {
    constructor(ctx: Context, attr: AttributeSet): this(ctx)
}
class MyButton : View {
    // Constructor #1 
    constructor(ctx: Context) : super(ctx) { 
    } 
    // Constructor #2
    constructor(ctx: Context, attr: AttributeSet) : super(ctx, attr) {
        // ... 
    }
}

Clases seladas

As clases e interfaces seladas restrinxen as xerarquías de subclases, o que significa máis control sobre a xerarquía de herdanza.

Declaración da interface e clase seladas:

sealed interface Expr
sealed class Job

Todas as subclases da clase selada defínense no momento da compilación. Non se poden engadir novas subclases despois da compilación do módulo que ten a clase selada. Por exemplo, unha clase selada nun ficheiro jar compilado non se pode subclasificar.

sealed class Vehicle
data class Car(val brandName: String, val owner: String, val color: String): Vehicle()
class Bike(val brandName: String, val owner: String, val color: String): Vehicle()
class Tractor(val brandName: String, val owner: String, val color: String): Vehicle()
val kiaCar = Car("KIA", "John", "Blue")
val hyundaiCar = Car("Hyundai", "Britto", "Green")

Clases de datos

A construción data class de Kotlin define clases cuxo propósito principal é almacenar datos, de xeito similar aos tipos record de Java. Do mesmo xeito que os tipos record de Java, a construción é similar ás clases normais, agás que os métodos clave equals, hashCode e toString xéranse automaticamente a partir das propiedades da clase. A diferenza dos rexistros de Java, as clases de datos están abertas para a herdanza.

Shell interactiva de Kotlin

$ kotlinc-jvm
type :help for help; :quit for quit
>>> 2 + 2
4
>>> println("Hello, World!")
Hello, World!

Kotlin como linguaxe de scripting

Kotlin tamén se pode usar como linguaxe de scripting. Un script é un ficheiro fonte de Kotlin que usa a extensión de ficheiro .kts con código fonte executable no ámbito de nivel superior:

// list_folders.kts
import java.io.File
val folders = File(args[0]).listFiles { file -> file.isDirectory() }
folders?.forEach(::println)

Os scripts pódense executar pasando a opción -script e o ficheiro de script correspondente ao compilador.

$ kotlinc -script list_folders.kts "path_to_folder_to_inspect"

Seguridade con Null

Kotlin fai unha distinción entre tipos de datos que poden ser null e os que non poden selo. Todos os obxectos que poden ser null deben declararse cun sufixo "?" despois do nome do tipo. As operacións en obxectos que poden ser null requiren un coidado especial por parte dos desenvolvedores: débese realizar unha comprobación null antes de usar o valor, xa sexa explicitamente ou coa axuda dos operadores seguros de Kotlin:

  • ?. (o operador de navegación segura) pódese usar para acceder de forma segura a un método ou propiedade dun obxecto posiblemente null. Se o obxecto é null, o método non se chamará e a expresión avalíase como null. Exemplo:
// devolve null se...
// - foo() devolve null,
// - ou se foo() non é null, pero bar() devolve null,
// - ou se foo() e bar() non son null, pero baz() devolve null.
// viceversa, o valor de retorno non é null se e só se foo(), bar() e baz() non son null
foo()?.bar()?.baz()
  • ?: (o operador de coalescencia null) é un operador binario que devolve o primeiro operando, se non é null, se non, o segundo operando. A miúdo chámase operador Elvis, debido á súa semellanza cunha representación de emoticonos de Elvis Presley
    fun sayHello(maybe: String?, neverNull: Int) {
        // uso do operador Elvis
        val name: String = maybe ?: "stranger"
        println("Hello $name")
    }
    

Lambdas

Kotlin ofrece soporte para funcións de orde superior e funcións anónimas, ou lambdas.[29]

// a seguinte función toma unha lambda, f, e execútaa pasándolle a cadea "lambda"
// teña en conta que (String) -> Unit indica unha lambda cun parámetro String e un tipo de retorno Unit
fun executeLambda(f: (String) -> Unit) {
    f("lambda")
}

 As lambdas decláranse usando chaves, { }. Se unha lambda toma parámetros, decláranse dentro das chaves e seguidos do operador ->.

// a seguinte instrución define unha lambda que toma un único parámetro e o pasa á función println
val l = { c : Any? -> println(c) }
// as lambdas sen parámetros poden definirse simplemente usando { }
val l2 = { print("no parameters") }

Exemplo "Hello World"

(Tomado e explicado en https://kotlinlang.org/docs/kotlin-tour-hello-world.html)

fun main() {
    println("Hello, world!")
    // Hello, world!
}

Ferramentas

  • Android Studio (baseado en IntelliJ IDEA) ten soporte oficial para Kotlin, a partir de Android Studio 3.[30]
  • Admítese a integración con ferramentas de compilación comúns de Java, incluíndo Apache Maven[31], Apache Ant[32], e Gradle.[33]
  • Emacs ten un modo Kotlin no seu repositorio de paquetes MELPA.
  • JetBrains tamén proporciona un plugin para Eclipse.[34][35]
  • IntelliJ IDEA soporta plug-ins para Kotlin. IntelliJ IDEA 15 foi a primeira versión en incluír o plug-in de Kotlin no instalador de IntelliJ e en proporcionar soporte de Kotlin de inmediato.[36][37]
  • Gradle: Kotlin ten unha integración perfecta con Gradle, unha ferramenta de automatización de compilación.[38]

Kotlin Multiplataforma

Kotlin Multiplataforma permite que unha única base de código se centre en varias plataformas como Windows, Linux, web, Android e iOS.[39][40]

Compose Multiplataforma é un framework de IU multiplataforma baseado en Jetpack Compose. É Jetpack Compose para Android portado a Windows, macOS, Linux, web, e iOS.[41][42][43] Jetpack Compose usa un plugin de compilador de Kotlin para transformar funcións compoñibles en elementos de IU.[44] Por exemplo, a función compoñible Text mostra unha etiqueta de texto na pantalla.

Cando Kotlin foi anunciado como unha linguaxe oficial de desenvolvemento de Android en Google I/O en maio de 2017, converteuse na terceira linguaxe totalmente compatible con Android, despois de Java e C++.[45] En 2020, Kotlin era a linguaxe máis utilizada en Android, e Google estima que o 70 % das 1000 aplicacións principais da Play Store estaban escritas en Kotlin. O propio Google tiña 60 aplicacións escritas en Kotlin, incluíndo Maps e Drive. Moitas aplicacións de Android, como Google Home, estaban en proceso de migración a Kotlin e, polo tanto, usan tanto Kotlin como Java. Kotlin en Android considérase beneficioso pola súa seguridade de punteiro nulo, así como polas súas características que fan que o código sexa máis curto e lexible.[46]

Ktor é o primeiro framework Kotlin de Jetbrains para crear aplicacións de servidor e cliente.[47][48] Spring Framework engadiu oficialmente a compatibilidade con Kotlin coa versión 5, o 4 de xaneiro de 2017.[49] Para dar máis soporte a Kotlin, Spring traduciu toda a súa documentación a Kotlin e engadiu compatibilidade integrada para moitas características específicas de Kotlin, como as coroutines.[50]

En 2020, JetBrains descubriu nunha enquisa a desenvolvedores que usan Kotlin que o 56 % usaba Kotlin para aplicacións móbiles, mentres que o 47 % o usaba para un backend web. Pouco máis dun terzo de todos os desenvolvedores de Kotlin dixeron que estaban a migrar a Kotlin desde outra linguaxe. A maioría dos usuarios de Kotlin tiñan como obxectivo Android (ou calquera outro uso na JVM), e só o 6 % usaba Kotlin Native.[51]

Adopción

En 2018, Kotlin foi a linguaxe de máis rápido crecemento en GitHub, con 2,6 veces máis desenvolvedores en comparación con 2017.[52] É a cuarta linguaxe de programación máis querida segundo a enquisa para desenvolvedores de Stack Overflow de 2020.[53]

Kotlin tamén recibiu o premio O'Reilly Open Source Software Conference Breakout Award de 2019.[54]

Moitas empresas e organizacións teñen empregado Kotlin para desenvolver os seus backends:

Algunhas empresas e organizacións empregaron Kotlin para o desenvolvemento web:

Varias empresas declararon publicamente que estaban a usar Kotlin:

Notas

  • Este artigo contén citas de titoriais de Kotlin publicados baixo a licenza Apache 2.0.
  1. JetBrains, ed. (2025). "Kotlin Documentation". Consultado o 2025-09-08. 
  2. JetBrains, ed. (2025). "Kotlin/JS Overview". Consultado o 2025-09-08. 
  3. JetBrains, ed. (2025). "Kotlin/Native Overview". Consultado o 2025-09-08. 
  4. "What is the correct English pronunciation of Kotlin?". Kotlin. 16 de outubro de 2019. Arquivado dende o orixinal o 9 de novembro de 2019. Consultado o 9 de novembro de 2019. 
  5. ""Kotlin for JavaScript - Kotlin Programming Language". Kotlin (en inglés). Arquivado dende o orixinal o 16 de agosto de 2020. Consultado o 20 de agosto de 2020. 
  6. ""Kotlin for cross-platform mobile development". JetBrains: Developer Tools for Professionals and Teams (en inglés). Arquivado dende o orixinal o 19 de agosto de 2020. Consultado o 20 de agosto de 2020. 
  7. "Kotlin Foundation - Kotlin Programming Language". Kotlin. Arquivado dende o orixinal o 29 de decembro de 2019. Consultado o 16 de decembro de 2019. 
  8. 8,0 8,1 Lardinois, Frederic (7 de maio de 2019). "Kotlin is now Google's preferred language for Android app development". TechCrunch (en inglés). Arquivado dende o orixinal o 7 de maio de 2019. Consultado o 8 de maio de 2019. 
  9. "Kotlin FAQ". Kotlin. Arquivado dende o orixinal o 2 de xuño de 2021. Consultado o 20 de agosto de 2024. 
  10. "Stability of Kotlin Components". Kotlin. 21 de maio de 2021. Arquivado dende o orixinal o 29 de xullo de 2021. Consultado o 29 de xullo de 2021. 
  11. "Kotlin 1.5.0 – the First Big Release of 2021". Jetbrains Blog. 29 de xullo de 2021. Arquivado dende o orixinal o 12 de agosto de 2021. Consultado o 29 de xullo de 2021. 
  12. Mobius — конференция по мобильной разработке (2015-01-08). "Андрей Бреслав — Kotlin для Android: коротко и ясно". Youtube. Arquivado dende o orixinal o 12 de abril de 2023. Consultado o 28 de maio de 2017. 
  13. "test · JetBrains/kotlin@3e4dce3". GitHub (en inglés). Arquivado dende o orixinal o 17 de outubro de 2022. Consultado o 17 de outubro de 2022. 
  14. 14,0 14,1 Krill, Paul (22 de xullo de 2011). "JetBrains readies JVM language Kotlin". InfoWorld. Arquivado dende o orixinal o 7 de septembro de 2019. Consultado o 2 de febreiro de 2014. 
  15. Waters, John (22 de febreiro de 2012). "Kotlin Goes Open Source". ADTmag.com. Arquivado dende o orixinal o 18 de febreiro de 2014. Consultado o 2 de febreiro de 2014. 
  16. "Why JetBrains needs Kotlin". JetBrains. 2 de agosto de 2011. Arquivado dende o orixinal o 16 de agosto de 2023. Consultado o 11 de febreiro de 2018. 
  17. "Kotlin 1.0 Released: Pragmatic Language for JVM and Android". JetBrains. 15 de febreiro de 2016. Arquivado dende o orixinal o 24 de xaneiro de 2018. Consultado o 11 de abril de 2017. 
  18. Shafirov, Maxim (17 de maio de 2017). "Kotlin on Android. Now official". Arquivado dende o orixinal o 29 de maio de 2023. Consultado o 18 de maio de 2017. 
  19. "JVM Languages Report extended interview with Kotlin creator Andrey Breslav". Zeroturnaround.com. 22 de abril de 2013. Arquivado dende o orixinal o 15 de xaneiro de 2019. Consultado o 2 de febreiro de 2014. 
  20. "Semicolons". JetBrains. Arquivado dende o orixinal o 23 de decembro de 2015. Consultado o 8 de febreiro de 2014. 
  21. Elizarov, Roman (16 de marzo de 2019). "Types are moving to the right". Medium. Arquivado dende o orixinal o 22 de maio de 2023. Consultado o 6 de novembro de 2021. 
  22. Breslav, Andrey (19 de novembro de 2020). "Roman Elizarov is the new Project Lead for Kotlin". The Kotlin Blog. Arquivado dende o orixinal o 20 de xaneiro de 2022. Consultado o 7 de novembro de 2021. 
  23. "functions". jetbrains.com. Arquivado dende o orixinal o 23 de novembro de 2015. Consultado o 8 de febreiro de 2014. 
  24. "What's New in Kotlin 1.3 - Kotlin Programming Language". Kotlin (en inglés). Arquivado dende o orixinal o 22 de agosto de 2023. Consultado o 4 de abril de 2020. 
  25. "Design by Contract (DbC) design considerations". Kotlin Discussions. 16 de agosto de 2012. Arquivado dende o orixinal o 5 de abril de 2023. Consultado o 4 de abril de 2020. 
  26. "Kotlin for JavaScript". Kotlin Help (en inglés). 21 de xaneiro de 2021. Arquivado dende o orixinal o 14 de xullo de 2023. Consultado o 19 de marzo de 2021. 
  27. "Kotlin Examples: Learn Kotlin Programming By Example". Arquivado dende o orixinal o 18 de novembro de 2021. Consultado o 13 de abril de 2019. 
  28. "Scope functions". Kotlin (en inglés). Consultado o 10 de agosto de 2024. 
  29. "Higher-Order Functions and Lambdas". Kotlin. Arquivado dende o orixinal o 22 de xaneiro de 2021. Consultado o 19 de xaneiro de 2018. 
  30. "Kotlin and Android". Android Developers. Arquivado dende o orixinal o 4 de outubro de 2023. Consultado o 19 de xuño de 2017. 
  31. "Using Maven – Kotlin Programming Language". kotlinlang.org. Arquivado dende o orixinal o 3 de novembro de 2016. Consultado o 9 de maio de 2017. 
  32. "Using Ant – Kotlin Programming Language". kotlinlang.org. Arquivado dende o orixinal o 3 de novembro de 2016. Consultado o 9 de maio de 2017. 
  33. "Using Gradle – Kotlin Programming Language". kotlinlang.org. Arquivado dende o orixinal o 9 de novembro de 2016. Consultado o 9 de maio de 2017. 
  34. "Getting Started with Eclipse Neon – Kotlin Programming Language". kotlinlang.org. 10 de novembro de 2016. Arquivado dende o orixinal o 18 de maio de 2023. Consultado o 11 de abril de 2017. 
  35. "JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse". GitHub. Arquivado dende o orixinal o 16 de febreiro de 2016. Consultado o 11 de abril de 2017. 
  36. "Kotlin :: JetBrains Plugin Repository". Plugins.jetbrains.com. 31 de marzo de 2017. Arquivado dende o orixinal o 25 de xuño 2023. Consultado o 11 de abril de 2017. 
  37. "What's New in IntelliJ IDEA 2017.1". Jetbrains.com. Arquivado dende o orixinal o 3 de outubro de 2023. Consultado o 11 de abril de 2017. 
  38. "Gradle". Kotlin Help (en inglés). Arquivado dende o orixinal o 8 de abril de 2024. Consultado o 8 de abril de 2024. 
  39. "Kotlin Multiplatform Overview". Android Developers (en inglés). Consultado o 14 de xuño de 2025. 
  40. "Kotlin Multiplatform – Build Cross-Platform Apps". JetBrains (en inglés). Consultado o 14 de xuño de 2025. 
  41. "Compose Multiplatform – Beautiful UIs Everywhere". JetBrains (en inglés). Consultado o 14 de xuño de 2025. 
  42. "What's new in Compose Multiplatform 1.8.1". Kotlin Multiplatform Help (en inglés). Consultado o 14 de xuño de 2025. 
  43. "Compatibility and versions". Kotlin Multiplatform Help (en inglés). Consultado o 14 de xuño de 2025. 
  44. Panjuta, Denis; Nwokike, Loveth (2024). Tiny Android projects using Kotlin (First edition ed.). Boca Raton, FL: CRC Press/Taylor & Francis Group. pp. 233–257. ISBN 978-1-032-62253-8. 
  45. Lardinois, Frederic (17 de maio de 2017). "Google makes Kotlin a first-class language for writing Android apps". techcrunch.com (en inglés). Arquivado dende o orixinal o 22 de maio de 2017. Consultado o 28 de xuño de 2018. 
  46. Tung, Liam (20 de xullo de 2020). "Kotlin programming language: How Google is using it to squash the code bugs that cause most crashes". ZDNet. Arquivado dende o orixinal o 6 de abril de 2023. Consultado o 6 de decembro de 2020. 
  47. "ktorio/ktor". GitHub. 16 de xuño de 2025. Consultado o 16 de xuño de 2025. 
  48. "Welcome". Ktor Help (en inglés). Consultado o 16 de xuño de 2025. 
  49. "Introducing Kotlin support in Spring Framework 5.0". Spring. 4 de xaneiro de 2017. Arquivado dende o orixinal o 23 de agosto de 2023. Consultado o 29 de setembro de 2020. 
  50. "The State of Kotlin Support in Spring". JetBrains (en inglés). 14 de agosto de 2020. Arquivado dende o orixinal o 7 de xuño de 2023. Consultado o 6 de decembro de 2020. 
  51. "Kotlin Programming - The State of Developer Ecosystem 2020". JetBrains (en inglés). Arquivado dende o orixinal o 5 de abril de 2023. Consultado o 29 de setembro de 2020. 
  52. "The state of the Octoverse". Arquivado dende o orixinal o 22 de marzo de 2019. Consultado o 24 de xullo de 2019. 
  53. "Stack Overflow Developer Survey 2020". Arquivado dende o orixinal o 4 de xuño de 2020. Consultado o 28 de maio de 2020. 
  54. "Kotlin wins Breakout Project of the Year award at OSCON '19"". 18 de xullo de 2019. Arquivado dende o orixinal o 17 de maio de 2022. Consultado o 24 de xullo de 2019. 
  55. "Kotlin at Allegro". Talking Kotlin (en inglés). 01 de outubro de 2018. Arquivado dende o orixinal o 1 de xuño de 2023. Consultado o 29 de setembro de 2020. 
  56. "QLDB at Amazon". Talking Kotlin. 30 de xuño de 2020. Arquivado dende o orixinal o 1 de xuño de 2023. Consultado o 29 de setembro de 2020. 
  57. "Future of Jira Software powered by Kotlin". YouTube. 29 de outubro de 2019. Arquivado dende o orixinal o 1 de setembro de 2023. Consultado o 1 de setembro de 2023. 
  58. "Going Full Kotlin Multiplatform". Talking Kotlin (en inglés). Arquivado dende o orixinal o 5 de abril de 2023. Consultado o 14 de abril de 2023. 
  59. "square/sqldelight". GitHub. Arquivado dende o orixinal o 20 de xuño de 2019. Consultado o 24 de xullo de 2019. 
  60. "Using Kotlin for backend development at Flux". Talking Kotlin (en inglés). 14 de agosto de 2019. Arquivado dende o orixinal o 1 de xuño de 2023. Consultado o 29 de setembro de 2020. 
  61. "State of Kotlin on Android". YouTube. 10 de xuño de 2020. Arquivado dende o orixinal o 15 de xaneiro de 2023. Consultado o 29 de setembro de 2020. 
  62. "Gradle Kotlin DSL Primer". docs.gradle.org. Arquivado dende o orixinal o 18 de agosto de 2023. Consultado o 29 de setembro de 2020. 
  63. "Kotless". Talking Kotlin (en inglés). 30 de xaneiro de 2020. Arquivado dende o orixinal o 5 de abril de 2023. Consultado o 29 de setembro de 2020. 
  64. "Kotlin on the backend at Meshcloud". Talking Kotlin (en inglés). 28 de febreiro de 2018. Arquivado dende o orixinal o 6 de abril de 2023. Consultado o 29 de setembro de 2020. 
  65. "KotlinConf 2019: Kotlin Runs Taxes in Norway by Jarle Hansen & Anders Mikkelsen". YouTube. 16 de decembro de 2019. Arquivado dende o orixinal o 10 de abril de 2023. Consultado o 29 de setembro de 2020. 
  66. "Greenfield Kotlin at OLX". Talking Kotlin (en inglés). 24 de agosto de 2018. Arquivado dende o orixinal o 1 de xuño de 2023. Consultado o 29 de setembro de 2020. 
  67. "Application Monitoring with Micrometer". Talking Kotlin (en inglés). 14 de xuño de 2018. Arquivado dende o orixinal o 1 de abril de 2023. Consultado o 29 de setembro de 2020. 
  68. "Groovy and Kotlin Interop at Rocket Travel". Talking Kotlin (en inglés). 14 de maio de 2018. Arquivado dende o orixinal o 5 de abril de 2023. Consultado o 29 de setembro de 2020. 
  69. "Kotlin at Shazam". Talking Kotlin (en inglés). 29 de xullo de 2018. Arquivado dende o orixinal o 1 de abril de 2023. Consultado o 29 de setembro de 2020. 
  70. "Zally - An API Linter". Talking Kotlin (en inglés). 29 de xaneiro de 2018. Arquivado dende o orixinal o 6 de abril de 2023. Consultado o 29 de setembro de 2020. 
  71. "Java/Kotlin Developer - Barclays - Prague - Wizbii". Wizbii.com (en inglés). Consultado o 29 de setembro de 2020. 
  72. "KotlinConf 2017 - Frontend Kotlin from the Trenches by Gaetan Zoritchak". YouTube. 30 de novembro de 2017. Arquivado dende o orixinal o 10 de abril de 2023. Consultado o 29 de setembro de 2020. 
  73. "Fritz2". Talking Kotlin (en inglés). 14 de setembro de 2020. Arquivado dende o orixinal o 6 de abril de 2023. Consultado o 29 de setembro de 2020. 
  74. "KotlinConf 2019: Kotlin in Space by Maxim Mazin". YouTube. 18 de decembro de 2019. Arquivado dende o orixinal o 9 de abril de 2023. Consultado o 29 de setembro de 2020. 
  75. "How we made Basecamp 3's Android app 100% Kotlin – Signal v. Noise". Signal v. Noise. 29 de abril de 2017. Arquivado dende o orixinal o 1 de agosto de 2018. Consultado o 1 de maio de 2017. 
  76. "Becoming bilingual@coursera". Medium. 26 de abril de 2018. Arquivado dende o orixinal o 15 de xaneiro de 2023. Consultado o 24 de xullo de 2019. 
  77. "Kotlin in Production – What works, Whats broken". Blog.dripstat.com. 24 de setembro de 2016. Arquivado dende o orixinal o 28 de abril de 2019. Consultado o 11 de abril de 2017. 
  78. Chaidarun, Art (6 de abril de 2020). "Migrating Duolingo's Android app to 100% Kotlin". Duolingo Blog (en inglés). 
  79. De Simone, Sergio (13 de novembro de 2020). "Porting Million Lines of Code from Java to Kotlin at Meta". infoQ. 
  80. Spieldenner, Rob (11 de marzo de 2016). "Rob Spieldenner on twitter". x.com. Arquivado dende o orixinal o 25 de decembro de 2022. Consultado o 24 de xullo de 2019. 
  81. "Droidcon NYC 2016 - Kotlin in Production". YouTube. 3 de novembro de 2016. Arquivado dende o orixinal o 14 de abril de 2023. Consultado o 24 de xullo de 2019. 
  82. "Dan Lew on Twitter". x.com. Arquivado dende o orixinal o 2 de maio de 2023. Consultado o 24 de xullo de 2019. 
  83. "Measuring Kotlin Build Performance at Uber". Uber Blog. 30 de abril de 2019. Arquivado dende o orixinal o 5 de xuño de 2023. Consultado o 6 de marzo de 2024. 

Véxase tamén

Outros artigos

  • Comparación de linguas de programación
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya