Kotlin ( / k ɒ t l ɪ n / ) [6] es un multiplataforma , estático de tipos , de propósito general lenguaje de programación con la 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 de Java , [7] pero la inferencia de tipos permite que su sintaxis sea más concisa. Kotlin se dirige principalmente a la JVM, pero también compila en JavaScript(por ejemplo, para aplicaciones web frontend que usan React [8] ) o código nativo (a través de LLVM ); por ejemplo, para aplicaciones nativas de iOS que comparten la lógica empresarial con aplicaciones de Android . [9] Los costos de desarrollo del lenguaje corren a cargo de JetBrains , mientras que la Fundación Kotlin protege la marca registrada Kotlin. [10]
Paradigma | Multi-paradigma : orientado a objetos , funcional , imperativo , estructurado en bloques , declarativo , genérico , reflexivo , concurrente |
---|---|
Diseñada por | JetBrains |
Desarrollador | JetBrains |
Apareció por primera vez | 22 de julio de 2011 |
Lanzamiento estable | 1.5.0 / 30 de marzo de 2021 [1] |
Versión de vista previa | |
Disciplina de mecanografía | Inferido , estático , fuerte |
Plataforma | |
SO | Multiplataforma |
Licencia | Licencia Apache 2.0 |
Extensiones de nombre de archivo | .kt, .kts, .ktm |
Sitio web | kotlinlang .org |
Influenciado por | |
|
El 7 de mayo de 2019, Google anunció que el lenguaje de programación Kotlin es ahora su idioma preferido para los desarrolladores de aplicaciones de Android . [11] 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 de Android Kotlin produce código de bytes de Java 6 de forma predeterminada (que se ejecuta en cualquier JVM posterior), pero permite que el programador elija apuntar a Java 8 hasta 15, para la optimización, [12] o permite más funciones, por ejemplo, Java 8 relacionado con Kotlin 1.4, [13] y tiene soporte de clase de registro experimental para compatibilidad con Java 16. [14]
El soporte de Kotlin para JavaScript (es decir, el back-end clásico) se considera estable en Kotlin 1.3 por sus desarrolladores, mientras que Kotlin / JS (basado en IR) en la versión 1.4 se considera alfa. Kotlin / Native Runtime (por ejemplo, soporte de Apple) se considera beta. [15]
Historia
En julio de 2011, JetBrains dio a conocer Project Kotlin, un nuevo lenguaje para la JVM, que había estado en desarrollo durante un año. [16] El líder de JetBrains, Dmitry Jemerov, dijo que la mayoría de los idiomas no tenían las características que estaban buscando, con la excepción de Scala . Sin embargo, citó el lento tiempo de compilación de Scala como una deficiencia. [16] Uno de los objetivos declarados de Kotlin es compilar tan rápido como Java. En febrero de 2012, JetBrains abrió el proyecto bajo la licencia Apache 2 . [17]
El nombre proviene de la isla Kotlin , cerca de San Petersburgo . Andrey Breslav mencionó que el equipo decidió ponerle el nombre de una isla, al igual que Java recibió el nombre de la isla indonesia de Java [18] (aunque el lenguaje de programación Java tal vez recibió el nombre del café). [19]
JetBrains espera que el nuevo lenguaje impulse las ventas de IntelliJ IDEA . [20]
Kotlin v1.0 se lanzó el 15 de febrero de 2016. [21] Esta se considera la primera versión oficialmente estable y JetBrains se ha comprometido a la compatibilidad con versiones anteriores a largo plazo a partir de esta versión.
En Google I / O 2017, Google anunció un soporte de primera clase para Kotlin en Android . [22]
Kotlin v1.2 se lanzó el 28 de noviembre de 2017. [23] La característica de compartir código entre JVM y plataformas JavaScript se agregó recientemente a esta versión (a partir de la versión 1.4, la programación multiplataforma es una característica alfa [24] actualizada desde "experimental"). Se ha realizado una demostración de pila completa con el nuevo complemento Kotlin / JS Gradle. [25] [26]
Kotlin v1.3 se lanzó el 29 de octubre de 2018, trayendo corrutinas para programación asincrónica.
El 7 de mayo de 2019, Google anunció que el lenguaje de programación Kotlin es ahora su idioma preferido para los desarrolladores de aplicaciones de Android. [11]
Kotlin v1.4 se lanzó en agosto de 2020, por ejemplo, con algunos cambios leves en el soporte para las plataformas de Apple, es decir, en la interoperabilidad Objective-C / Swift . [27]
Diseño
El líder de desarrollo, Andrey Breslav, ha dicho que Kotlin está diseñado para ser un lenguaje orientado a objetos de fuerza industrial y un "mejor lenguaje" que Java , pero aún así ser completamente interoperable con el código Java, lo que permite a las empresas realizar una migración gradual de Java a Kotlin. . [28]
Los puntos y comas son opcionales como terminador de instrucciones ; en la mayoría de los casos, una nueva línea es suficiente para que el compilador deduzca que la declaración ha finalizado. [29]
Las declaraciones de variables de Kotlin y las listas de parámetros tienen el tipo de datos después del nombre de la variable (y con un separador de dos puntos ), similar a BASIC , Pascal y TypeScript .
Las variables en Kotlin pueden ser de solo lectura, declaradas con la palabra clave val , o mutables, declaradas con la var palabra clave. [30]
Los miembros de la clase son públicos de forma predeterminada, y las clases mismas son finales de forma predeterminada, lo que significa que la creación de una clase derivada está deshabilitada a menos que la clase base se declare con el palabra clave abierta .
Además de las clases y las funciones miembro (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 . [31] Las funciones (y constructores) de Kotlin admiten argumentos predeterminados , listas de argumentos de longitud variable , argumentos con nombre y sobrecarga por firma única. Las funciones de los miembros de la clase son virtuales, es decir, se distribuyen en función del tipo de tiempo de ejecución del objeto al que se llaman.
Kotlin 1.3 agrega (estable en stdlib; contratos definidos por el usuario experimentales) soporte para contratos [32] (inspirado en el paradigma de programación del diseño por contrato [33] de Eiffel )
Según los desarrolladores de Kotlin, puede llamar código JavaScript desde Kotlin, por ejemplo, escribir aplicaciones React completas y seguras de tipos , o escribir y mantener aplicaciones web de pila completa compartiendo la lógica de validación con la interfaz, o puede "generar bibliotecas a partir de su código Kotlin que se puede consumir como módulos de cualquier base de código escrito en JavaScript o TypeScript ". [34]
Sintaxis
Estilo de programación procedimental
Kotlin relaja la restricción de Java de permitir que los métodos estáticos y las variables existan solo dentro de un cuerpo de 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 compatibilidad con Java, Kotlin proporciona una JvmName
anotación que especifica un nombre de clase utilizado cuando el paquete se ve desde un proyecto Java. Por ejemplo @file:JvmName("JavaClassName")
,.
Punto de entrada principal
Como en C, C ++, C #, Java y Go, el punto de entrada a un programa de Kotlin es una función llamada "principal", a la que se le puede pasar una matriz que contenga cualquier argumento de la línea de comandos. Esto es opcional desde Kotlin 1.3. [35] Se admite la interpolación de cadenas de estilo shell de Perl , PHP y Unix . También se admite la inferencia de tipo .
// ¡Hola Mundo! ejemplofun main () { val scope = "Mundo" println ( "¡Hola, $ scope !" )}fun main ( args : Array < String > ) { para ( arg en argumentos ) { println ( arg ) }}
Funciones de extensión
Similar a C #, Kotlin permite al usuario agregar funciones a cualquier clase sin las formalidades de crear una clase derivada con nuevas funciones. En cambio, Kotlin agrega el concepto de una función de extensión que permite que una función se "pegue" en la lista de funciones públicas de cualquier clase sin que se coloque formalmente dentro de la clase. En otras palabras, una función de extensión es una función auxiliar que tiene acceso a toda la interfaz pública de una clase que puede usar para crear una nueva interfaz de función para una clase de destino y esta función aparecerá exactamente como una función de la clase, apareciendo como parte de la inspección de finalización del código de las funciones de clase. Por ejemplo:
paquete MyStringExtensionsdivertido String . lastChar (): Char = get ( longitud - 1 )>>> println ( "Kotlin" . lastChar ())
Al colocar el código anterior en el nivel superior de un paquete, la clase String se amplía para incluir una lastChar
función que no estaba incluida en la definición original de la clase String.
// Sobrecarga del operador '+' usando una función de extensión Punto de diversión del operador . más ( otro : Punto ): Punto { Punto de retorno ( x + otro . x , y + otro . y )}>>> val p1 = Punto ( 10 , 20 )>>> val p2 = Punto ( 30 , 40 )>>> println ( p1 + p2 )Punto ( x = 40 , y = 60 )
Desempaquetar argumentos con el operador de propagación
Similar a Python, el operador de propagación asterisco (*) descomprime el contenido de una matriz como argumentos separados por comas para una función:
fun main ( args : Array < String > ) { val list = 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 enteros xey.
Por ejemplo, el Map.Entry
objeto admite la desestructuración para simplificar el acceso a sus campos de clave y valor:
para (( clave , valor ) en el mapa ) { println ( " $ clave : $ valor " )}
Funciones anidadas
Kotlin permite declarar funciones locales dentro de otras funciones o métodos.
class User ( val id : Int , val name : String , val address : String ) fun saveUserToDb ( usuario : Usuario ) { diversión de validación ( usuario : usuario , valor : Cadena , fieldName : Cadena ) { 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 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 forma predeterminada.
Ejemplo de una clase base que está abierta a derivar una nueva subclase de ella.
// abierto en la clase significa que esta clase permitirá clases derivadas clase abierta MegaButton { // no abierto en una función significa que // comportamiento polimórfico deshabilitado si la función se reemplaza en la clase derivada diversión inhabilitar () { ... } // abrir en una función significa que // comportamiento polimórfico permitido si la función se anula en la clase derivada abrir diversión animada () { ... }}clase GigaButton : MegaButton { // Se requiere el uso explícito de la palabra clave override para invalidar una función en la clase derivada anular diversión animada () { 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 por defecto.
// 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 () abre diversión stopAnimating () { } fun animateTwice () { }}
Las clases son públicas por defecto
Kotlin proporciona las siguientes palabras clave para restringir la visibilidad para la declaración de alto nivel, tales como clases, y por miembros de la clase: public
, internal
, protected
, y private
.
Cuando se aplica a un miembro de la clase:
Palabra clave | Visibilidad |
---|---|
public (defecto) | En todas partes |
internal | Dentro de un módulo |
protected | Dentro de subclases |
private | Dentro de una clase |
Cuando se aplica a una declaración de nivel superior:
Palabra clave | Visibilidad |
---|---|
public (defecto) | En todas partes |
internal | Dentro de un módulo |
private | Dentro de un archivo |
Ejemplo:
// La clase es visible solo para el módulo actualinterna abierta clase TalkativeButton : enfocable { // el método solo es visible para la clase actual grito de diversión privada () = println ( "¡Oye!" ) // el método es visible para la clase actual y las clases derivadas diversión protegida susurro () = println ( "¡Hablemos!" )}
Constructor primario frente a constructores secundarios
Kotlin admite la especificación de un "constructor principal" como parte de la propia definición de clase, que consta de una lista de argumentos que sigue al nombre de la clase. Esta lista de argumentos admite una sintaxis ampliada en las listas de argumentos de función 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 pueden anularse en el constructor primario.
// Ejemplo de clase que usa la sintaxis del constructor primario// (Solo se requiere un constructor para esta clase) clase abierta PowerUser : Usuario ( apodo val protegido : String , var de anulación final isSubscriptions : Boolean = true ) { ... }
Sin embargo, en los casos en que se necesita más de un constructor para una clase, se puede utilizar un constructor más general llamado 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 con sintaxis de constructor secundario// (se requiere más de un constructor para esta clase)class MyButton : View { // Constructor # 1 constructor ( ctx : Context ) : super ( ctx ) { // ... } // Constructor # 2 constructor ( ctx : Context , attr : AttributeSet ) : super ( ctx , attr ) { // ... }}
Clases de datos
La data class
construcción de Kotlin define clases cuyo propósito principal es almacenar datos. Este constructo es similar a las clases normales excepto que las funciones de las teclas equals
, toString
y hashCode
se generan automáticamente a partir de las propiedades de clase. En Java, se espera que estas clases proporcionen una variedad estándar de funciones como esas. Las clases de datos no están obligadas a declarar ningún método, aunque cada una debe tener al menos una propiedad. Una clase de datos a menudo se escribe sin un cuerpo, aunque es posible darle a una clase de datos cualquier método o constructor secundario que sea válido para cualquier otra clase. La data
palabra clave se usa antes de la class
palabra clave para definir una clase de datos. [36]
fun main ( args : Array ) { // crea un objeto de clase de datos como cualquier otro objeto de clase var book1 = Book ( "Programación Kotlin" , 250 ) println ( libro1 ) // salida: Libro (nombre = Programación Kotlin, precio = 250)} // clase de datos con parámetros y sus valores predeterminados opcionalesdatos de la clase libro ( val nombre : Cadena = "" , val Precio : Int = 0 )
Cáscara interactiva de Kotlin
$ kotlinc-jvm tipo : ayuda para obtener ayuda ; : dejar para dejar>>> 2 + 2 4
>>> println ( "¡Hola, mundo!" )¡Hola Mundo!>>>
Kotlin como lenguaje de programación
Kotlin también se puede utilizar como lenguaje de programación. Un script es un archivo fuente de Kotlin (.kts) con código ejecutable de nivel superior.
// list_folders.ktsimportar java.io.Fileval carpetas = Archivo ( args [ 0 ] ). listFiles { archivo -> archivo . isDirectory () }carpetas ?. forEach { carpeta -> println ( carpeta ) }
Los scripts se pueden ejecutar pasando la -script
opción y el archivo de script correspondiente al compilador.
$ kotlinc -script list_folders.kts " ruta_a_carpeta_para_inspeccionar "
Seguridad nula
Kotlin hace una distinción entre tipos de datos anulables y no anulables. Todos los objetos que aceptan valores NULL deben declararse con un "?" sufijo después del nombre del tipo. Las operaciones en objetos que aceptan valores NULL necesitan un cuidado especial por parte de los desarrolladores: se debe realizar una verificación de nulos antes de usar el valor. Kotlin proporciona operadores de seguridad nula para ayudar a los desarrolladores a:
- ?. ( 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 evalúa como nula.
- ?: ( operador de fusión nula ) a menudo denominado operador de Elvis :
diversión sayHello ( tal vez : ? Cadena , neverNull : Int ) { // uso del operador elvis val name : String = tal vez ?: "extraño" println ( "Hola, $ nombre " )}
Un ejemplo del uso del operador de navegación segura:
// 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 nulos.// viceversa, el valor de retorno no es nulo si y solo si foo (), bar () y baz () no son nulosfoo () ?. barra () ?. baz ()
Lambdas
Kotlin proporciona soporte para funciones de orden superior y funciones anónimas o lambda. [37]
// la siguiente función toma un lambda, f, y ejecuta f pasándole la cadena, "lambda"// tenga en cuenta que (s: String) -> Unit indica una lambda con un parámetro String y un tipo de retorno de Unitfun executeLambda ( f : ( s : String ) -> Unidad ) { f ( "lambda" )}
Las lambdas se declaran con llaves, {} . Si una lambda toma parámetros, se declaran entre llaves y seguidos por el -> operador.
// la siguiente declaración define una lambda que toma un solo parámetro y lo pasa a la función printlnval l = { c : ¿Alguno? -> println ( c ) }// Las lambdas sin parámetros pueden definirse simplemente usando {}val l2 = { print ( "sin parámetros" ) }
Ejemplo complejo de "hola mundo"
fun main ( args : Array < String > ) { saludar { a . lugar }. imprimir ()}// Funciones integradas de orden superior Saludo divertido en línea ( s : () -> Cadena ) : Cadena = saludo y Otro s () // Funciones de infijo, extensiones, inferencia de tipos, tipos que aceptan valores NULL, // expresiones lambda, etiquetadas así, operador de Elvis (? :)infijo divertido String . y otro ( otro : ¿Alguno? ) = buildString () { añadir ( esto @yAnother ); añadir ( "" ); añadir ( ¿ otro ?: "" ) }// Tipos inmutables, propiedades delegadas, inicialización diferida, plantillas de cadenasval saludo por lazy { val doubleEl : String = "ll" ; "he $ { doubleEl } o" }// Clases selladas, objetos complementarios clase sellada a { objeto complementario { val place = "world" } } // Extensiones, Unidaddivertido String . print () = println ( esto )
Herramientas
- IntelliJ IDEA tiene compatibilidad con complementos para Kotlin. [38] IntelliJ IDEA 15 fue la primera versión que incluyó el complemento Kotlin en el instalador de IntelliJ y proporcionó soporte para Kotlin listo para usar. [39]
- JetBrains también proporciona un complemento para Eclipse . [40] [41]
- Se admite la integración con herramientas comunes de compilación de Java, incluidas Apache Maven , [42] Apache Ant , [43] y Gradle . [44]
- Android Studio (basado en IntelliJ IDEA) tiene soporte oficial para Kotlin, a partir de Android Studio 3. [45]
- Emacs tiene un modo Kotlin en su repositorio de paquetes Melpa.
- Vim tiene un complemento mantenido en GitHub. [46]
- Json2Kotlin genera código Kotlin nativo estilo POJO para el mapeo de respuestas de servicios web.
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 idioma totalmente compatible con Android, además de Java y C ++. [47] A partir de 2020, Kotlin todavía se usa más ampliamente 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's Home, están en proceso de migración a Kotlin, por lo que utilizan 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. [48]
Además de su uso destacado en Android, Kotlin está ganando terreno en el desarrollo del lado del servidor. El Spring Framework añadió oficialmente el apoyo Kotlin con la versión 5, el 4 de enero de 2017. [49] Para un mayor apoyo Kotlin, la primavera ha traducido toda su documentación para Kotlin y ha añadido soporte incorporado para muchos Kotlin específicas características tales como co-rutinas. [50] Además de Spring, JetBrains ha producido un primer marco de trabajo de Kotlin llamado Ktor para crear aplicaciones web. [51]
En 2020, JetBrains descubrió en una encuesta de desarrolladores que usan Kotlin que el 56% usaba Kotlin para aplicaciones móviles, mientras que el 47% lo usaba para un back-end web. Poco más de un tercio de todos los desarrolladores de Kotlin dijeron que estaban migrando a Kotlin desde otro idioma. La mayoría de los usuarios de Kotlin apuntaban a Android (o de otra manera en la JVM), y solo el 6% usaba Kotlin Native. [52]
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. [53] Es el cuarto lenguaje de programación más querido según la Encuesta de desarrolladores de desbordamiento de pila de 2020. [54]
Kotlin también recibió el premio O'Reilly Open Source Software Conference Breakout Award para 2019. [55]
Muchas empresas / organizaciones han utilizado Kotlin para el desarrollo de backend:
- Google [56]
- Administración tributaria de Noruega [57]
- Gradle [58]
- Amazonas [59]
- Cuadrado [60]
- JetBrains [61]
- Flujo [62]
- Allegro [63]
- OLX [64]
- Shazam [65]
- Pivotal [66]
- Viaje en cohete [67]
- Nube de malla [68]
- Zalando [69]
Algunas empresas / organizaciones han utilizado Kotlin para el desarrollo web:
- JetBrains [70]
- Data2viz [71]
- Fritz2 [72]
- Banco de Barclay [73]
Varias empresas han declarado públicamente que estaban usando Kotlin:
- DripStat [74]
- Campo base [75]
- Pinterest [76]
- Coursera [77]
- Netflix [78]
- Uber [79]
- Cuadrado [80]
- Trello [81]
- Duolingo [82]
- Corda, un libro mayor distribuido desarrollado por un consorcio de bancos conocidos (como Goldman Sachs , Wells Fargo , JP Morgan , Deutsche Bank , UBS , HSBC , BNP Paribas , Société Générale ), tiene más del 90% de código Kotlin en su base de código. [83]
Ver también
- Comparación de lenguajes de programación
Referencias
- Este artículo contiene citas de los tutoriales de Kotlin que se publican bajo una licencia de Apache 2.0.
- ^ "JetBrains / kotlin" . GitHub .
- ^ "Lanzamiento de Kotlin 1.5.0-RC · JetBrains / kotlin" . GitHub .
- ^ "JetBrains / kotlin" . GitHub . Consultado el 29 de marzo de 2021 .
- ^ "Lanzamiento build-1.5.0-RC-487 · JetBrains / kotlin" . GitHub . Consultado el 19 de marzo de 2021 .
- ^ "Vista previa de las características del nuevo idioma en Kotlin 1.4.30 | El blog de Kotlin" . Blog de JetBrains . Consultado el 19 de marzo de 2021 .
- ^ "¿Cuál es la pronunciación inglesa correcta de Kotlin?" . 16 de octubre de 2019 . Consultado el 9 de noviembre de 2019 .
- ^ "kotlin-stdlib" . kotlinlang.org . JetBrains . Consultado el 20 de abril de 2018 .
- ^ "Kotlin para JavaScript - Lenguaje de programación Kotlin" . Kotlin . Consultado el 20 de agosto de 2020 .
- ^ "Kotlin para el desarrollo móvil multiplataforma" . JetBrains: herramientas de desarrollo para profesionales y equipos . Consultado el 20 de agosto de 2020 .
- ^ "Fundación Kotlin - Lenguaje de programación Kotlin" . Kotlin .
- ^ a b "Kotlin es ahora el idioma preferido de Google para el desarrollo de aplicaciones de Android" . TechCrunch . Consultado el 8 de mayo de 2019 .
- ^ "Preguntas frecuentes de Kotlin" .
Kotlin le permite elegir la versión de JVM para su ejecución. De forma predeterminada, el compilador Kotlin / JVM produce un código de bytes compatible con Java 6. Si desea utilizar las optimizaciones disponibles en las versiones más recientes de Java, puede especificar explícitamente la versión de Java de destino de la 8 a la 15. Tenga en cuenta que, en este caso, es posible que el código de bytes resultante no se ejecute en versiones inferiores.
- ^ "Novedades de Kotlin 1.4 - Lenguaje de programación Kotlin" . Kotlin . Consultado el 20 de agosto de 2020 .
Kotlin ahora puede generar anotaciones de tipo en el código de bytes de JVM (versión de destino 1.8+) [..] Tenga en cuenta que las anotaciones de tipo de la biblioteca estándar no se emiten en el código de bytes por ahora porque la biblioteca estándar está compilada con la versión de destino 1.6.
- ^ "Novedades de Kotlin 1.4.30 | Kotlin" . Ayuda de Kotlin . Consultado el 19 de marzo de 2021 .
- ^ "Novedades de Kotlin 1.4.30 | Kotlin" . Ayuda de Kotlin . 11 de febrero de 2021 . Consultado el 19 de marzo de 2021 .
- ^ a b Krill, Paul (22 de julio de 2011). "JetBrains prepara el idioma Kotlin de 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 Goes Open Source" . ADTmag.com . 1105 Grupo de Computación Empresarial. Archivado desde el original el 18 de febrero de 2014 . Consultado el 2 de febrero de 2014 .
- ^ Mobius (8 de enero de 2015), Андрей Бреслав - Kotlin для Android: коротко и ясно , consultado el 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 .
- ^ "Por qué JetBrains necesita Kotlin" .
esperamos que Kotlin impulse las ventas de IntelliJ IDEA
- ^ "Lanzamiento de Kotlin 1.0: lenguaje pragmático para JVM y Android | Blog de Kotlin" . Blog.jetbrains.com . 15 de febrero de 2016 . Consultado el 11 de abril de 2017 .
- ^ Shafirov, Maxim (17 de mayo de 2017). "Kotlin en Android. Ahora oficial" .
Hoy, en el discurso de apertura de Google I / O, el equipo de Android anunció un soporte de primera clase para Kotlin.
- ^ "Lanzamiento de Kotlin 1.2: compartir código entre plataformas | Blog de Kotlin" . blog.jetbrains.com . 28 de noviembre de 2017.
- ^ "Proyectos multiplataforma - Lenguaje de programación Kotlin" . Kotlin . Consultado el 20 de agosto de 2020 .
Trabajar en todas las plataformas es un objetivo explícito para Kotlin, pero lo vemos como la premisa de 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 . Consultado el 4 de abril de 2020 .
- ^ "Demostración de la aplicación de pila completa de Kotlin: actualice todas las versiones involucradas para que funcionen con la versión 1.3.70" . youtrack.jetbrains.com . Consultado el 4 de abril de 2020 .
- ^ "Novedades de Kotlin 1.4 - Lenguaje de programación Kotlin" . Kotlin . Consultado el 20 de agosto de 2020 .
En 1.4.0, cambiamos ligeramente la API de Swift generada a partir de Kotlin con respecto a la forma en que se traducen las excepciones.
- ^ "Entrevista ampliada de JVM Languages Report con el creador de Kotlin, Andrey Breslav" . Zeroturnaround.com . 22 de abril de 2013 . Consultado el 2 de febrero de 2014 .
- ^ "Punto y coma" . jetbrains.com . Consultado el 8 de febrero de 2014 .
- ^ "Sintaxis básica" . Kotlin . Jetbrains . Consultado el 19 de enero de 2018 .
- ^ "funciones" . jetbrains.com . Consultado el 8 de febrero de 2014 .
- ^ "Novedades de Kotlin 1.3 - Lenguaje de programación Kotlin" . Kotlin . Consultado el 4 de abril de 2020 .
- ^ "Diseño por Contrato (DbC) consideraciones de diseño" . Discusiones de Kotlin . 16 de agosto de 2012 . 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 . Consultado el 19 de marzo de 2021 .
- ^ "Ejemplos de Kotlin: aprender a programar con el ejemplo de Kotlin" .
- ^ "Introducción a las clases de datos en Kotlin" .
- ^ "Funciones de orden superior y Lambdas" . Kotlin . Jetbrains . Consultado el 19 de enero de 2018 .
- ^ "Repositorio de complementos de Kotlin :: JetBrains" . Plugins.jetbrains.com . 31 de marzo de 2017 . Consultado el 11 de abril de 2017 .
- ^ "Novedades de IntelliJ IDEA 2017.1" . Jetbrains.com . Consultado el 11 de abril de 2017 .
- ^ "Introducción a Eclipse Neon - Lenguaje de programación Kotlin" . Kotlinlang.org . 10 de noviembre de 2016 . Consultado el 11 de abril de 2017 .
- ^ "JetBrains / kotlin-eclipse: complemento de Kotlin para Eclipse" . GitHub . Consultado el 11 de abril de 2017 .
- ^ "Uso del lenguaje de programación Maven - Kotlin" . kotlinlang.org . Consultado el 9 de mayo de 2017 .
- ^ "Uso del lenguaje de programación Ant - Kotlin" . kotlinlang.org . Consultado el 9 de mayo de 2017 .
- ^ "Uso de Gradle - Lenguaje de programación Kotlin" . kotlinlang.org . Consultado el 9 de mayo de 2017 .
- ^ "Kotlin y Android" . Desarrolladores de Android .
- ^ "udalov / kotlin-vim: complemento de Kotlin para Vim. Incluye: resaltado de sintaxis, sangría básica, soporte Syntastic" . GitHub . Consultado el 30 de agosto de 2019 .
- ^ Lardinois, Frederic (17 de mayo de 2017). "Google hace de Kotlin un lenguaje de primera clase para escribir aplicaciones de Android" . techcrunch.com . Consultado el 28 de junio de 2018 .
- ^ "Lenguaje de programación Kotlin: cómo lo usa Google para eliminar los errores de código que causan la mayoría de los bloqueos" . ZDNet .
- ^ "Presentamos el soporte de Kotlin en Spring Framework 5.0" . Primavera . Pivotal . Consultado el 29 de septiembre de 2020 .
- ^ "El estado de apoyo de Kotlin en primavera" . JetBrains . Consultado el 6 de diciembre de 2020 .
- ^ "Revisión de marcos de microservicios: una mirada a las alternativas de Spring Boot" . DZone .
- ^ "Programación de Kotlin - El estado del ecosistema de desarrolladores 2020" . JetBrains . 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 de desarrolladores de desbordamiento de pila 2020" . Consultado el 28 de mayo de 2020 .
- ^ "Kotlin gana el premio Breakout Project of the Year en OSCON '19" . Consultado el 24 de julio de 2019 .
- ^ "Estado de Kotlin en Android" . YouTube . Consultado el 29 de septiembre de 2020 .
- ^ "KotlinConf 2019: Kotlin ejecuta impuestos en Noruega por Jarle Hansen & Anders Mikkelsen" . YouTube . Consultado el 29 de septiembre de 2020 .
- ^ "Imprimación DSL de Gradle Kotlin" . docs.gradle.org . Consultado el 29 de septiembre de 2020 .
- ^ "QLDB en Amazon" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Going Full Kotlin Multiplatform" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Kotless" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Uso de Kotlin para el desarrollo de backend en Flux" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Kotlin en Allegro" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Greenfield Kotlin en OLX" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Kotlin en Shazam" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Seguimiento de aplicaciones con micrómetro" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Interoperabilidad Groovy y Kotlin en Rocket Travel" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Kotlin en el backend de Meshcloud" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Zally: una API Linter" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "KotlinConf 2019: Kotlin en el espacio por Maxim Mazin" . YouTube . Consultado el 29 de septiembre de 2020 .
- ^ "KotlinConf 2017 - Frontend Kotlin desde las trincheras por Gaetan Zoritchak" . YouTube . Consultado el 29 de septiembre de 2020 .
- ^ "Fritz2" . Hablando de Kotlin . Consultado el 29 de septiembre de 2020 .
- ^ "Desarrollador Java / Kotlin - Barclays - Praga - Wizbii" . Wizbii.com . Consultado el 29 de septiembre de 2020 .
- ^ "Kotlin en producción - lo que funciona, lo que está roto" . Blog.dripstat.com . 24 de septiembre de 2016 . Consultado el 11 de abril de 2017 .
- ^ "Cómo hicimos la aplicación de Android de Basecamp 3 100% Kotlin - Signal v. Noise" . Señal contra ruido . 29 de abril de 2017 . Consultado el 1 de mayo de 2017 .
- ^ "Droidcon NYC 2016 - Kotlin en producción" . Consultado el 24 de julio de 2019 .
- ^ "Convertirse en bilingüe @ coursera" . Consultado el 24 de julio de 2019 .
- ^ "Rob Spieldenner en twitter" . Consultado el 24 de julio de 2019 .
- ^ "2017 ¿Quién usa Kotlin?" . Consultado el 24 de julio de 2019 .
- ^ "cuadrado / sqldelight" . Consultado el 24 de julio de 2019 .
- ^ "Dan Lew en Twitter" . Consultado el 24 de julio de 2019 .
- ^ "Duolingo en Twitter" . Consultado el 13 de abril de 2020 .
- ^ "Kotlin 1.1 lanzado con soporte JavaScript, corrutinas y más" . Consultado el 1 de mayo de 2017 .
enlaces externos
- Página web oficial