Kotlin (lenguaje de programación)
Kotlin | ||
---|---|---|
![]() | ||
![]() | ||
Desarrollador(es) | ||
JetBrains https://kotlinlang.org/ | ||
Información general | ||
Extensiones comunes | .kt, .kts, .ktm | |
Paradigma | Multiparadigma: orientado a objetos, funcional, imperativo, estructurado en bloques, declarativo, genérico, reflexivo, concurrente | |
Apareció en | 2016 | |
Diseñado por | JetBrains | |
Última versión estable | 2.0.0 (21 de mayo de 2024[1]) | |
Sistema de tipos | estático | |
Influido por | Java, Scala, Groovy, C#, Gosu | |
Sistema operativo | Multiplataforma: Cualquiera que soporte la JVM o tenga un intérprete de Javascript | |
Licencia | Apache 2 | |
Kotlin es un lenguaje de programación orientado a objetos multiplataforma, estáticamente tipado, de alto nivel y propósito general con inferencia de tipos. Kotlin está diseñado para ser totalmente interoperable con Java, y la versión JVM de la biblioteca estándar de Kotlin depende de la Java Class Library,[2] 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 front-end que utilizan React) o código nativo a través de LLVM (por ejemplo, para aplicaciones nativas de iOS que comparten lógica de negocio con aplicaciones Android).[3][4] Los costes de desarrollo del lenguaje corren a cargo de JetBrains, mientras que la Fundación Kotlin protege la marca comercial Kotlin.[5]
El 7 de mayo de 2019, Google anunció que el lenguaje de programación Kotlin es ahora el lenguaje preferido para los desarrolladores de apps Android,[6] y desde el lanzamiento de Android Studio 3.0 en octubre de 2017, Kotlin se ha incluido como alternativa al compilador Java estándar. El compilador Kotlin de Android produce bytecode Java 8 por defecto (que se ejecuta en cualquier JVM posterior), pero permite al programador elegir como objetivo Java 9 a 18 para su optimización,[7] o permite más características; tiene soporte para la interoperabilidad bidireccional de clases de registro para la JVM, introducida en Java 16, considerada estable a partir de Kotlin 1.5.
Kotlin tiene soporte para la web; compilando a JavaScript (es decir, Kotlin/JS con el backend clásico, declarado estable a partir de la versión 1.3), mientras que el más nuevo Kotlin/JS (basado en lenguaje intermedio) está en beta a partir de la versión 1.5.30. Kotlin/Native (por ejemplo, para compatibilidad de Apple Silicon) está en beta desde la versión 1.3.[8][9]
Historia
[editar]En julio de 2011 JetBrains reveló el Proyecto Kotlin, un nuevo lenguaje para la JVM, el cual había estado bajo desarrollo por un año.[10] El líder de JetBrains, Dmitry Jemerov, dijo que la mayoría de lenguajes no tienen 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 obvia.[10] Uno de los objetivos establecidos de Kotlin es el de compilar tan rápido como Java.[cita requerida]
En febrero de 2012, JetBrains liberó el código fuente del proyecto bajo la Licencia Apache 2.
En 2017, recibe un importante impulso al ser nombrado por Google como lenguaje oficial para Android al mismo nivel que Java.
La primera confirmación en el repositorio Git de Kotlin fue el 8 de noviembre de 2010.[11]
Kotlin 1.1 se lanzó el 1 de marzo de 2017.[12]
Kotlin 1.2 se lanzó el 28 de noviembre de 2017.[13] En esta versión se agregó la función de compartir código entre plataformas JVM y JavaScript (la programación multiplataforma ahora es una función beta [14] actualizada desde "experimental"). Se ha realizado una demostración completa con el nuevo complemento Kotlin/JS Gradle.[15][16]
Kotlin 1.3 se lanzó el 29 de octubre de 2018 y agregó soporte para corrutinas para su uso con programación asincrónica.[17]
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.[18]
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.[19]
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.[20]
Kotlin 1.8 se lanzó en diciembre de 2022, 1.8.0 se lanzó el 11 de enero de 2023.[21]
Kotlin 1.9 se lanzó en julio de 2023, 1.9.0 se lanzó el 6 de julio de 2023.[22]
Kotlin 2.0 se lanzó en mayo de 2024, la versión 2.0.0 se lanzó el 21 de mayo de 2024.[23]
Kotlin 2.1 se lanzó en noviembre de 2024, 2.1.0 se lanzó el 27 de noviembre de 2024.[24]
Filosofía
[editar]El líder de desarrollo Andrey Breslav ha dicho que Kotlin está diseñado para ser un lenguaje de programación orientado a objetos de calidad industrial, y para ser un lenguaje mejor que Java pero todavía ser plenamente interoperable con código Java, permitiendo a las compañías hacer una migración gradual de Java a Kotlin.[25]
Sintaxis
[editar]Al igual que Pascal, Haxe, PL/SQL, F#, Rust, Go y Scala —y a diferencia de C y sus derivados como C++, Java, C#, y D— la declaración de variables y listas de parámetros en Kotlin tienen el tipo de dato después del identificador y un separador de dos puntos. Igual que en otros lenguajes modernos como Scala y Groovy, los puntos y comas son opcionales como final de sentencia; en muchos casos un salto de línea es suficiente para que el compilador pueda deducir que la declaración terminó.[26]
Semántica
[editar]Además de clases y métodos (en Kotlin se llaman funciones miembro) clásicos de la programación orientada a objetos, Kotlin también soporta programación por procedimientos y el uso de funciones.[27] Igual que en C y C++, el punto de entrada a un programa Kotlin es una función llamada "main", que recibe un array que contiene los argumentos pasados desde la línea de comandos. Soporta la interpolación de variables dentro de cadenas de texto al estilo de los shell scripts de Perl y Unix/Linux. La inferencia de tipos es otra de las características de Kotlin.
Ejemplo
[editar]fun main() {
val scope = "mundo"
println("Hola, $scope!")
}
Kotlin hace una distinción entre tipos nullables y no-nullables (aquellos que pueden o no tener un valor nulo). Todos los objetos nullables tienen que ser declarados con un "?" sufijo después del nombre de tipo. Las operaciones con objetos nullables necesitan cuidado especial de los desarrolladores: una verificación de valor null debe ser realizado antes de utilizar el valor. Kotlin proporciona operadores seguros de nulidad para ayudar a los desarrolladores:
- ?. (Operador de navegación segura) puede ser usado para acceder de forma seguras a un método o propiedad de un posible objeto nulo. Si el objeto es nulo, el método no se invocará y la expresión evalúa a null.
- ?: (operador de coalescencia nula) a menudo referido a como el operador Elvis:
fun decirHola(talVez : String?, jamasNulo : Int) {
// Uso del operador Elvis
val nombre : String = talVez ?: "extraño"
println("Hola, $nombre")
}
Un ejemplo del uso del operador de navegación segura:
/* Devuelve null si foo es null, o bar() devuelve null, o baz() devuelve null */
foo ?. bar() ?. baz()
Herramientas
[editar]- IntelliJ IDEA tiene un plugin de soporte para Kotlin.[28] IntelliJ IDEA 15 es la primera versión que incluye el plugin Kotlin en el Instalador IntelliJ y proporcionar soporte desde el comienzo.[29]
- JetBrains también tiene un plugin para Eclipse.[30]
- Plugin Apache Maven.[31]
- Tarea para Apache Ant.[31]
- Plugin Gradle.[31]
- Android Studio soporta Kotlin desde la versión 3.0.
- NetBeans también incluye un plugin para Kotlin.
Aplicaciones
[editar]Cuando se anunció Kotlin como lenguaje de desarrollo oficial para 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++.[32] En 2020 Kotlin fue el lenguaje más utilizado en Android: Google estimó que el 70 % de las 1000 aplicaciones principales en Play Store estaban escritas en Kotlin. El propio Google tenía 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, 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.[33]
Además de su uso destacado en Android, Kotlin estaba ganando terreno en el desarrollo del lado del servidor. Spring Framework agregó oficialmente soporte para Kotlin con la versión 5, el 4 de enero de 2017.[34] Para brindar mayor soporte a Kotlin, Spring ha traducido toda su documentación a Kotlin y ha agregado soporte integrado para muchas características específicas de Kotlin, como corrutinas.[35] Además de Spring, JetBrains ha producido un marco basado en Kotlin llamado Ktor para crear aplicaciones web.[36]
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 a otro lugar en la JVM), y solo el 6 % usaba Kotlin Native.[37]
Adopción
[editar]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.[38] Es el cuarto lenguaje de programación más querido según la Encuesta de desarrolladores de Stack Overflow de 2020.[39]
Kotlin también fue galardonado con el premio O'Reilly Open Source Software Conference Breakout Award de 2019.[40]
Muchas empresas/organizaciones han utilizado Kotlin para el desarrollo backend:
- Allegro[41]
- Amazon[42]
- Atlassian[43]
- Cash App[44][45]
- Flux[46]
- Google[47]
- Gradle[48]
- JetBrains[49]
- Meshcloud[50]
- Norwegian Tax Administration[51]
- OLX[52]
- Pivotal[53]
- Rocket Travel[54]
- Shazam[55]
- Zalando[56]
Algunas empresas/organizaciones han utilizado Kotlin para el desarrollo web:
Varias empresas han declarado públicamente que utilizan Kotlin:
- Basecamp [61]
- 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.
- Coursera [62]
- DripStat [63]
- Duolingo [64]
- Netflix [65]
- Pinterest [66]
- Trello [67]
- Uber [68]
Véase también
[editar]Referencias
[editar]- ↑ GitHub JetBrains/Kotlin https://github.com/JetBrains/kotlin/releases/latest JetBrains/Kotlin
|url=
sin título (ayuda). - ↑ «kotlin-stdlib - Kotlin Programming Language». Kotlin (en inglés). Consultado el 15 de marzo de 2023.
- ↑ «Kotlin for JavaScript | Kotlin». Kotlin Help (en inglés estadounidense). Consultado el 15 de marzo de 2023.
- ↑ «Kotlin Multiplatform for Cross-Platform Mobile Development». Kotlin Multiplatform Mobile (en inglés). Consultado el 15 de marzo de 2023.
- ↑ «Kotlin Foundation». Kotlin Foundation (en inglés).
- ↑ Lardinois, Frederic (7 de mayo de 2019). «Kotlin is now Google's preferred language for Android app development». TechCrunch (en inglés estadounidense). Consultado el 15 de marzo de 2023.
- ↑ «FAQ | Kotlin». Kotlin Help (en inglés estadounidense). Consultado el 15 de marzo de 2023.
- ↑ «Stability of Kotlin components | Kotlin». Kotlin Help (en inglés estadounidense). Consultado el 15 de marzo de 2023.
- ↑ «Kotlin 1.5.0 – the First Big Release of 2021 | The Kotlin Blog». The JetBrains Blog (en inglés estadounidense). Consultado el 15 de marzo de 2023.
- ↑ a b Krill, Paul (22 de julio de 2011). «JetBrains readies JVM language Kotlin». infoworld.com. InfoWorld. Consultado el 2 de febrero de 2014.
- ↑ «test · JetBrains/kotlin@3e4dce3». GitHub (en inglés). Archivado desde el original el 17 de octubre de 2022. Consultado el 17 de octubre de 2022.
- ↑ «Kotlin 1.1 Released With JavaScript Support, Coroutines, and More | Kotlin Blog». Blog.jetbrains.com. 1 de marzo de 2017. Archivado desde el original el 21 de marzo de 2025. Consultado el 9 de abril de 2025.
- ↑ «Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog». 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.
- ↑ «Multiplatform Projects - Kotlin Programming Language». Kotlin. Archivado desde el original el 18 de agosto de 2020. Consultado el 20 de agosto de 2020. «Working on all platforms is an explicit goal for Kotlin, but we see it as a premise to a much more important goal: sharing code between platforms. With support for JVM, Android, JavaScript, iOS, Linux, Windows, Mac and even embedded systems like STM32, Kotlin can handle any and all components of a modern application.»
- ↑ «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.
- ↑ «Kotlin full stack app demo: update all involving versions to work with 1.3.70 release». youtrack.jetbrains.com. Archivado desde el original el 2 de agosto de 2020. Consultado el 4 de abril de 2020.
- ↑ «Kotlin 1.1 Released with JavaScript Support, Coroutines and more». Archivado desde el original el 4 de junio de 2023. Consultado el 1 de mayo de 2017.
- ↑ Lardinois, Frederic (7 de mayo de 2019). «Kotlin is now Google's preferred language for Android app development». TechCrunch (en inglés estadounidense). Archivado desde el original el 7 de mayo de 2019. Consultado el 8 de mayo de 2019.
- ↑ «What's New in Kotlin 1.4 - Kotlin Programming Language». Kotlin (en inglés). Archivado desde el original el 8 de junio de 2023. Consultado el 20 de agosto de 2020. «In 1.4.0, we slightly change the Swift API generated from Kotlin with respect to the way exceptions are translated.»
- ↑ «What's new in Kotlin 1.7.0 | Kotlin». Kotlin Help (en inglés estadounidense). Archivado desde el original el 20 de junio de 2022. Consultado el 20 de junio de 2022.
- ↑ Krill, Paul (12 de enero de 2023). «Kotlin 1.8.0 adds recursive copy, delete for directories» (en inglés). Archivado desde el original el 8 de julio de 2023. Consultado el 8 de marzo de 2022.
- ↑ Haggarty, Sarah (6 de julio de 2023). «Kotlin 1.9.0 Released» (en inglés). Archivado desde el original el 28 de julio de 2023. Consultado el 6 de julio de 2023.
- ↑ JetBrains (21 de mayo de 2024). «Kotlin 2.0.0». GitHub (en inglés). Archivado desde el original el 21 de mayo de 2024. Consultado el 21 de mayo de 2024.
- ↑ JetBrains (27 de noviembre de 2024). «Kotlin 2.1.0». GitHub (en inglés). Archivado desde el original el 21 de mayo de 2024. Consultado el 27 de noviembre de 2024.
- ↑ RebelLabs (22 de abril de 2013). «JVM Languages Report extended interview with Kotlin creator Andrey Breslav». http://zeroturnaround.com/. Consultado el 2 de febrero de 2014.
- ↑ «Semicolons». jetbrains.com. Consultado el 8 de febrero de 2014.
- ↑ «functions». jetbrains.com. Consultado el 8 de febrero de 2014.
- ↑ «Jetbrains Plugin Repository:Kotlin».
- ↑ https://www.jetbrains.com/idea/whatsnew/
- ↑ «Kotlin for Eclipse».
- ↑ a b c «Kotlin Build Tools».
- ↑ Lardinois, Frederic (17 de mayo de 2017). «Google makes Kotlin a first-class language for writing Android apps». techcrunch.com (en inglés estadounidense). Archivado desde el original el 22 de mayo de 2017. Consultado el 28 de junio de 2018.
- ↑ «Kotlin programming language: How Google is using it to squash the code bugs that cause most crashes». ZDNet. Archivado desde el original el 6 de abril de 2023. Consultado el 6 de diciembre de 2020.
- ↑ «Introducing Kotlin support in 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.
- ↑ «The State of Kotlin Support in Spring». JetBrains (en inglés). 14 de agosto de 2020. Archivado desde el original el 7 de junio de 2023. Consultado el 6 de diciembre de 2020.
- ↑ «Review of Microservices Frameworks: A Look at Spring Boot Alternatives». DZone. Archivado desde el original el 21 de mayo de 2023. Consultado el 6 de diciembre de 2020.
- ↑ «Kotlin Programming - The State of Developer Ecosystem 2020». JetBrains (en inglés). Archivado desde el original el 5 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «The state of the Octoverse». Archivado desde el original el 22 de marzo de 2019. Consultado el 24 de julio de 2019.
- ↑ «Stack Overflow Developer Survey 2020». Archivado desde el original el 4 de junio de 2020. Consultado el 28 de mayo de 2020.
- ↑ «Kotlin wins Breakout Project of the Year award at 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 at Allegro». Talking Kotlin (en inglés). Octubre de 2018. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «QLDB at Amazon». Talking Kotlin. 30 de junio de 2020. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Future of Jira Software powered by Kotlin». YouTube. 29 de octubre de 2019. Archivado desde el original el 1 de septiembre de 2023. Consultado el 1 de septiembre de 2023.
- ↑ «Going Full Kotlin Multiplatform». Talking Kotlin (en inglés). 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.
- ↑ «Using Kotlin for backend development at Flux». Talking Kotlin (en inglés). 14 de agosto de 2019. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «State of Kotlin on Android». YouTube. 10 de junio de 2020. 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». Talking Kotlin (en inglés). 30 de enero de 2020. Archivado desde el original el 5 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Kotlin on the backend at Meshcloud». Talking Kotlin (en inglés). 28 de enero de 2018. Archivado desde el original el 6 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «KotlinConf 2019: Kotlin Runs Taxes in Norway by Jarle Hansen & Anders Mikkelsen». YouTube. 16 de diciembre de 2019. Archivado desde el original el 10 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Greenfield Kotlin at OLX». Talking Kotlin (en inglés). 24 de agosto de 2018. Archivado desde el original el 1 de junio de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Application Monitoring with Micrometer». Talking Kotlin (en inglés). 14 de junio de 2018. Archivado desde el original el 1 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Groovy and Kotlin Interop at Rocket Travel». Talking Kotlin (en inglés). 14 de mayo de 2018. Archivado desde el original el 5 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Kotlin at Shazam». Talking Kotlin (en inglés). 29 de julio de 2018. Archivado desde el original el 1 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Zally - An API Linter». Talking Kotlin (en inglés). 29 de enero de 2018. Archivado desde el original el 6 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Java/Kotlin Developer - Barclays - Prague - Wizbii». Wizbii.com (en inglés). Consultado el 29 de septiembre de 2020.
- ↑ «KotlinConf 2017 - Frontend Kotlin from the Trenches by Gaetan Zoritchak». YouTube. 30 de noviembre de 2017. Archivado desde el original el 10 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «Fritz2». Talking Kotlin (en inglés). 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 in Space by Maxim Mazin». YouTube. 18 de diciembre de 2019. Archivado desde el original el 9 de abril de 2023. Consultado el 29 de septiembre de 2020.
- ↑ «How we made Basecamp 3's Android app 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.
- ↑ «Becoming bilingual@coursera». 26 de abril de 2018. Archivado desde el original el 15 de enero de 2023. Consultado el 24 de julio de 2019.
- ↑ «Kotlin in Production – What works, Whats broken». 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.
- ↑ Chaidarun, Art (6 de abril de 2020). «Migrating Duolingo’s Android app to 100% Kotlin». Duolingo Blog (en inglés).
- ↑ «Rob Spieldenner on twitter». Archivado desde el original el 25 de diciembre de 2022. Consultado el 24 de julio de 2019.
- ↑ «Droidcon NYC 2016 - Kotlin in Production». YouTube. 3 de noviembre de 2016. Archivado desde el original el 14 de abril de 2023. Consultado el 24 de julio de 2019.
- ↑ «Dan Lew on Twitter». Archivado desde el original el 2 de mayo de 2023. Consultado el 24 de julio de 2019.
- ↑ «Measuring Kotlin Build Performance at 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
[editar]- Sitio web oficial (en inglés)