Kotlin
Qué es
Piensa en un adaptador de corriente universal que permite que un mismo enchufe funcione en las tomas de muchos países. La máquina virtual de Java (JVM, Java Virtual Machine) cumple ese papel para el software: es un motor que ejecuta el mismo programa en muchos tipos de computadoras. Kotlin es un lenguaje moderno, de tipado estático, creado por JetBrains, que se ejecuta sobre la JVM y es totalmente interoperable con Java. Google lo convirtió en el lenguaje preferido para el desarrollo en Android, y también se usa para código del lado del servidor, lógica compartida multiplataforma, e incluso para compilar a código nativo o a JavaScript. Su objetivo es ser conciso, seguro y pragmático: Java sin la ceremonia.
Fortalezas
- Seguridad frente a nulos integrada en el sistema de tipos, lo que elimina la mayoría de los errores
NullPointerException. - Conciso: las data classes, las funciones de extensión y los smart casts reducen drásticamente el código repetitivo (boilerplate).
- Interoperabilidad total con Java: puedes usar cualquier biblioteca de Java y migrar archivo por archivo.
- Corrutinas (coroutines) de primera clase para código asíncrono y concurrente fácil de leer.
- Kotlin Multiplatform permite compartir lógica de negocio entre Android, iOS y el .
Concesiones (trade-offs)
- La compilación puede ser más lenta que la de Java en proyectos grandes.
- Depender de la JVM implica un runtime y algo de sobrecarga de arranque en comparación con los lenguajes nativos.
- Multiplatform y Kotlin/Native están madurando, pero aún tienen menos recorrido probado que el objetivo JVM.
- Algunas características avanzadas (corrutinas, DSLs) tienen una curva de aprendizaje.
Cuándo usarlo
Recurre a Kotlin para cualquier aplicación nueva de Android, y considéralo para servicios backend en la JVM cuando quieras código más seguro y conciso que Java. Es una opción sólida por defecto en cualquier lugar donde encaje el ecosistema de la JVM.
Encaje con la programación asistida por IA (vibe coding)
Kotlin funciona bien con asistentes de IA porque sus modismos concisos significan menos código que generar y revisar, y la seguridad frente a nulos hace que los errores salgan a la luz en tiempo de compilación. Pídele al modelo que priorice val (inmutable) sobre var, que use data classes para los modelos, y que escriba funciones suspendidas (suspending functions) con corrutinas en lugar de manejar hilos manualmente. Cuando el objetivo sea Android, haz que combine Kotlin con Jetpack Compose para que la interfaz de usuario y la lógica compartan un mismo lenguaje moderno.
data class User(val name: String, val active: Boolean = true)
fun activeNames(users: List<User>): List<String> =
users.filter { it.active }.map { it.name }
fun main() {
val users = listOf(User("Ada"), User("Lin", active = false))
println(activeNames(users))
}