Cual es el mejor lenguaje para meterme en Android? Java o Kotlin?

Hoy vamos a intentar resolver un problema que aborda distintos puntos de vista, desde los Kotlin Lovers (quienes sostienen que Java debe desaparecer del plano de Android) hasta los mas conservadores (los que consideran Java uno de los mejores lenguajes para hacer prácticamente todo, desde mobile hasta web).

Más allá de la decisión que vayas a tomar cuando termines de leer mi artículo, te comento que armé hace un tiempo un curso completo de Android con Java; y por otro lado lado también estoy desarrollando un curso escrito de Android con Kotlin. Por lo cual mi idea no es imponer una idea, sino ofrecerte las dos opciones para que decidas tu mejor camino a seguir.

Mi Posición al respecto

Yo no estoy exactamente de un lado u otro, sino más bien en el medio. Arranqué como un desarrollador en Java y luego conocí Kotlin. Mi adopción no fue inmediata: al principio no me terminaba de gustar este nuevo lenguaje.

La sensación es parecida a la de Python: todo se vuelve mas acotado y cuesta leer un código que en otros lenguajes es mas verboso. Todavía veo el “elif” (else if para el resto de los lenguajes) y me cuesta entender por qué dos letras más y un espacio hacían tanto daño en la sentencia.

Sin embargo, un día me senté con un curso de unas 80 horas y terminé encontrando todas esas ventajas en Kotlin de las que muchos desarrolladores hablan por ahí.

Aún asi, habiendo probado ambas partes de la tortilla, siento que decantarse por uno u otro resulta algo injusto. Te puede gustar Kotlin, pero entender Java resume una gran historia.

Es como aprender C y C++: empezas a ver el panorama completo de por qué se hizo X de tal manera y por qué se removió Y del nuevo lenguaje.

Aún asi, no solo se trata de recorrer un museo, sino que Java se sigue utilizando en muchas soluciones como sistemas bancarios, plugins de Minecraft, sitios web (Spring) y por supuesto academias.

Los invito a generar un análisis más consciente sobre estos dos lenguajes, desde su fuerza en el mercado y sus utilidades en el mundo real.

Algunos hechos indiscutibles

Andrey Breslav es un hombre sabio. Se trata del lider de desarrollo de Kotlin, quien expuso una afirmación fundamental en el propósito de este lenguaje:

Fue diseñado para superar a Java pero sin dejar de ser interoperable con el código de este. El objetivo final es facilitar la migración a Kotlin.

Para los que no conozcan el concepto, la interoperabilidad se basa en que puedas escribir tu código en un lenguaje que sea compatible con el otro. Esto significa que en un proyecto de Android pueden existir archivos de Java y Kotlin e interactuar entre sí. Una activity en Kotlin puede generar un intent para llamar una en Java y viceversa.

Por otro lado, Google declaró Kotlin como lenguaje oficial en Android. Esto significa que en unos años (cada vez menos), Java dejará de existir en las soluciones móviles.

Otro factor interesante es que Kotlin fue creado por JetBrains (esos locos que crearon IDEs hermosos como Intellij, PHPStorm, Android Studio, PyCharm, entre otros) con el fin de desarrollar un metalenguaje que trabaje con los plugins de cada IDE. Esto significa que se basaron en Java, y por decantación, en mejorar sus características.

Kotlin es nuestro “deseado C#”: C# era todo lo que Java no pudo ser. Un lenguaje creado luego de este, el cual poseía características como las extension functions, las cuales por la estructura en que se había creado Java no podíamos replicar.

Otro factor interesante es el manejo de excepciones: mientras que en Java nos destacábamos por ser muy cuidadosos con el uso de los “if(esto == null)”, en Kotlin simplificaron este concepto con el uso de null safety. También trajeron a la mesa cosas como el elvis operator, el cual en mi opinión viene a reemplazar al condicional ternario.

La industria y su relación con Android

Hay que limpiar un poco la imagen del emprendedor early adopter. De hecho escribí un artículo al respecto. La industria esta llena de personas inteligentes y con criterio. Nadie piensa tirar abajo todas sus aplicaciones en Java y migrar a Kotlin.

Si es cierto que empresas mas chicas pueden tomar este riesgo porque sus productos son más jóvenes, o incluso estan arrancando de cero. Pero pensemos en un gigante como Amazon: aún con células de desarrolladores, dudo mucho que de un día al otro hayan dedicado todo a la migración. Siempre es una cuestión progresiva, basada en el criterio, la necesidad actual, los tiempos y los costos involucrados.

Entonces aquí viene lo interesante: Los desarrolladores en Kotlin son necesarios en la misma medida que los de Java. Hay un concepto llamado Legacy Code, el cual significa en pocas palabras “este código es viejo pero funciona”.

Si una empresa esta ganando mucho dinero con una app que se mantiene viva hace cinco años y fue desarrollada en Java, no va a cambiar su tecnología salvo que sea expresamente necesario.

Kotlin nos favorece a los desarrolladores, nos hace más ágiles y nos facilita la depuración (debugging) de errores. Pero Java lideró el mercado por años y dejó una huella difícil de borrar. Y un módulo (o cientos) que fue programado en Java con unas definiciones antiguas pero funcionales tiene tanta importancia como el nuevo que se desarrolle en Kotlin.

Por otro lado, si sos un desarrollador nuevo en el area y te metiste con Kotlin de lleno, ahora te estás preguntando si cometiste un error. La realidad es que no, porque si haces un curso corto de Java, al compartir muchas similitudes, vas a poder mantener legacy code de la misma manera que un senior en Java.

Mis años en los dos lenguajes me ayudan a detectar, por ejemplo, por qué una librería sigue manteniendo su código en Java y no migran. También me permite leer y entender legacy code, incluso desarrollar nuevos módulos si hiciera falta. El caso es que vos, querido lector/a, podes lograr lo mismo en menos tiempo estudiando Kotlin y haciendo un repaso general de Java.

Quiza mi velocidad de resolución sea superior a la tuya, pero eso lo vas a ganar con el tiempo y la práctica. Lo importante aquí es que te podés convertir en un desarrollador con las dos aristas y aplicar al mercado.

Conclusiones

Si llegaste hasta aquí, te pido disculpas por los kilogramos de texto que te he obligado a leer. Seguro me estoy dejando muchas cosas, porque comparar estos dos monstruos con el detalle que merecen me llevaría a escribir una tesis al respecto (no me tientes).

Lo importante es que más alla del lenguaje que vayas a elegir, tengas en cuenta los movimientos del mercado. Quizá si lees esto en 5 años, la respuesta más clara sea Kotlin, pero hoy día vivimos en un mundo donde los dos lenguajes coexisten.

Otra noticia interesante es que todo lo que te expliqué en Android aplica para Spring (el backend), donde hoy ya podes crear proyectos en Java o Kotlin. Las fronteras se expanden y no debo ser el único que le encanta tener opciones adicionales a la hora de desarrollar.

Disfruta codeando y no olvides que cualquier desición que tomes no resta, sino que suma a tu stack de conocimiento.

¡Deja un comentario!

Artículos relacionados

Curso Kotlin | #19. Pair

A veces necesitamos relacionar dos valores y almacenarlos en una variable única, y para ello tenemos a Pair.

Curso Kotlin | #17. Proyecto: The Hero Legacy

Si empezaste esta serie desde cero y ya leíste 16 capítulos, ¡Felicidades! Empezaste a dominar los primeros conceptos fundamentales en Kotlin. Este es el primer paso de tu senda como desarrollador/a. Estamos en una instancia en donde podemos poner en práctica todo lo que aprendiste hasta ahora. Bienvenido/a al primer proyecto de la serie.

Curso Kotlin | #16. Funciones

Las funciones son procedimientos que se pueden reutilizar y nos permiten encapsular comportamientos y mejorar la lectura del código.

Curso Android | #4. Emuladores

En este capítulo, vamos a configurar un emulador y ver alternativas al emulador de Android Studio. Podés acceder al curso completo desde este link. También