Kotlin ( / ˈkɒtlɪn / ) [ 2] es un lenguaje de programación de alto nivel , multiplataforma , de tipado estático y de propósito general con inferencia de tipos . Kotlin está diseñado para interoperar completamente con Java , y la versión JVM de la biblioteca estándar de Kotlin depende de la biblioteca de clases Java , pero la inferencia de tipos permite que su sintaxis sea más concisa. Kotlin se dirige principalmente a la JVM, pero también compila a JavaScript (por ejemplo, para aplicaciones web frontend que usan React ) [3] o código nativo a través de LLVM (por ejemplo, para aplicaciones nativas de iOS que comparten lógica empresarial con aplicaciones de Android ). [4] Los costos de desarrollo del lenguaje corren a cargo de JetBrains , mientras que la Fundación Kotlin protege la marca registrada Kotlin. [5]
El 7 de mayo de 2019, Google anunció que el lenguaje de programación Kotlin era ahora su lenguaje preferido para los desarrolladores de aplicaciones Android . [6] Desde el lanzamiento de Android Studio 3.0 en octubre de 2017, Kotlin se ha incluido como una alternativa al compilador estándar de Java. El compilador Kotlin de Android produce código de bytes de Java 8 de forma predeterminada (que se ejecuta en cualquier JVM posterior), pero permite al programador elegir apuntar a Java 9 hasta 20, para optimización, [7] o permite más funciones; tiene soporte de interoperabilidad de clase de registro bidireccional para JVM, introducido en Java 16, considerado estable a partir de Kotlin 1.5.
Kotlin tiene soporte para la web con Kotlin/JS, a través de un backend basado en representación intermedia que ha sido declarado estable desde la versión 1.8. Kotlin/Native (por ejemplo, soporte para Apple Silicon ) ha sido declarado estable desde la versión 1.9.20. [8] [9]
Historia


Nombre
El nombre deriva de la isla Kotlin , una isla rusa en el golfo de Finlandia , cerca de San Petersburgo . Andrey Breslav, ex diseñador principal de Kotlin, mencionó que el equipo decidió nombrarlo en honor a una isla, al igual que el lenguaje de programación Java recibió su nombre de la isla indonesia de Java [10] (aunque se dice que el nombre del lenguaje se inspiró en "java", el término del argot estadounidense para el café, [11] que a su vez se deriva del nombre de la isla). [12]
Desarrollo
En julio de 2011, JetBrains presentó el Proyecto Kotlin, un nuevo lenguaje para la JVM, que había estado en desarrollo durante un año. [13] El líder de JetBrains, Dmitry Jemerov, dijo que la mayoría de los lenguajes no tenían las características que buscaban, con la excepción de Scala . Sin embargo, citó el lento tiempo de compilación de Scala como una deficiencia. [13] Uno de los objetivos declarados de Kotlin es compilar tan rápido como Java. En febrero de 2012, JetBrains abrió el código fuente del proyecto bajo la licencia Apache 2. [14]
JetBrains esperaba que el nuevo lenguaje impulsara las ventas de IntelliJ IDEA . [15]
La primera confirmación en el repositorio Git de Kotlin tuvo lugar el 8 de noviembre de 2010. [16]
Kotlin 1.0 se lanzó el 15 de febrero de 2016. [17] Esta se considera la primera versión oficialmente estable y JetBrains se ha comprometido con la compatibilidad con versiones anteriores a largo plazo a partir de esta versión.
En Google I/O 2017, Google anunció soporte de primera clase para Kotlin en Android . [18]
Kotlin 1.2 se lanzó el 28 de noviembre de 2017. [19] La función de compartir código entre JVM y plataformas JavaScript se agregó recientemente a esta versión (la programación multiplataforma es ahora una función beta [20] que se actualizó de "experimental"). Se realizó una demostración completa con el nuevo complemento Kotlin/JS Gradle. [21] [22]
Kotlin 1.3 se lanzó el 29 de octubre de 2018 y agregó soporte para corrutinas para su uso con programación asincrónica. [23]
El 7 de mayo de 2019, Google anunció que el lenguaje de programación Kotlin es ahora su lenguaje preferido para los desarrolladores de aplicaciones de Android. [6]
Kotlin 1.4 se lanzó en agosto de 2020, con, por ejemplo, algunos cambios leves en el soporte para las plataformas de Apple, es decir, en la interoperabilidad Objective-C / Swift . [24]
Kotlin 1.5 se lanzó en mayo de 2021.
Kotlin 1.6 se lanzó en noviembre de 2021.
Kotlin 1.7 se lanzó en junio de 2022, incluida la versión alfa del nuevo compilador Kotlin K2 . [25]
Kotlin 1.8 se lanzó en diciembre de 2022, 1.8.0 se lanzó el 11 de enero de 2023. [26]
Kotlin 1.9 se lanzó en julio de 2023, 1.9.0 se lanzó el 6 de julio de 2023. [27]
Kotlin 2.0 se lanzó en mayo de 2024, la versión 2.0.0 se lanzó el 21 de mayo de 2024. [28]
Diseño
El líder de desarrollo, Andrey Breslav, ha dicho que Kotlin está diseñado para ser un lenguaje orientado a objetos de nivel industrial y un "mejor lenguaje" que Java , pero aún así ser totalmente interoperable con el código Java, permitiendo a las empresas hacer una migración gradual de Java a Kotlin. [29]
Tomando prestado de Scala , los puntos y coma son opcionales como terminador de declaración ; en la mayoría de los casos, una nueva línea es suficiente para que el compilador deduzca que la declaración ha terminado. [30]
Tomando prestado de Scala , las declaraciones de variables y listas de parámetros de Kotlin hacen que el tipo de datos vaya después del nombre de la variable (y con un separador de dos puntos ), similar a Ada , BASIC , Pascal , TypeScript y Rust . Esto, según un artículo de Roman Elizarov, líder actual del proyecto, da como resultado la alineación de los nombres de las variables y es más agradable a la vista, especialmente cuando hay unas pocas declaraciones de variables en sucesión, y uno o más de los tipos son demasiado complejos para la inferencia de tipos, o necesitan ser declarados explícitamente para que los lectores humanos los entiendan. [31] [32]
Tomando prestado de Scala , las variables en Kotlin pueden ser de solo lectura, declaradas con la palabra clave val , o mutables , declaradas con la palabra clave var . [33]
Tomando prestado de Scala , los miembros de clase son públicos de manera predeterminada, y las clases en sí mismas son finales de manera predeterminada, lo que significa que la creación de una clase derivada está deshabilitada a menos que la clase base se declare con la palabra clave open .
Además de las clases y funciones miembro (que son equivalentes a los métodos) de la programación orientada a objetos, Kotlin también admite la programación procedimental con el uso de funciones . [34] Las funciones y constructores de Kotlin admiten argumentos predeterminados , listas de argumentos de longitud variable , argumentos nombrados y sobrecarga por firma única. Las funciones miembro de clase son virtuales, es decir, se envían en función del tipo de tiempo de ejecución del objeto en el que se llaman.
Kotlin 1.3 agregó soporte para contratos, [35] que son estables para las declaraciones de la biblioteca estándar, pero aún experimentales para las declaraciones definidas por el usuario. Los contratos están inspirados en el paradigma de programación de diseño por contrato de Eiffel [36] .
Siguiendo ScalaJS, el código Kotlin puede transpilarse a JavaScript , lo que permite la interoperabilidad entre el código escrito en los dos lenguajes. Esto se puede utilizar para escribir aplicaciones web completas en Kotlin o para compartir código entre un backend Kotlin y un frontend JavaScript. [37]
Sintaxis
Estilo de programación procedimental
Kotlin relaja la restricción de Java de permitir que los métodos y variables estáticos existan solo dentro del cuerpo de una clase. Los objetos y funciones estáticos se pueden definir en el nivel superior del paquete sin necesidad de un nivel de clase redundante. Para lograr compatibilidad con Java, Kotlin proporciona una JvmNameanotación que especifica un nombre de clase que se utiliza cuando el paquete se visualiza desde un proyecto Java. Por ejemplo, @file:JvmName("JavaClassName").
Punto de entrada principal
Al igual que en C , C++ , C# , Java y Go , el punto de entrada a un programa Kotlin es una función denominada "main", a la que se le puede pasar una matriz que contenga cualquier argumento de línea de comandos . Esto es opcional desde Kotlin 1.3. [38] Se admite la interpolación de cadenas al estilo shell de Perl , PHP y Unix . También se admite la inferencia de tipos .
// Hola, mundo! ejemplo
diversión principal () {
val ámbito = "Mundo"
println ( "Hola, $ scope !" )
}
diversión principal ( argumentos : Matriz < Cadena > ) {
para ( arg en args )
println ( argumento )
}
Funciones de extensión
De manera similar a C#, Kotlin permite agregar una función de extensión a cualquier clase sin las formalidades de crear una clase derivada con nuevas funciones. Una función de extensión tiene acceso a todas las interfaces públicas de una clase, que puede usar para crear una nueva interfaz de función para una clase de destino. Una función de extensión aparecerá exactamente como una función de la clase y se mostrará en la inspección de finalización de código de las funciones de la clase. Por ejemplo:
paquete MyStringExtensions
fun String . lastChar (): Char = obtener ( longitud - 1 )
>>> println ( "Kotlin" .lastChar ( ))
Al colocar el código anterior en el nivel superior de un paquete, la clase String se extiende para incluir una lastCharfunción que no estaba incluida en la definición original de la clase String.
// Sobrecarga del operador '+' utilizando una función de extensión
operador fun Punto . plus ( otro : Punto ): Punto {
retorno Punto ( x + otro . x , y + otro . y )
}
>>> val p1 = Punto ( 10 , 20 )
>>> val p2 = Punto ( 30 , 40 )
>>> println ( p1 + p2 )
Punto ( x = 40 , y = 60 )
Funciones de alcance
Kotlin tiene cinco funciones de alcance que permiten cambiar el alcance dentro del contexto de un objeto . Las funciones de alcance son let, run, with, apply, y also. [39]
Descomprimir argumentos con el operador spread
De manera similar a Python, el operador de propagación asterisco (*) descomprime el contenido de una matriz como argumentos individuales para una función, por ejemplo:
diversión principal ( argumentos : Matriz < Cadena > ) {
val lista = listOf ( "argumentos: " , * argumentos )
println ( lista )
}
Declaraciones de desestructuración
Las declaraciones de desestructuración descomponen un objeto en múltiples variables a la vez, por ejemplo, un objeto de coordenadas 2D podría desestructurarse en dos números enteros, x e y .
Por ejemplo, el Map.Entryobjeto admite la desestructuración para simplificar el acceso a sus campos clave y valor:
para (( clave , valor ) en el mapa )
println ( " $ clave : $ valor " )
Funciones anidadas
Kotlin permite que se declaren funciones locales dentro de otras funciones o métodos.
clase Usuario ( val id : Int , val nombre : String , val dirección : String )
diversión saveUserToDb ( usuario : Usuario ) {
fun validar ( usuario : Usuario , valor : String , nombreDeCampo : String ) {
require ( value.isNotEmpty ()) { " No se puede guardar el usuario $ { user.id } : $ fieldName vacío " }
}
validar ( usuario , usuario.nombre , " Nombre " )
validar ( usuario , usuario.dirección , " Dirección " )
// Guardar el usuario en la base de datos
...
}
Las clases son definitivas por defecto
En Kotlin, para derivar una nueva clase a partir de un tipo de clase base, la clase base debe marcarse explícitamente como "abierta". Esto contrasta con la mayoría de los lenguajes orientados a objetos, como Java, donde las clases están abiertas de manera predeterminada.
Ejemplo de una clase base que está abierta a la derivación de una nueva subclase de ella:
// abierto en la clase significa que esta clase permitirá clases derivadas
abrir clase MegaButton {
// no-open en una función significa que
// comportamiento polimórfico deshabilitado si se reemplaza la función en la clase derivada
diversión deshabilitar () { ... }
// abrir en una función significa que
// Se permite el comportamiento polimórfico si se reemplaza la función en la clase derivada
abrir diversión animar () { ... }
}
clase GigaButton : MegaButton () {
// Uso explícito de la palabra clave override necesaria para anular una función en una clase derivada
anular diversión animate () { println ( "¡Giga Click!" ) }
}
Las clases abstractas están abiertas de forma predeterminada
Las clases abstractas definen funciones de marcador de posición abstractas o "virtuales puras" que se definirán en una clase derivada. Las clases abstractas están abiertas de forma predeterminada.
// No es necesaria la palabra clave abierta aquí, ya está abierta de forma predeterminada
clase abstracta Animada {
//Esta función virtual ya está abierta por defecto también
abstracto divertido animado ()
abrir diversión stopAnimating () { }
divertido animateTwice () { }
}
Las clases son públicas por defecto
Kotlin proporciona las siguientes palabras clave para restringir la visibilidad de las declaraciones de nivel superior, como las clases, y de los miembros de clase: public, internal, protectedy private.
Cuando se aplica a un miembro de la clase:
Cuando se aplica a una declaración de nivel superior:
Ejemplo:
// La clase es visible solo para el módulo actual
Clase interna abierta TalkativeButton {
// El método solo es visible para la clase actual
diversión privada gritar () = println ( "¡Oye!" )
// El método es visible para la clase actual y las clases derivadas.
diversión protegida susurro () = println ( "¡Hablemos!" )
}
clase interna MyTalkativeButton : TalkativeButton () {
divertido utter () = super . whisper ()
}
MiBotonHablante (). utter ()
Constructor primario vs. constructores secundarios
Kotlin admite la especificación de un "constructor principal" como parte de la propia definición de la clase, que consiste en una lista de argumentos que sigue al nombre de la clase. Esta lista de argumentos admite una sintaxis expandida en las listas de argumentos de funciones estándar de Kotlin que permite la declaración de propiedades de clase en el constructor principal, incluidos los atributos de visibilidad, extensibilidad y mutabilidad. Además, al definir una subclase, las propiedades en superinterfaces y superclases se pueden anular en el constructor principal.
// Ejemplo de clase que utiliza la sintaxis del constructor principal
// (Solo se requiere un constructor para esta clase)
abrir clase BaseUser ( abrir var isSubscribed : Boolean )
clase abierta PowerUser ( valor protegido apodo : String , anulación final var isSubscribed : Boolean = true ): BaseUser ( isSubscribed ) { }
Sin embargo, en los casos donde se necesita más de un constructor para una clase, se puede definir un constructor más general utilizando la sintaxis de constructor secundario , que se parece mucho a la sintaxis de constructor utilizada en la mayoría de los lenguajes orientados a objetos como C++, C# y Java.
// Ejemplo de clase que utiliza la sintaxis del constructor secundario
// (se requiere más de un constructor para esta clase)
Contexto de clase
clase AttributeSet
abrir clase Ver ( ctx : Contexto ) {
constructor ( ctx : Contexto , attr : Conjunto de atributos ): este ( ctx )
}
clase MyButton : Ver {
// Constructor #1
constructor ( ctx : Contexto ) : super ( ctx ) {
}
// Constructor #2
constructor ( ctx : Contexto , attr : Conjunto de atributos ) : super ( ctx , attr ) {
// ...
}
}
Clases selladas
Las clases e interfaces selladas restringen las jerarquías de subclases, lo que significa un mayor control sobre la jerarquía de herencia.
Declaración de interfaz y clase selladas:
Interfaz sellada Expr
Trabajo de clase sellada
Todas las subclases de la clase sellada se definen en el momento de la compilación. No se pueden agregar nuevas subclases a la clase sellada después de la compilación del módulo que tiene la clase sellada. Por ejemplo, no se puede crear una subclase de una clase sellada en un archivo jar compilado.
Vehículo de clase sellada
clase de datos Coche ( val nombreDeMarca : String , val propietario : String , val color : String ): Vehículo ()
clase Bicicleta ( val nombreDeMarca : String , val propietario : String , val color : String ): Vehículo ()
clase Tractor ( val nombreDeMarca : String , val propietario : String , val color : String ): Vehículo ()
val kiaCar = Coche ( "KIA" , "John" , "Azul" )
val hyundaiCar = Coche ( "Hyundai" , "Britto" , "Verde" )
Clases de datos
La construcción de Kotlin data classdefine clases cuyo propósito principal es almacenar datos, de manera similar recorda los tipos de Java. Al igual que los tipos de Java , la construcción es similar a las clases normales , recordexcepto que los métodos clave y se generan automáticamente a partir de las propiedades de la clase; a diferencia de los registros, las clases de datos están abiertas a la herencia.
equalshashCodetoString
Shell interactivo de Kotlin
$ kotlinc-jvm
type :help para ayuda; :quit para salir
>>> 2 + 2
4
>>> println ( "¡Hola, mundo!" )
¡Hola, mundo!
Kotlin como lenguaje de programación
Kotlin también se puede utilizar como lenguaje de scripts. Un script es un archivo fuente de Kotlin que utiliza la extensión de nombre de archivo .kts , con código fuente ejecutable en el ámbito de nivel superior:
// lista_carpetas.kts
importar archivo java.io.
val carpetas = Archivo ( args [ 0 ] ). listFiles { archivo -> archivo . isDirectory () }
carpetas ?. forEach ( :: println )
Los scripts se pueden ejecutar pasando la -scriptopción y el archivo de script correspondiente al compilador.
$ kotlinc -script list_folders.kts "ruta_a_la_carpeta_a_inspeccionar"
Seguridad nula
Kotlin distingue entre tipos de datos que aceptan valores nulos y tipos que no. Todos los objetos que aceptan valores nulos deben declararse con un sufijo "?" después del nombre del tipo. Las operaciones con objetos que aceptan valores nulos requieren un cuidado especial por parte de los desarrolladores: se debe realizar una comprobación de valores nulos antes de usar el valor, ya sea explícitamente o con la ayuda de los operadores seguros de Kotlin:
- ?. (el operador de navegación segura ) se puede utilizar para acceder de forma segura a un método o propiedad de un objeto posiblemente nulo. Si el objeto es nulo, no se llamará al método y la expresión se evaluará como nula. Ejemplo:
// devuelve nulo si... // - foo() devuelve nulo, // - o si foo() no es nulo, pero bar() devuelve nulo, // - o si foo() y bar() no son nulos, pero baz() devuelve nulo. // viceversa, el valor de retorno no es nulo si y solo si foo(), bar() y baz() no son nulos foo () ? .bar () ? .baz ()
- ?: (el operador de fusión nula ) es un operador binario que devuelve el primer operando, si no es nulo, de lo contrario, el segundo operando. A menudo se lo conoce como el operador Elvis , debido a su parecido con una representación emoticón de Elvis Presley.
divertido decirHola ( tal vez : String ?, nuncaNull : Int ) { // uso del operador Elvis val nombre : String = tal vez ?: "extraño" println ( "Hola $ nombre " ) }
Lambdas
Kotlin proporciona soporte para funciones de orden superior y funciones anónimas , o lambdas . [40]
// la siguiente función toma una lambda, f, y ejecuta f pasándole la cadena "lambda"
// tenga en cuenta que (Cadena) -> Unidad indica una lambda con un parámetro de cadena y tipo de retorno de unidad
diversión ejecutarLambda ( f : ( Cadena ) -> Unidad ) {
f ( "lambda" )
}
Las lambdas se declaran mediante llaves, { } . Si una lambda acepta parámetros, estos se declaran entre llaves y van seguidos del operador -> .
// la siguiente declaración define una lambda que toma un solo parámetro y lo pasa a la función println
val l = { c : ¿Alguna? -> println ( c ) }
// Las lambdas sin parámetros se pueden definir simplemente usando { }
val l2 = { print ( "sin parámetros" ) }
Ejemplo de "Hola mundo"
(Tomado y explicado en https://kotlinlang.org/docs/kotlin-tour-hello-world.html.)
diversión principal () {
println ( "¡Hola, mundo!" )
// ¡Hola Mundo!
}
Herramientas
- Android Studio (basado en IntelliJ IDEA) tiene soporte oficial para Kotlin, a partir de Android Studio 3. [41]
- Se admite la integración con herramientas de compilación Java comunes, incluidas Apache Maven , [42] Apache Ant , [43] y Gradle . [44]
- Emacs tiene un modo Kotlin en su repositorio de paquetes MELPA.
- JetBrains también proporciona un complemento para Eclipse . [45] [46]
- IntelliJ IDEA tiene soporte de complemento para Kotlin. [47] IntelliJ IDEA 15 fue la primera versión que incluyó el complemento Kotlin en el instalador de IntelliJ y que brindó soporte para Kotlin de manera inmediata. [48]
- Gradle : Kotlin tiene una integración perfecta con Gradle, que es una herramienta de automatización de compilación popular. Gradle le permite compilar, automatizar y administrar el ciclo de vida de sus proyectos Kotlin de manera eficiente [49]
Aplicaciones
Cuando Kotlin se anunció como lenguaje de desarrollo oficial de Android en Google I/O en mayo de 2017, se convirtió en el tercer lenguaje totalmente compatible con Android, después de Java y C++. [50] A partir de 2020 [actualizar], Kotlin es el lenguaje más utilizado en Android, y Google estima que el 70% de las 1000 aplicaciones principales en Play Store están escritas en Kotlin. El propio Google tiene 60 aplicaciones escritas en Kotlin, incluidas Maps y Drive. Muchas aplicaciones de Android, como Google Home, están en proceso de migración a Kotlin y, por lo tanto, usan tanto Kotlin como Java. Kotlin en Android se considera beneficioso por su seguridad de puntero nulo , así como por sus características que hacen que el código sea más corto y legible. [51]
Además de su uso destacado en Android, Kotlin está ganando terreno en el desarrollo del lado del servidor. El Spring Framework agregó oficialmente soporte para Kotlin con la versión 5, el 4 de enero de 2017. [52] Para brindar más soporte a Kotlin, Spring ha traducido toda su documentación a Kotlin y agregó soporte integrado para muchas características específicas de Kotlin, como corrutinas. [53] Además de Spring, JetBrains ha producido un framework Kotlin-first llamado Ktor para crear aplicaciones web. [54]
En 2020, JetBrains descubrió en una encuesta a desarrolladores que usan Kotlin que el 56 % lo usaba para aplicaciones móviles, mientras que el 47 % lo usaba para un back-end web. Un poco más de un tercio de todos los desarrolladores de Kotlin dijeron que estaban migrando a Kotlin desde otro lenguaje. La mayoría de los usuarios de Kotlin apuntaban a Android (o de otro modo en la JVM), y solo el 6 % usaba Kotlin Native. [55]
Adopción
En 2018, Kotlin fue el lenguaje de más rápido crecimiento en GitHub, con 2,6 veces más desarrolladores en comparación con 2017. [56] Es el cuarto lenguaje de programación más querido según la Encuesta de desarrolladores de Stack Overflow de 2020. [57]
Kotlin también recibió el premio Breakout Award de la O'Reilly Open Source Software Conference de 2019. [58]
Muchas empresas/organizaciones han utilizado Kotlin para el desarrollo backend:
- Alegro [59]
- Amazonas [60]
- Atlassiano [61]
- Aplicación de efectivo [62] [63]
- Flujo [64]
- Google [65]
- Gradle [66]
- Cerebros a chorro [67]
- Nube de malla [68]
- Administración Tributaria Noruega [69]
- OLX [70]
- Pivotal [71]
- Viajes en cohetes [72]
- Shazam [73]
- Zalando [74]
Algunas empresas/organizaciones han utilizado Kotlin para el desarrollo web:
- Banco Barclays [75]
- Visualización de datos [76]
- Fritz2 [77]
- Cerebros a chorro [78]
Varias empresas han declarado públicamente que utilizan Kotlin:
- Campamento base [79]
- Corda, un libro de contabilidad distribuido desarrollado por un consorcio de bancos conocidos (como Goldman Sachs , Wells Fargo , JP Morgan , Deutsche Bank , UBS , HSBC , BNP Paribas y Société Générale ), tiene más del 90% de código Kotlin en su base de código.
- Cursora [80]
- DripStat [81]
- Duolingo [82]
- Netflix [83]
- Interés [84]
- Trello [85]
- Uber [86]
Véase también
Referencias
- Este artículo contiene citas de tutoriales de Kotlin que se publican bajo una licencia Apache 2.0.
- ^ "Lanzamiento de Kotlin 2.0.0 (Repositorio)".
- ^ "¿Cuál es la pronunciación correcta de Kotlin en inglés?". 16 de octubre de 2019. Archivado desde el original el 9 de noviembre de 2019. Consultado el 9 de noviembre de 2019 .
- ^ "Kotlin para JavaScript - Lenguaje de programación Kotlin". Kotlin . Archivado desde el original el 16 de agosto de 2020 . Consultado el 20 de agosto de 2020 .
- ^ "Kotlin para el desarrollo móvil multiplataforma". JetBrains: herramientas de desarrollo para profesionales y equipos . Archivado desde el original el 19 de agosto de 2020. Consultado el 20 de agosto de 2020 .
- ^ "Fundación Kotlin - Lenguaje de programación Kotlin". Kotlin . Archivado desde el original el 29 de diciembre de 2019 . Consultado el 16 de diciembre de 2019 .
- ^ ab Lardinois, Frederic (7 de mayo de 2019). «Kotlin es ahora el lenguaje preferido de Google para el desarrollo de aplicaciones Android». TechCrunch . Archivado desde el original el 7 de mayo de 2019. Consultado el 8 de mayo de 2019 .
- ^ "Preguntas frecuentes sobre Kotlin". Archivado del original el 2 de junio de 2021 . Consultado el 20 de agosto de 2024 .
Kotlin le permite elegir la versión de JVM para la ejecución. De forma predeterminada, el compilador Kotlin/JVM produce un bytecode compatible con Java 8. Si desea utilizar las optimizaciones disponibles en las versiones más nuevas de Java, puede especificar explícitamente la versión de Java de destino de la 9 a la 21. Tenga en cuenta que, en este caso, el bytecode resultante podría no ejecutarse en versiones anteriores.
- ^ "Estabilidad de los componentes de Kotlin". Kotlin . 21 de mayo de 2021. Archivado desde el original el 29 de julio de 2021 . Consultado el 29 de julio de 2021 .
- ^ "Kotlin 1.5.0: el primer gran lanzamiento de 2021". Kotlin . 4 de mayo de 2021. Archivado desde el original el 12 de agosto de 2021 . Consultado el 29 de julio de 2021 .
- ^ Mobius (8 de enero de 2015), Андрей Бреслав - Kotlin для Android: коротко и ясно, archivado desde el original el 12 de abril de 2023 , recuperado 28 de mayo de 2017
- ^ Kieron Murphy (4 de octubre de 1996). «Entonces, ¿por qué decidieron llamarlo Java?». JavaWorld . Archivado desde el original el 15 de marzo de 2019. Consultado el 14 de octubre de 2017 .
- ^ Merriam-Webster (8 de junio de 2023). «Definición y significado de Java». www.merriam-webster.com . Archivado desde el original el 4 de julio de 2023. Consultado el 3 de julio de 2023 .
- ^ ab Krill, Paul (22 de julio de 2011). «JetBrains prepara el lenguaje Kotlin para JVM». InfoWorld . Archivado desde el original el 7 de septiembre de 2019 . Consultado el 2 de febrero de 2014 .
- ^ Waters, John (22 de febrero de 2012). "Kotlin se vuelve de código abierto". ADTmag.com . 1105 Enterprise Computing Group. Archivado desde el original el 18 de febrero de 2014 . Consultado el 2 de febrero de 2014 .
- ^ "Por qué JetBrains necesita Kotlin". 2 de agosto de 2011. Archivado desde el original el 16 de agosto de 2023. Consultado el 11 de febrero de 2018.
Esperamos que Kotlin impulse las ventas de IntelliJ IDEA
- ^ "test · JetBrains/kotlin@3e4dce3". GitHub . Archivado desde el original el 17 de octubre de 2022 . Consultado el 17 de octubre de 2022 .
- ^ "Lanzamiento de Kotlin 1.0: lenguaje pragmático para JVM y Android | Blog de Kotlin". Blog.jetbrains.com . 15 de febrero de 2016. Archivado desde el original el 24 de enero de 2018 . Consultado el 11 de abril de 2017 .
- ^ Shafirov, Maxim (17 de mayo de 2017). "Kotlin en Android. Ahora oficial". Archivado desde el original el 29 de mayo de 2023. Consultado el 18 de mayo de 2017. Hoy, en la presentación de Google I/O ,
el equipo de Android anunció un soporte de primera clase para Kotlin.
- ^ "Lanzamiento de Kotlin 1.2: intercambio de código entre plataformas | Blog de Kotlin". blog.jetbrains.com . 28 de noviembre de 2017. Archivado desde el original el 24 de mayo de 2023 . Consultado el 29 de noviembre de 2017 .
- ^ "Proyectos multiplataforma: lenguaje de programación Kotlin". Kotlin . Archivado del original el 18 de agosto de 2020 . Consultado el 20 de agosto de 2020 .
Trabajar en todas las plataformas es un objetivo explícito de Kotlin, pero lo vemos como una premisa para un objetivo mucho más importante: compartir código entre plataformas. Con soporte para JVM, Android, JavaScript, iOS, Linux, Windows, Mac e incluso sistemas integrados como STM32, Kotlin puede manejar todos y cada uno de los componentes de una aplicación moderna.
- ^ "Kotlin/kotlin-full-stack-application-demo". Kotlin. 3 de abril de 2020. Archivado desde el original el 14 de septiembre de 2020 . Consultado el 4 de abril de 2020 .
- ^ "Demostración de la aplicación full stack de Kotlin: actualización de todas las versiones involucradas para que funcionen con la versión 1.3.70". youtrack.jetbrains.com . Archivado desde el original el 2 de agosto de 2020 . Consultado el 4 de abril de 2020 .
- ^ "Lanzamiento de Kotlin 1.1 con soporte para JavaScript, corrutinas y más". Archivado desde el original el 4 de junio de 2023 . Consultado el 1 de mayo de 2017 .
- ^ "Novedades en Kotlin 1.4 - Lenguaje de programación Kotlin". Kotlin . Archivado desde el original el 8 de junio de 2023 . Consultado el 20 de agosto de 2020 .
En 1.4.0, cambiamos ligeramente la API de Swift generada desde Kotlin con respecto a la forma en que se traducen las excepciones.
- ^ "Novedades de Kotlin 1.7.0 | Kotlin". Ayuda de Kotlin . Archivado desde el original el 20 de junio de 2022 . Consultado el 20 de junio de 2022 .
- ^ Paul Krill (12 de enero de 2023). «Kotlin 1.8.0 agrega copia recursiva y eliminación para directorios». Archivado desde el original el 8 de julio de 2023. Consultado el 8 de marzo de 2022 .
- ^ Sarah Haggarty (6 de julio de 2023). «Lanzamiento de Kotlin 1.9.0». Archivado desde el original el 28 de julio de 2023. Consultado el 6 de julio de 2023 .
- ^ Github (21 de mayo de 2024). «Kotlin 2.0.0». Archivado desde el original el 21 de mayo de 2024. Consultado el 21 de mayo de 2024 .
- ^ "Entrevista ampliada de JVM Languages Report con el creador de Kotlin, Andrey Breslav". Zeroturnaround.com . 22 de abril de 2013. Archivado desde el original el 15 de enero de 2019 . Consultado el 2 de febrero de 2014 .
- ^ "Punto y coma". jetbrains.com . Archivado desde el original el 23 de diciembre de 2015 . Consultado el 8 de febrero de 2014 .
- ^ "Los tipos se están moviendo hacia la derecha". Medium . 16 de julio de 2020. Archivado desde el original el 22 de mayo de 2023 . Consultado el 6 de noviembre de 2021 .
- ^ "Roman Elizarov es el nuevo líder del proyecto Kotlin". El blog de Kotlin . JetBrains. 19 de noviembre de 2020. Archivado desde el original el 20 de enero de 2022 . Consultado el 7 de noviembre de 2021 .
- ^ "Sintaxis básica". Kotlin . Jetbrains. Archivado desde el original el 29 de enero de 2021 . Consultado el 19 de enero de 2018 .
- ^ "funciones". jetbrains.com . Archivado desde el original el 23 de noviembre de 2015 . Consultado el 8 de febrero de 2014 .
- ^ "Novedades de Kotlin 1.3: lenguaje de programación Kotlin". Kotlin . Archivado desde el original el 22 de agosto de 2023 . Consultado el 4 de abril de 2020 .
- ^ "Consideraciones de diseño de Design by Contract (DbC)". Discusiones sobre Kotlin . 16 de agosto de 2012. Archivado desde el original el 5 de abril de 2023 . Consultado el 4 de abril de 2020 .
Implementar la semántica completa de Eiffel DbC y mejorarla.
- ^ "Kotlin para JavaScript | Kotlin". Ayuda de Kotlin . 21 de enero de 2021. Archivado desde el original el 14 de julio de 2023 . Consultado el 19 de marzo de 2021 .
- ^ "Ejemplos de Kotlin: aprenda a programar en Kotlin con ejemplos". Archivado desde el original el 18 de noviembre de 2021 . Consultado el 13 de abril de 2019 .
- ^ "Funciones de ámbito | Kotlin". Ayuda de Kotlin . Consultado el 10 de agosto de 2024 .
- ^ "Funciones de orden superior y lambdas". Kotlin . Jetbrains. Archivado desde el original el 22 de enero de 2021 . Consultado el 19 de enero de 2018 .
- ^ "Kotlin y Android". Desarrolladores de Android . Archivado desde el original el 4 de octubre de 2023. Consultado el 19 de junio de 2017 .
- ^ "Usando Maven – Lenguaje de programación Kotlin". kotlinlang.org . Archivado desde el original el 3 de noviembre de 2016 . Consultado el 9 de mayo de 2017 .
- ^ "Usando Ant – Lenguaje de programación Kotlin". kotlinlang.org . Archivado desde el original el 3 de noviembre de 2016 . Consultado el 9 de mayo de 2017 .
- ^ "Uso de Gradle: lenguaje de programación Kotlin". kotlinlang.org . Archivado desde el original el 9 de noviembre de 2016 . Consultado el 9 de mayo de 2017 .
- ^ "Introducción a Eclipse Neon: lenguaje de programación Kotlin". Kotlinlang.org . 10 de noviembre de 2016. Archivado desde el original el 18 de mayo de 2023 . Consultado el 11 de abril de 2017 .
- ^ "JetBrains/kotlin-eclipse: complemento de Kotlin para Eclipse". GitHub. Archivado desde el original el 16 de febrero de 2016. Consultado el 11 de abril de 2017 .
- ^ "Kotlin :: Repositorio de complementos de JetBrains". Plugins.jetbrains.com . 31 de marzo de 2017. Archivado desde el original el 25 de junio de 2023 . Consultado el 11 de abril de 2017 .
- ^ "Novedades de IntelliJ IDEA 2017.1". Jetbrains.com . Archivado desde el original el 3 de octubre de 2023. Consultado el 11 de abril de 2017 .
- ^ "Gradle | Kotlin". Ayuda de Kotlin . Archivado desde el original el 8 de abril de 2024. Consultado el 8 de abril de 2024 .
- ^ Lardinois, Frederic (17 de mayo de 2017). «Google convierte a Kotlin en un lenguaje de primera clase para escribir aplicaciones Android». techcrunch.com . Archivado desde el original el 22 de mayo de 2017. Consultado el 28 de junio de 2018 .
- ^ "Lenguaje de programación Kotlin: cómo lo utiliza Google para eliminar los errores de código que provocan la mayoría de los fallos". ZDNet . Archivado desde el original el 6 de abril de 2023 . Consultado el 6 de diciembre de 2020 .
- ^ "Presentación de la compatibilidad con Kotlin en Spring Framework 5.0". Spring . Pivotal. 4 de enero de 2017. Archivado desde el original el 23 de agosto de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "El estado del soporte de Kotlin en Spring". JetBrains . 14 de agosto de 2020. Archivado desde el original el 7 de junio de 2023 . Consultado el 6 de diciembre de 2020 .
- ^ "Revisión de los marcos de microservicios: una mirada a las alternativas de Spring Boot". DZone . Archivado desde el original el 21 de mayo de 2023 . Consultado el 6 de diciembre de 2020 .
- ^ "Programación en Kotlin: el estado del ecosistema de desarrolladores en 2020". JetBrains . Archivado desde el original el 5 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "El estado del Octoverso". Archivado desde el original el 22 de marzo de 2019 . Consultado el 24 de julio de 2019 .
- ^ "Encuesta para desarrolladores de Stack Overflow 2020". Archivado desde el original el 4 de junio de 2020 . Consultado el 28 de mayo de 2020 .
- ^ "Kotlin gana el premio al Proyecto Revelación del Año en OSCON '19". 18 de julio de 2019. Archivado desde el original el 17 de mayo de 2022. Consultado el 24 de julio de 2019 .
- ^ "Kotlin en Allegro". Hablando de Kotlin . Octubre de 2018. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "QLDB en Amazon". Hablando de Kotlin . 30 de junio de 2020. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "El futuro de Jira Software impulsado por Kotlin". YouTube . Archivado desde el original el 1 de septiembre de 2023 . Consultado el 1 de septiembre de 2023 .
- ^ "Pasando a Kotlin en multiplataforma". Talking Kotlin . 14 de abril de 2020. Archivado desde el original el 5 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "square/sqldelight". GitHub . Archivado desde el original el 20 de junio de 2019 . Consultado el 24 de julio de 2019 .
- ^ "Uso de Kotlin para el desarrollo backend en Flux". Talking Kotlin . 14 de agosto de 2019. Archivado desde el original el 1 de junio de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Estado de Kotlin en Android". YouTube . Archivado desde el original el 15 de enero de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Gradle Kotlin DSL Primer". docs.gradle.org . Archivado desde el original el 18 de agosto de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Kotless". Hablando de Kotlin . 30 de enero de 2020. Archivado desde el original el 5 de abril de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "Kotlin en el backend de Meshcloud". Hablando de Kotlin . 28 de febrero de 2018. Archivado desde el original el 6 de abril de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "KotlinConf 2019: Kotlin administra impuestos en Noruega por Jarle Hansen y Anders Mikkelsen". YouTube . Archivado desde el original el 10 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Greenfield Kotlin en OLX". Hablando de Kotlin . 24 de agosto de 2018. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "Monitoreo de aplicaciones con Micrometer". Talking Kotlin . 14 de junio de 2018. Archivado desde el original el 1 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Interoperabilidad entre Groovy y Kotlin en Rocket Travel". Talking Kotlin . 14 de mayo de 2018. Archivado desde el original el 5 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Kotlin en Shazam". Hablando de Kotlin . 29 de julio de 2018. Archivado desde el original el 1 de abril de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "Zally - Un API Linter". Hablando de Kotlin . 29 de enero de 2018. Archivado desde el original el 6 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Desarrollador Java/Kotlin - Barclays - Praga - Wizbii". Wizbii.com . Consultado el 29 de septiembre de 2020 .
- ^ "KotlinConf 2017 - Frontend Kotlin desde las trincheras por Gaetan Zoritchak". YouTube . Archivado desde el original el 10 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Fritz2". Hablando de Kotlin . 14 de septiembre de 2020. Archivado desde el original el 6 de abril de 2023. Consultado el 29 de septiembre de 2020 .
- ^ "KotlinConf 2019: Kotlin en el espacio por Maxim Mazin". YouTube . Archivado desde el original el 9 de abril de 2023 . Consultado el 29 de septiembre de 2020 .
- ^ "Cómo hicimos que la aplicación Android de Basecamp 3 fuera 100 % Kotlin – Signal v. Noise". Signal v. Noise . 29 de abril de 2017. Archivado desde el original el 1 de agosto de 2018 . Consultado el 1 de mayo de 2017 .
- ^ "Convertirse en bilingüe en Coursera". 26 de abril de 2018. Archivado desde el original el 15 de enero de 2023. Consultado el 24 de julio de 2019 .
- ^ "Kotlin en producción: qué funciona y qué no funciona". Blog.dripstat.com . 24 de septiembre de 2016. Archivado desde el original el 1 de julio de 2019 . Consultado el 11 de abril de 2017 .
- ^ "Duolingo en Twitter". Archivado desde el original el 16 de marzo de 2023. Consultado el 13 de abril de 2020 .
- ^ "Rob Spieldenner en Twitter". Archivado desde el original el 25 de diciembre de 2022. Consultado el 24 de julio de 2019 .
- ^ "Droidcon NYC 2016 - Kotlin en producción". YouTube . Archivado desde el original el 14 de abril de 2023 . Consultado el 24 de julio de 2019 .
- ^ "Dan Lew en Twitter". Archivado desde el original el 2 de mayo de 2023. Consultado el 24 de julio de 2019 .
- ^ "Medición del rendimiento de la compilación de Kotlin en Uber". 30 de abril de 2019. Archivado desde el original el 5 de junio de 2023. Consultado el 6 de marzo de 2024 .
Enlaces externos
- Sitio web oficial