Hoy liberamos Kotlin 1.2. Esta nueva versión es una importante y un gran paso en nuestro camino hacia habilitar el uso de Kotlin en todos los componentes de una aplicación moderna.

En Kotlin 1.1, sacamos de forma oficial el target de JavaScript, permitiendo compilar código Kotlin en JS y ejecutarlo en un navegador web. En Kotlin 1.2, añadimos la posibilidad de reutilizar código entre la JVM y JavaScript. Ahora podéis escribir la lógica de negocio de vuestra aplicación una única vez y reutilizarlo en todos los niveles de vuestra aplicación. El Backend, el Frontend de vuestro sitio web y la aplicación móvil de Android. También estamos trabajando en librerías para ayudaros a reutilizar más código, como una librería de serialización multi plataforma.

Kotlin 1.2 ya está incluído en IntelliJ IDEA 2017.3, que también ha salido hoy. Si utilizáis un IDE diferente, podéis instalar la nueva versión desde el diálogo: <code class="highlighter-rouge">Tools | Kotlin | Configure Kotlin Plugin Updates.

Esta versión incluye un montón de trabajo de contribuyentes externos, y nos gustaría agradecer a todos los que habéis mandado feedback, informado de incidencias, y especialmente a aquellos que habéis hecho pull requests.

Proyectos multiplataforma

Un proyecto multiplataforma permite construir, con el mismo código, múltiples niveles de una aplicación – backend, frontend y aplicación Android -. Dichos proyectos contienen tanto módulos comunes, que contienen código independiente de la plataforma, como código específico de cada plataforma: que contiene código para una plataforma específica (JVM o JS) y puede utilizar librerías específicas de plataforma. Para llamar a código específico de plataforma desde un módulo común, podéis especificar declaraciones <code class="highlighter-rouge">expected – declaraciones para las que los módulos específicos de plataforma tienen que proporcionar implementaciones <code class="highlighter-rouge">actual.

Para más información sobre esta característica, por favor, echad un vistazo a la documentación.

También estamos trabajando en un conjunto de librerías comunes para permitiros mover más lógica a código común:

  • <code class="highlighter-rouge">kotlin.test, incluído de serie con Kotlin 1.2, os permite escribir vuestros tests una única vez y ejecutarlos en JVM y en JS
  • <code class="highlighter-rouge">kotlinx.html que soporta renderizado isomórfico – usando el mismo código para renderizar HTML tanto en el backend como en el frontend
  • <code class="highlighter-rouge">kotlinx.serialization os permite recolocar vuestros objetos Kotlin entre diferentes niveles de vuestra aplicación, usando los formatos de serialización JSON o ProtoBuf.

Nótese que los proyectos multiplataforma son una característica experimental; lo que significa que la característica es estable y está lista para producción, pero puede que necesitemos hacer algún cambio en el diseño en la siguiente versión (y si lo hacemos, proporcionaremos las herramientas necesarias para hacer la migración de código existente).

Rendimiento de la compilación

Durante el desarrollo de la 1.2, hemos hecho un montón de esfuerzo en hacer el proceso de compilación más rápido. Ya hemos hecho una mejora de alrededor de un 25% con respecto a Kotlin 1.1, y vemos más potencial para más mejoras, que libreraremos en las actualizaciones de la 1.2.x.

Otras mejoras en el lenguaje y en la librería estándar

También hemos hecho un conjunto de pequeñas mejoras al lenguaje y a la librería estándar:

  • Una sintaxis más concisa para pasar multiples argumentos a una anotación (literales de array)
  • Soporte para el modificador <code class="highlighter-rouge">lateinit en propiedades globales y variables locales, así como un mecanismo para saber si la variable <code class="highlighter-rouge">lateinit está inicializada
  • Smart casts más inteligentes y mejora de inferencia de tipos en ciertos casos
  • Compatibilidad de la librería estándar con la restricción de paquetes separados introducida en Java 9
  • Un nuevo paquete <code class="highlighter-rouge">kotlin.math en la librería estándar
  • Nuevas funciones de la librería estándar para trabajar con secuencias y colecciones, incluyendo un conjunto de funciones para partir una colección o secuencia en grupos potenciales de un tamaño fijo.

Para más información y ejemplos de código, por favor, echas un vistazo a la página de la documentación, qué hay de nuevo en Kotlin 1.2.

Kotlin alrededor del mundo

Desde que liberamos Kotlin 1.1 en marzo de este año, Kotlin ha tenido un aumento enorme de adopción por todo el mundo. La cúspide de todo esto fue la KotlinConf, nuestra primera conferencia a nivel mundial, con alrededor de 1200 asistentes recogidos en San Francisco entre el 2 y el 3 de noviembre. Hemos grabado todas las charlas, y los vídeos están ahora disponibles en la página web de la conferencia.

Kotlin es ahora un lenguaje soportado de forma oficial para el desarrollo de Android, con soporte integrado desde Android Studio 3.0, así como ejemplos oficiales, y guías de estilo publicadas por Google. Como resultado, Kotlin ya se está utilizando en más del 17% de los proyectos en Android Studio 3.0, incluyendo muchas aplicaciones de las startups más punteras y de las compañías de la Fortune 500.

Por lo que respecta al servidor, Spring Framework 5.0 ha sido liberado con muchas características para soportar Kotlin, y vert.x ha soportado Kotlin desde la versión 3.4.0. Además Gradle también viene con soporte para Kotlin DSL de serie y el proyecto de Gradle Kotlin DSL se acerca rápidamente a una versión 1.0.

El número de líneas de código open-source de Kotlin en GitHub excede ahora los 25 millones. Y en StackOverflow, Kotlin es tanto el lenguaje en crecer más rápido, como uno de los lenguajes menos odiados.

El crecimiento de la comunidad alrededor de Kotlin también es espectacular. Hay más de 100 grupos por todo el mundo, y tantas charlas que nos cuesta seguirlas todas – Pero para aquellas de las que somos conscientes, el mapa de charlas os puede dar una buena idea de realmente cómo de repartido está el uso de Kotlin.

Y para los que estáis empezando ahora a aprender Kotlin, hay un número de libros cada vez más creciente (incluyendo el nuestro propio “Kotlin in Action”, ahora disponible en Inglés, Ruso, Japonés, Chino y Portugués), cursos online, tutoriales y otros recursos.

Conoce al equipo

Para compartir con vosotros más información sobre la nueva versión, tenemos intención de alojar un webinar sobre proyectos multiplataforma con Kotlin 1.2 el 7 de diciembre. El equipo de Kotlin también llevará a cabo un AMA (Ask Me Anything) (Pregúntame cualquier cosa) en el Reddit de Kotlin el 5 de diciembre. Empezaremos al medio día UTC y estaremos ahí durante 24 horas.

Cómo actualizar

Como de costumbre, podéis probar Kotlin online en try.kotlinlang.org.

  • En Maven, Gradle y npm: Usad <code class="highlighter-rouge">1.2.0 como número de versión para el compilador y la librería estándar. Echad un ojo a la documentación aquí.
  • En intelliJ IDEA: 2017.3 tiene Kotlin 1.2 integrado, en versiones anteriores instalad o actualizar el plugin de Kotlin a la 1.2.
  • En Android Studio: Insta,ad o actualizad el plugin a través del Plugin Manager
  • En Eclipse: instalad el plugin usando el Marketplace.
  • *El compilador de línea de comandos se puede descargar desde la página de releases de Github

Compatibilidad. En Kotlin 1.2 el lenguaje y la librería estándar son retrocompatibles (quitando posibles bugs): si habéis compilado algo que funcionaba en la 1.0 o la 1.1, seguirá funcionando en la 1.2. Para ayudar a equipos grandes a actualizar de forma gradual, proporcionamos un switch de compilación que deshabilita características nuevas. Aquí un documento cubriendo los posibles contratiempos.

¡Que tengáis un buen Kotlin!