Blog
Blog Artículo 2407
Tendencias en el desarrollo móvil : Kotlin
17/09/2018

Inicialmente es importante repasar sobre algunos conceptos para entender porqué Kotlin es una opción para desarrollar aplicaciones móviles Android. Tradicionalmente, Java ha sido el lenguaje utilizado para crear aplicaciones Android y se caracteriza por ser un lenguaje híbrido. Esto quiere decir que es compilado e interpretado.

Ahora bien, Java compila hacia archivos .class (bytecode) y es interpretado por una Java Virtual Machine (JVM). Esto permite que Java sea portable a través de muchas plataformas. Esa portabilidad ha permitido que Java sea un lenguaje muy popular y usado para todo tipo de soluciones, desde paginas web, sistemas embebidos, aplicaciones independientes y aplicaciones móviles.

Debido al uso de JVM para interpretar el bytecode los desarrolladores pueden crear aplicaciones Android con cualquier otro lenguaje que genera bytecode. Por ejemplo: Groovy, Scala, Clojure y Kotlin.

Ya teniendo más claro el porqué es posible desarrollar aplicaciones Android con Kotlin, podemos ver porqué Kotlin está siendo tan apoyado por Google y se ha convertido en una tendencia para el desarrollo de aplicaciones Android principalmente.

¿Qué es Kotlin?

Kotlin, un lenguaje basado en JVM desarrollado por JetBrains (la compañía detrás del intelliJ IDE) en 2011. Kotlin v1.0 se lanzó en 2016 y se considera el primer lanzamiento estable y oficial de este lenguaje de programación. Pero hasta recientemente en Mayo del 2017 Google reconoció a Kotlin como un lenguaje de primera clase para Android apoyando el lenguaje completamente.

En relación a sus características, Kotlin es expresivo, conciso, extensible, seguro, pragmático y se centra en la interoperabilidad con código Java. De esta manera, se puede hacer todo lo que Java hace pero con menos código y menos molestias a lo largo del camino.

A diferencia del lenguaje de programación Swift para iOS, que era un proyecto interno de Apple y luego abierto posteriormente, Google no será propietario de Kotlin. Este lenguaje continuará siendo desarrollado y respaldado por JetBrains – la compañía se ha asociado con Google para establecer una fundación Kotlin sin fines de lucro para cuidar y dar soporte al lenguaje.

¿Por qué desarrollar aplicaciones móviles con Kotlin?

Kotlin tiene muchas características que han hecho que cada vez más desarrolladores lo utilicen, pero las dos principales son su seguridad e interoperabilidad.

Seguridad

Kotlin es seguro porque su diseño evita ciertos tipos de errores en un programa.

Ningún lenguaje de programación previene todos los errores posibles (especialmente errores de lógica), pero Kotlin hace mucho mejor trabajo que Java. También ofrece la seguridad de “Type Safety” en las aplicaciones al ser un lenguaje fuertemente tipado (tipeo estático, comprobaciones del compilador). Sin embargo, cabe mencionar que Kotlin también tiene la capacidad de tratar de inferir los tipos.

Por otra parte, Kotlin se esfuerza por eliminar los posibles errores de NullPointerException del código, el cual es un problema bastante frecuente en programas Java. Esto lo logra debido a que el sistema de tipeo de Kotlin rastrea los valores que pueden y no pueden ser nulos y prohíbe las operaciones que pueden conducir a un NullPointerException en tiempo de ejecución. De esta manera, los casos de NullPointerException en Kotlin son altamente reducidos a básicamente tres casos principales.

La primera se refiere al llamado explícito a la excepción de NullPointerException. Asimismo, la segunda se refiere al uso del operador !!, el cual indica que la responsabilidad de cualquier NPE en ese llamado recae en el programador. Por último, al interoperar con código Java que le devuelva esta excepción directamente a Kotlin.

Interoperabilidad

Es muy fácil comenzar a utilizar Kotlin debido a su interoperabilidad con Java en Android. Por lo tanto, se reduce la curva de aprendizaje requerida por parte de los programadores previamente conocedores de Java. De esta manera, se puede conservar  código existente en Java y continuar usando las diversas bibliotecas de Java que existen para Android. Lo que permite añadir progresivamente código Kotlin a su proyecto con la posibilidad de interactuar con el código de Java ya existente.

Puede compilar una combinación arbitraria de archivos fuente de Java y Kotlin, independientemente de cómo dependen el uno del otro. Es un reemplazo directo, puede llamar al lenguaje Java desde Kotlin, y puede llamar a Kotlin desde el lenguaje Java.

Las clases y métodos de Kotlin se pueden llamar de la misma forma en como se llaman las clases y métodos de Java normales. Además, ofrece la máxima flexibilidad para mezclar el código de Java y Kotlin en cualquier parte del proyecto. También puede extender bibliotecas de Java. Por ejemplo, puede insertar código Kotkin en una librería estándar de Java, y así ampliarla con funciones adicionales para un uso más conveniente en Kotlin.

¨Type Inference¨

Kotlin puede hacer el intento de inferir los tipos si estos no son escritos explícitamente en el código. A diferencia de Java, Kotlin no requiere que especifique el tipo de cada variable porque este puede inferirse a partir del contexto y el código incluido en la expresión. Esto reduce código “boilerplate” mientras que mantiene la seguridad de poder usar “Type Safety” que esperaríamos de un lenguaje moderno.

Los valores y las variables no son los únicos lugares donde se puede usar la inferencia de tipo. También se puede usar en cierres donde el tipo de parámetro (s) se puede inferir a partir de la firma de la función. También se puede usar en funciones de línea única donde el valor de retorno se puede inferir a partir de la expresión en la función.

Google y Kotlin

Además de los beneficios que ofrece por su diseño como lenguaje, también una de las principales razones de que Kotlin está siendo tan usado es el apoyo contundente y abierto que ha mostrado Google y la comunidad de desarrolladores de aplicaciones móviles android.

Como se puede ver en las guías de Android ofrecidas por Google para los desarrolladores, en la mayoría de temas el ejemplo de código se muestra primeramente en Kotlin. Aunque por ahora aún mantienen la opción para ver el ejemplo de código en Java, por ahora. Por ejemplo:  https://developer.android.com/guide/topics/media/camera

Asimismo, las conferencias de Google I/O del año 2017 también fueron una muestra del gran apoyo que Google tiene hacia Kotlin. En la mayoría de sus videos subidos a la cuenta de Android Developers en YouTube muestra claramente ejemplos de código solamente en Kotlin, esto desde que anunció su soporte como lenguaje de primera clase para Android. Canal de YouTube de Android Developers: https://www.youtube.com/user/androiddevelopers

¿Debo aprender Kotlin?

Si trabaja o desea trabajar como desarrollador de aplicaciones para Android, la respuesta es . Sin embargo, Java no va a desaparecer del radar de android en el corto ni mediano plazo por el hecho de que ya existen muchas aplicaciones en Java que ocuparan soporte y mantenimiento. Pero definitivamente el camino y tendencia es hacia utilizar Kotlin, ya que inclusive esas mismas aplicaciones pueden ir migrando progresivamente hacia Kotlin gracias a su interoperabilidad.

Y personalmente, es una recomendación ya que puede ser hasta un factor determinante para abrir o cerrar puertas en un futuro, pues es un área de desarrollo que está constantemente innovando y cambiando.

¿Y si no soy desarrollador de aplicaciones Android, debería aprender Kotlin? Mi respuesta sería:  ¿Por qué no?. Un dato interesante de recordar es que Kotlin no solo puede ser usado en el desarrollo Android, sino que también puede usarse como lenguaje core para una solución completa, la parte Web, el Backend, inclusive se habla de soporte iOS en un futuro, lo cual nos daría una solución multiplataforma.

Pueden surgir muchos beneficios de tener un solo lenguaje para el desarrollo de los diferentes componentes en un proyecto. Más eficiencia de los desarrolladores, comprensión de código, reutilización de componentes, entre otros…

Más información sobre este enfoque de desarrollo con Kotlin y sus beneficios: https://blog.novoda.com/introduction-to-kotlin-multiplatform/

Figura 1. Kotlin Anywhere(Heine, 2018)

 

Referencias e información sobre Kotlin:

https://kotlinlang.org/

https://blog.novoda.com/introduction-to-kotlin-multiplatform/