Kotlin
A concise multiplatform language developed by JetBrains
Introducción a Kotlin para desarrolladores Java
Artículo de Urs Peter, ingeniero de software sénior y formador de Kotlin certificado por JetBrains. Para los lectores que busquen una forma más estructurada de desarrollar sus habilidades en Kotlin, Urs también dirige el Kotlin Upskill Program en Xebia Academy.
Este artículo inaugura La guía definitiva para adoptar Kotlin en un entorno dominado por Java, una serie que sigue cómo crece la adopción de Kotlin entre equipos reales, desde la curiosidad de un único desarrollador hasta la transformación de toda la empresa.
«No se aprieta un botón para “pasarse a Kotlin”.
Se mitigan los riesgos, se calcula y se celebran las victorias,
y solo entonces se dobla la apuesta.»»
Adoptar Kotlin en un entorno Java establecido no es solo una decisión técnica: es un recorrido que requiere una planificación cuidadosa, pensamiento estratégico y, lo que es más importante, ganarse la total confianza de los compañeros.
Tras formar a más de 1000 desarrolladores y ayudar a numerosas organizaciones a triunfar en la transición a Kotlin, he visto lo que funciona y lo que no. Esta guía con consejos que he ido recopilando a lo largo del tiempo para ayudarle a adoptar Kotlin con facilidad le orientará desde sus primeros proyectos experimentales hasta la transformación organizativa a gran escala.
Esta serie seguirá el itinerario siguiente:
- Todo comienza con una chispa: ¡enciéndala!
- La etapa de experimentar: empezar poco a poco con pruebas
- La fase de evaluación: algo más que jugar con Kotlin
- Correr la voz: gánese la confianza de sus colegas desarrolladores
- Persuadir a la dirección: abogar por Kotlin para la empresa
- Factores de éxito para la adopción de Kotlin a gran escala
- Kotlin o no Kotlin, esa es la cuestión. ¿Qué tipo de empresa quiere ser?
Todo comienza con una chispa: ¡enciéndala!

¿Por qué esforzarse en pasarse a Kotlin? ¿Por qué no limitarse a Java y seguir adelante?
La respuesta depende de numerosos factores. Aunque los datos muestran claramente las ventajas de Kotlin en varios ámbitos, la decisión no es puramente técnica. La subjetividad («Me gusta mi lenguage porque sí») y el escepticismo ante algo nuevo, que generalmente es algo bueno, desempeñan un papel importante.
Sin embargo, la evolución de los lenguajes de programación demuestra que nuestras preferencias y necesidades cambian con el tiempo. Esencialmente, cada nueva generación de lenguajes incorpora nuevos paradigmas —seguridad (null), sintaxis concisa y ligera, funciones como ciudadanos de primera clase, biblioteca estándar rica, concurrencia asíncrona, compatibilidad multiplataforma, compatibilidad con IA generativa, etc.— que proporcionan a los desarrolladores y a las organizaciones una ventaja decisiva.
Sin esta progresión natural, seguiríamos codificando todo en COBOL u otro lenguaje arcaico, incapaces de satisfacer las exigencias actuales. Por lo tanto, la evolución no es opcional; está ligada a la historia de nuestro sector.
Sin embargo, para que esta evolución arraigue en una empresa, hace falta algo más que méritos técnicos. Requiere facilitadores: personas dispuestas a explorar, defender y mostrar el valor de estos nuevos paradigmas en la práctica. En mi experiencia, hay tres tipos de ingenieros que suelen convertirse en estos catalizadores de la adopción de Kotlin:
- El ingeniero Java pragmático y centrado en la productividad: desarrolladores experimentados que ven Java como una herramienta, no como una religión. Siempre están buscando mejores formas de hacer el trabajo más rápido.
- Los entusiastas de los lenguajes modernos centrados en la calidad: ingenieros que dan prioridad al código legible, conciso y fácil de mantener. A menudo se trata de las mismas personas que anteriormente se habrían pasado a Scala.
- Desarrolladores junior: juniors que se hacen una pregunta sencilla pero poderosa: «¿Por qué debería usar Java si puedo usar Kotlin?». Sin el bagaje de años de experiencia en Java, Kotlin es a menudo la elección obvia para ellos.
¿A qué grupo pertenece?
Estos primeros adoptantes encienden la primera chispa. Pero ¿cómo arrancar? Siga leyendo… ;-)
La etapa de experimentar: empezar poco a poco con pruebas
Ha oído hablar de Kotlin y quiere probarlo sin comprometerse inmediatamente.
Así que lo primero que necesita es una herramienta para desarrolladores en la que plantar sus primeras semillas de Kotlin. Estas son algunas opciones:
- https://play.kotlinlang.org/ es un gran patio de recreo en línea, simplemente escriba y ejecute código Kotlin no solo en la JVM, sino también para varias otras plataformas (JS, WASM, etc.).

- Kotlin Notebook es una potente funcionalidad de IntelliJ IDEA que le permite importar dependencias, ejecutar código e incluso trabajar con datos, dibujar gráficos, etc. de forma sencilla. He aquí un ejemplo que muestra lo fácil que es realizar una llamada REST con RestClient de Spring:

- IntelliJ IDEA dispone de compatibilidad de primera con Kotlin. Esto no es ninguna sorpresa, ya que JetBrains es el fabricante de Kotlin, y una gran parte de IntelliJ IDEA está escrito en él. Por lo tanto, para empezar a utilizar Kotlin en IntelliJ IDEA (incluso en su proyecto Java existente) es coser y cantar:
…¡y ya está!

- ¡Pero hay más! JetBrains lanzó recientemente el Kotlin Language Server, que ofrece una experiencia de desarrollo Kotlin con todas las funciones a otros IDE más allá de IntelliJ IDEA, como VS Code. Compruébelo: https://github.com/Kotlin/kotlin-lsp
Ahora, puede escribir Kotlin en su entorno de desarrollo favorito. ¿Cómo puede evaluar el lenguaje en un contexto real con el mínimo impacto y el máximo conocimiento? ¡En el conjunto de pruebas de un proyecto Java existente!
Este enfoque seguro y realista para experimentar con Kotlin ofrece varias ventajas:
- Riesgo bajo: las pruebas no afectan al código de producción.
- Oportunidad de aprendizaje: puede explorar las funcionalidades del lenguaje en un contexto familiar.
- Introducción gradual: los miembros del equipo pueden sentirse cómodos con la sintaxis de Kotlin sin presiones.
Consejos
- Pruebe Kotest + MockK: para sentir de inmediato la expresividad de los DSL (Domain-Specific Languages, lenguajes específicos de dominio) de pruebas de Kotlin, como las aserciones ricas en funcionalidades [
shouldHaveSize(...), infix (value shouldBe 1), etc.]. - Utilice las concisas y potentes colecciones de Kotlin en lugar de Java Streams.
- Juegue con diversas funcionalidades del lenguaje como tipos anulables, desestructuración, inmutabilidad (
val,data classes), construcciones de expresión (when,try-catch,if else) y muchas más.
Esto es lo que obtendrá:
Java
@Test
void shouldGetAverageRating() {
when(productRepository.findAll()).thenReturn(products);
Map ratings = productService.averageRatings();
assertAll(
() -> assertThat(ratings).hasSize(4),
() -> assertEquals(ratings, products
.stream()
.collect(Collectors.groupingBy(
Product::getName,
Collectors.flatMapping(
p -> p.getRatings()
.stream()
.mapToDouble(Integer::doubleValue)
.boxed(),
Collectors.averagingDouble(Double::doubleValue)
)))
)
);
verify(productRepository).findAll();
}
Kotlin
@Test
fun `should get average rating`() { //descriptive tests using ``
every { productRepository.findAll() } returns products
val ratings = productService.averageRatings()
assertSoftly(ratings) { //powerful testing DSLs (Kotest)
shouldHaveSize(4)
this shouldBe productRepository.findAll()
.groupBy { it.name } //concise collections
.mapValues { (_, products) -> //destructuring
products.flatMap { it.ratings }.average() }
}
verify { productRepository.findAll() }
}
Siguiente de la serie
La adopción de Kotlin suele comenzar con una persona que explora y unas pocas pruebas que demuestran su utilidad. Esos primeros momentos de descubrimiento conducen naturalmente a algo más grande: evaluar Kotlin en un proyecto real.
El próximo artículo de esta serie describirá esa etapa y explicará cómo probar Kotlin en entornos de producción.
Artículo original en inglés de:
