Centro Universitario de Tecnología y Arte Digital

Facebook
Twitter
LinkedIn

Antonio Leiva: “reducimos hasta un 40 % la cantidad de líneas de código utilizando Kotlin frente a Java”

Antonio Leiva es hoy uno de los referentes y de los mayores expertos en Kotlin en la comunidad de desarrolladores de España. Está certificado por JetBrains, precisamente, para enseñar a los trabajadores de cualquier empresa a iniciarse en este ‘nuevo’ lenguaje oficial de Android. También ayuda a los programadores de todo el mundo en esta transición con su libro ‘Kotlin for Android Developers’ (en inglés). Hemos hablado con él sobre su experiencia profesional y sobre la situación del sector.

Antonio Leiva es hoy uno de los referentes y de los mayores expertos en Kotlin en la comunidad de desarrolladores de España. Está certificado por JetBrains, precisamente, para enseñar a los trabajadores de cualquier empresa a iniciarse en este ‘nuevo’ lenguaje oficial de Android. También ayuda a los programadores de todo el mundo en esta transición con su libro ‘Kotlin for Android Developers’ (en inglés). Además, ofrece recursos gratuitos especializados enfocados a desarrolladores Android (puedes echar un vistazo pinchando aquí).

Confiesa a U-tad que llegó a Kotlin casi por casualidad, por la necesidad de superar Java , un lenguaje ya bastante antiguo y en el que veía ciertas limitaciones. Android necesitaba una renovación y Leiva la encontró en Kotlin: “estaba integrado en la plataforma de Android y se podían desarrollar aplicaciones muy bien, así que decidí empezar por él”, asegura a U-tad. En la actualidad este lenguaje ha hecho que su trabajo sea más completo y enriquecedor y le ha llevado a sentirse pleno profesionalmente.

Antonio Leiva (que pasó por diversas empresas como Indra) ahora trabaja por su cuenta y se dedica de manera casi total a la formación en Android. “Ayudo a otros desarrolladores a desenvolverse en su carrera profesional y a que las empresas hagan su migración de Java a Kotlin”. Desde U-tad hemos hablado con él para entender en qué punto se encuentra este lenguaje y el mundo del desarrollo, así como qué momento está viviendo el programador.

 

Hoy el conocimiento sobre Kotlin ha madurado, pero hace varios años que lanzaste tu libro ‘Kotlin for Android Developers’, ¿qué acogida ha tenido?

El libro tuvo muy buena acogida porque apareció en el momento perfecto: cuando Kotlin estaba lanzando su primera beta, cuando todavía no era ni la versión final. En ese momento no había ningún otro libro hablando sobre el tema, apenas existían algunos artículos y escasa documentación, así que la adopción fue muy buena. Luego, cuando fue adoptado por Google, el libro ya estaba muy bien posicionado, era muy conocido y ha ayudado muchísimo a los desarrolladores. Ha venido bien sobre todo desde que Google ha demostrado que iba a apostar por este lenguaje y que se iba a utilizar en el desarrollo de aplicaciones Android de forma oficial.

 

Eres uno de los referentes en el desarrollo con Kotlin en España, ¿cómo llegaste a interesarte por este lenguaje y en qué punto estás ahora?

Comencé trabajando en C Sharp, en algo que no tenía nada que ver con Android. Era un lenguaje muy potente, muy moderno. Llegó un momento en el que decidí desarrollar aplicaciones en Android porque me gustaba mucho más que el entorno en el que estaba trabajando anteriormente, pero uno de los problemas que me encontré al comenzar fue que usar Java era como dar un paso atrás. Era como si estuviera retrocediendo un poco en el tiempo. Había muchas características del lenguaje de Microsoft que Java no tenía.

Durante unas charlas en las que estuve en Cádiz – organizadas por la gente de 47 Degrees- me comentaron que estaban haciendo pruebas para desarrollar aplicaciones en Android con Scala. Se ha visto que no funcionaba demasiado bien porque Scala es un lenguaje muy pesado y además quienes crearon Scala tampoco han seguido soportando esa posibilidad, pero me picó el gusanillo. ¿Si se podía hacer con Scala por qué no podía hacerse con otros lenguajes?

Había escuchado hablar de Kotlin por encima, y empezamos a probar con él. Desde el primer momento me quedé fascinado. Simplificaba muchísimo el código comparado con Java. Volví a recuperar muchas cosas que había perdido al entrar en Android y algunas otras que ni siquiera existían en aquel momento en C Sharp, por lo que fue como un descubrimiento que me ayudó a quitarme esa pequeña parte que no me gustaba de Android. También me ayudó a evolucionar como desarrollador. Muchos lenguajes modernos tienen características que Java no tiene y sentía que me estaba quedando atrás. Y de ahí surgió un poco la necesidad y la curiosidad por aprender Kotlin.

 

Después de que Kotlin se oficializara para Android… ¿cómo ha sido la acogida por parte de las empresas?

Las empresas, sobre todo impulsadas por los desarrolladores que hay en ellas, lo están adoptando muy rápido. El crecimiento se multiplica por cuatro cada año, según las cifras que han mostrado en la KotlinConf, que es una conferencia que organiza el equipo de Jetbrains y de Kotlin cada año. A día de hoy una de cada cuatro aplicaciones que hay en la Play Store, de las 1000 que más descargas reciben, ya está utilizando Kotlin en su desarrollo. Y esto no hace más que crecer cada día. Cuando me refiero a que utilizan Kotlin quiero decir que contienen algo de código Kotlin. Obviamente no estarán enteras en Kotlin porque convertir una aplicación entera desde Java a Kotlin es muy costosa y tampoco hace falta: dadas sus características pueden convivir los dos en una aplicación sin problema.

Por tanto, su consolidación a día de hoy es exponencial en cuanto a la evolución del lenguaje, y se prevé que continúe así. De hecho, Google cada vez habla más sobre Kotlin y menos de Java, así que hay una tendencia a que Kotlin sea el lenguaje más usado principalmente en cualquier empresa y en cualquier desarrollo de aplicaciones Android. Siempre quedarán algunas empresas que, por diversos motivos, mantengan Java: porque tienen un código base muy antiguo y no quieren reciclarse, por ejemplo. No obstante, la tendencia es que prácticamente todas las empresas acaben utilizando Kotlin.

 

¿En qué se diferencia Kotlin de Java para Android y por qué Google apuesta por dejar atrás a Java e ir hacia algo nuevo?

Unido a lo que comentaba, el Java que se puede utilizar en Android está muy obsoleto, porque al final es una especie de Java 7 con algunas características de Java 8, pero ni siquiera todas. Hay muchas nuevas funcionalidades de los lenguajes modernos que le faltan, como por ejemplo no poder definir una función como un tipo dentro del lenguaje, algo que te limita mucho el tema de programación funcional. Otro tema importante es el relacionado con la seguridad frente a nulos, que los tipos puedan ser definidos como tipos nulos y el compilador te ayude por si se te olvida comprobar ciertas condiciones…

Después, hay muchas otras características del lenguaje que no existen en Java, ni parecidas, como funciones de extensión que te ayudan a extender el código de clases a las que ni siquiera tienes acceso; o las data classes, que simplifican mucho código, y que se utilizan cuando creas una clase de datos, para la que normalmente necesitas crear muchos getters, setters, toString, equals…

Son pequeños detalles que hacen que el lenguaje sea mucho más completo, que simplifique mucho la tarea, que reduzca mucho el número de líneas de código utilizadas (se reduce hasta un 40 % la cantidad de líneas de código utilizando Kotlin frente a Java). Obviamente a menor cantidad de código, menos cantidad de errores, menos código que mantener, menos código que pueda fallar… Esto implica que las aplicaciones se vuelvan más robustas y con mejor experiencia para el usuario. El programador trabaja más contento programando en un lenguaje que funciona y que le brinda mejores características. El resultado final también es mejor y eso repercute en el usuario.

 

¿Cuáles son las principales diferencias entre Java y Kotlin a nivel de eficiencia, seguridad y mantenibilidad del software?

Kotlin es totalmente maduro, así que no te vas a encontrar el problema de un lenguaje que está empezando. Todo lo que hay funciona, y funciona bien. En cuanto a la eficiencia del código como tal va a ser más o menos igual porque al final tanto Kotlin como Java compilan su proyecto a bytecode, que es lo que entiende la máquina virtual de Java, es como un lenguaje intermedio que la máquina virtual de Java es capaz de interpretar. En el caso de Kotlin, al tener unas funcionalidades un poco más complejas, el código final podría ser también un poco más complejo, pero en general eso no va a afectar al rendimiento de la aplicación.

En cuanto a seguridad, el compilador de Kotlin es bastante más potente que el de Java y te ayuda en muchas cosas en las que Java no lo haría. Por ejemplo, en Java puedes utilizar una variable que tiene un valor nulo y eso va a dar un error y el compilador no va a ser capaz de ayudarte durante el proceso de compilación de la aplicación. Sin embargo, con Kotlin, como te obliga a diferenciar entre los tipos nulos y los no nulos, en el momento en que tienes una variable que puede contener un nulo, el compilador te va a obligar a comprobarlo o, si no, generará un error y no te dejará compilar la aplicación.

Ese es uno de los ejemplos en el que Kotlin se convierte en un lenguaje más seguro, porque la realidad es que la mayor parte de los errores que se producen en una aplicación, como he comprobado a lo largo de mi carrera, en torno al 90 % o 95 % de los errores son Null Pointer Exceptions. Solo empezando por ahí nos estamos quitando bastante problemática. Después, como hay otras formas de expresar lo mismo, al final si el código se vuelve más sencillo de escribir y de entender también va a ser más complicado que se produzcan errores.

 

¿Llegará a sustituir Kotlin a Java?

Yo creo que siempre estarán los dos soportados porque, al final, todo el framework de Android está escrito en Java y no lo van a reescribir, pero la tendencia que veo por parte de Google es que cada vez más se están centrando en crear toda su documentación en Kotlin. Sus nuevas librerías también quieren simplificar la vida en el desarrollo de Kotlin, todo lo que publican en blogs y redes está muy enfocado a que se utilice Kotlin. Java no desaparecerá porque no sería fácil de eliminar con facilidad, pero creo que lo van a intentar dejar un poco de lado y que sea Kotlin el que siga evolucionando.

 

¿Qué consejos le darías a alguien que quiere pasar de Java a Kotlin? ¿Y a quienes estén empezando en Kotlin?

Yo tengo muchos recursos con los que facilito esas tareas. Mi recomendación es que prueben con algún ejemplo simple, que desarrollen alguna pequeña aplicación para que poco a poco puedan ir descubriendo las características del lenguaje. Lo ideal es que se busquen algo bien estructurado para que puedan aprender las características que le diferencian de Java de forma sencilla. Kotlin fue creado para personas que ya están experimentadas en Java, por lo que pasar de este último al primero es relativamente sencillo, no lleva demasiado tiempo, no es como aprender un lenguaje nuevo desde cero.

 

¿Cualquier persona, independientemente de su edad y de su nivel formativo, puede formarse en Kotlin?

Yo creo que la complejidad de Kotlin es mucho mayor que la de otros lenguajes, así que si conocen otros sí que se puede acceder a Kotlin sin problema. Si empiezas totalmente desde cero, a día de hoy todavía hay poco contenido que te enseñe a programar utilizando Kotlin como lenguaje base. Por tanto, aprender a programar utilizando este lenguaje no creo que sea una opción. Habitualmente se utiliza Java como lenguaje introductorio porque es un lenguaje bastante simple y es una ventaja a la hora de aprender con él.

 

¿Solo puede utilizarse Kotlin en Android?

No solo se puede utilizar en Android, aunque ha sido donde más éxito ha tenido. Desde hace una versión o dos también puede utilizarse para desarrollar frontend con una variante que se llama KotlinJs, que lo que te permite es una especie de typescript. Lo que hace es transpilar el código que escribes en Kotlin a Javascript y puedes programar para web.

También han publicado Kotlin/Native, otra variante que lo que hace es quitarse de en medio la máquina virtual de Java para que se pueda ejecutar Kotlin en cualquier dispositivo que el equipo soporte. Esto a su vez trae otra ventaja que es que en el futuro se va a poder compartir código escrito en Kotlin entre distintas plataformas. Podremos tener un módulo común de Kotlin donde esté la mayoría del código de nuestras aplicaciones, y luego tener un módulo separado para cada una de las variantes específicas en el que ya solo tengamos que escribir las partes más concretas de cada una de las plataformas, pero podremos compartir ese código común entre todas las aplicaciones de forma más sencilla. Esto va a abrir muchas oportunidades en el futuro. El futuro de Kotlin es muy prometedor.

 

¿Después de Kotlin, tienes pensado fijarte en otros lenguajes?

Es difícil predecir el futuro en el mundo del desarrollo del software, porque cambia muy rápido. Por eso me iré adaptando a lo que vaya surgiendo y a la demanda del mercado. Seguiré con Kotlin mezclado con algo más de alto nivel y de calidad de código. Si en el futuro surgen otras demandas de el mercado que haya que cubrir estaré pendiente para intentar estar, también, de los primeros.

** Si te interesa la tecnología y quieres impulsar tu futuro profesional en este ámbito, infórmate sobre el Grado en Ingeniería del Software que impartimos en U-tad, un paso hacia el éxito, con una empleabilidad del 100%.

 

Facebook
Twitter
LinkedIn