Kotlin es sin duda uno de los lenguajes de moda, sobretodo después del reciente anuncio de Google en Google I/O (el evento anual de Google dedicado a los desarrolladores) donde se hizo oficial que Kotlin pasa a ser un lenguaje de primer nivel para Android.  A partir de ahora, Android Studio vendrá con 100% soporte para Kotlin.

Un poco de historia

Kotlin fue creado en 2010 por JetBrains, la empresa detrás del famoso IDE para Java Intellij IDEA (aunque se puede usar en cualquier otro IDE, como Eclipse).

En este podcast, Hadi Hariri (VP en JetBrains) explica las razones que impulsaron a JetBrains a crear un nuevo lenguaje. Una decisión inusual y, seguramente, una de las maneras más complicadas de intentar solucionar tus problemas con Java :-).

Todos los IDEs de JetBrains están escritos en Java y otros lenguajes basados en la JVM (Java Virtual Machine) y por lo tanto fácilmente interoperables con Java ya que todos acaban compilando a bytecode que la JVM es capaz de ejecutar.

El mayor problema que tenían es que su codebase era muy grande (Java no es precisamente un lenguaje conciso) y pensaron que algunas de las características de lenguajes más recientes (como el uso de lambdas) podria ayudarlos. El problema es que en ese momento (2010) no había muchos lenguajes compatibles con JVM que tuvieran esas funcionalidades. Básicamente su mejor opción era Scala pero lo descartaron por razones de eficiencia y por ser demasiado potente para lo que querían. Buscaban algo que les ayudara a reducir el tamaño de su código pero sin dar una libertad tan grande a los desarrolladores (lo que no siempre es bueno ya que obliga después a mayores esfuerzos de testing / debugging).

Descartado Scala y sin querer salir del mundo JVM, la mejor opción fue su propia versión mejorada de Java: Kotlin.

Inicialmente Kotlin fue creado para aplicaciones Desktop (que es el mercado de JetBrains) pero ahora mismo Kotlin es multiplataforma con soporte para Android, compilación a JavaScript e incluso compilación nativa via LLVM para entornos donde JVM no sea una buena opción.

Ventajas de usar Kotlin

Veamos pues algunas de las características que hacen Kotlin diferente de Java y que nos permiten programar escribiendo menos código.

  • Ahorro de getters, setters y cia. Para cada atributo normalmente quieres tener el correspondiente get y set, incluir la propiedad en el método equals,… Muchos IDEs te los generan automáticamente pero al final, aunque sea código generado lo vas a tener que mantener (ej. cuando añadas un nuevo atributo). Kotlin te los proporciona automáticamente. Es decir, no los ves, el código no está, pero los puedes utilizar (Kotlin los va a añadir durante la compilación a bytecode).
  • Casting automático. Una vez compruebas si un objeto es de un cierto tipo, no necesitas después hacer un casting explícito para usar las propiedades de ese tipo. Kotlin asume que si la comprobación tiene éxito el objeto pasa a ser del tipo concreto immediatamente y lo trata como tal
  • Organización de paquetes,ya no hace falta que la organización de tu código en paquetes siga la estructura de carpetas en tu directorio
  • Valores nulos. Kotlin no tiene el concepto de null. Lo que implica que nunca tendrás una excepción del tipo NullPointerException (¿Cuántas veces te has encontrado una de esas?). Está demostrado que evitar nulos ahorra mucho tiempo (y dinero) en el desarrollo y que hay maneras más seguras de indicar la ausencia de valor.
  • Funciones . En Kotlin, las funciones están al mismo nivel que las clases. Puedes definir funciones sin tener que crear primero una clase para ellas. Además las funciones pueden recibir como argumento otra función (o devolver una como resultado) permitiendo un alto nivel de programación funcional. También hay soporte para lambdas / funciones anónimas.
  • Extensiones a clases existentes. Kotlin permite añadir nuevos métodos a una clase existente SIN tener que crear la subclase correspondiente. Esto permite que el nuevo método se pueda ejecutar sobre todas las instancias de la clase original y no sólo sobre las de la subclase que, en Java, estaría obligado a crear. De la misma forma, Kotlin también te permite añadir nuevas propiedades.

¿Qué empresas usan Kotlin?

Es sorprendente la cantidad de empresas que están adoptando Kotlin y migrando su código Java a Kotlin (que de hecho es un proceso automático si se quiere). Por ejemplo, Basecamp explica en este post como han creado su app completamente en Kotlin, Square tiene un extenso documento público donde se discuten las ventajas de usar Kotlin en lugar de Java para su app, y la propia página de Kotlin cita como usuarios otras grandes empresas como Pinterest, Coursera, Evernote o el mismo Uber.

Más información sobre Kotlin

Si os habéis quedado con ganas de más, os dejo el vídeo de la charla de la introducción a Kotlin que se hizo en Google I/O.

Pasaros también por la documentación de referencia y, los que programáis para apps en Android, pasaros por esta guía oficial.

También os recomiendo subscribiros a la página SuperKotlin y investigar por vuestra cuenta este material oficial de JetBrains para recibir (y dar) cursos de Kotlin

Y además ahora podéis explorar también Kotlin/Native, una versión “nativa” de Kotlin. Kotlin/Native es una tecnología que compila Kotlin directamente a código binario nativo de forma que permite ejecutar Kotlin sin pasar por la JVM. Para conseguirlo, Kotlin/Native incluye un compilador basado en infrastructura LLVM más una implementación nativa de la Kotlin runtime library.