Ir al contenido

Kotlin (lenguaje de programación)

De Wikipedia, la enciclopedia libre
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.

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.[11]

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ó.[12]

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.[13]​ 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.[14]​ IntelliJ IDEA 15 es la primera versión que incluye el plugin Kotlin en el Instalador IntelliJ y proporcionar soporte desde el comienzo.[15]
  • JetBrains también tiene un plugin para Eclipse.[16]
  • Plugin Apache Maven.[17]
  • Tarea para Apache Ant.[17]
  • Plugin Gradle.[17]
  • Android Studio soporta Kotlin desde la versión 3.0.
  • NetBeans también incluye un plugin para Kotlin.

Véase también

[editar]

Referencias

[editar]
  1. GitHub JetBrains/Kotlin https://github.com/JetBrains/kotlin/releases/latest JetBrains/Kotlin |url= sin título (ayuda). 
  2. «kotlin-stdlib - Kotlin Programming Language». Kotlin (en inglés). Consultado el 15 de marzo de 2023. 
  3. «Kotlin for JavaScript | Kotlin». Kotlin Help (en inglés estadounidense). Consultado el 15 de marzo de 2023. 
  4. «Kotlin Multiplatform for Cross-Platform Mobile Development». Kotlin Multiplatform Mobile (en inglés). Consultado el 15 de marzo de 2023. 
  5. «Kotlin Foundation». Kotlin Foundation (en inglés). 
  6. 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. 
  7. «FAQ | Kotlin». Kotlin Help (en inglés estadounidense). Consultado el 15 de marzo de 2023. 
  8. «Stability of Kotlin components | Kotlin». Kotlin Help (en inglés estadounidense). Consultado el 15 de marzo de 2023. 
  9. «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. 
  10. a b Krill, Paul (22 de julio de 2011). «JetBrains readies JVM language Kotlin». infoworld.com. InfoWorld. Consultado el 2 de febrero de 2014. 
  11. 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. 
  12. «Semicolons». jetbrains.com. Consultado el 8 de febrero de 2014. 
  13. «functions». jetbrains.com. Consultado el 8 de febrero de 2014. 
  14. «Jetbrains Plugin Repository:Kotlin». 
  15. https://www.jetbrains.com/idea/whatsnew/
  16. «Kotlin for Eclipse». 
  17. a b c «Kotlin Build Tools». 

Enlaces externos

[editar]
  • Sitio web oficial (en inglés)