Advertisement
  1. Code
  2. Android Studio
Code

Programando Aplicaciones Funcionales en Kotlin: Primeros Pasos

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Coding Android Apps in Kotlin.
Java vs. Kotlin: Should You Be Using Kotlin for Android Development?
Coding Functional Android Apps in Kotlin: Lambdas, Null Safety & More

Spanish (Español) translation by Nadia Castelli (you can also view the original English article)

Mientras que la gran mayoría de las apps Android están escritas en Java, no hay una regla que diga que debes usar Java en desarrollo Android. Existe variedad de lenguajes de programación modernos diseñados para correr en la Máquina Virtual Java (JVM), y uno de estos lenguajes, que está ganando popularidad en la comunidad Java, es Kotlin.

En la primera sección de esta serie de tres partes, vimos qué es Kotlin y qué tiene para ofrecer a los desarrolladores Android:

  • Es 100% intercambiable con Java, a tal punto que puedes seguir utilizando librerías y frameworks Java preexistentes, e incluso puedes usar una mezcla de Java y Kotlin en tus proyectos Android.
  • Su sintaxis está diseñada para que se perciba similar a Java, lo cual significa que aprender los fundamentos de Kotlin debería ser bastante sencillo para los desarrolladores Java. 
  • Combina características y conceptos tanto de programación funcional como procedural.
  • Está soportado por Android Studio.

En la segunda parte de este tutorial, comenzaremos a desarrollar en Kotlin. Cuando llegues al final del tutorial, habrás creado una app Android sencilla que muestre una línea de texto—y esté escrita enteramente en Kotlin. También sabrás cómo evitar volver a escribir findViewById, mediante el uso de las extensiones de Kotlin para Android.

Pero primero, ¡es momento de enseñarle a nuestro entorno de desarrollo a hablar un nuevo lenguaje!

Instalando el Plugin de Kotlin en Android Studio

Lo primero que debes hacer es agregarle soporte para Kotlin a tu instalación de Android Studio.

Antes de empezar, asegúrate de tener la versión más reciente y estable de Android Studio, ya que es más probable que encuentres bugs con el plugin de Kotlin en versiones experimentales de Android Studio. También vale la pena abrir el SDK Manager y verificar las actualizaciones disponibles para los paquetes que hayas instalado.

Una vez seguro de que tu entorno de desarrollo está al día, estás listo para instalar el plugin de Kotlin. Al iniciar Android Studio deberás ver la ventana Welcome to Android Studio—si esta ventana no aparece, cierra Android Studio completamente y vuelve a abrirlo luego.

Haz click en el ícono Configure, y luego selecciona Plugins en el menú desplegable subsecuente.

Open Android Studios Configure Plugins menu

Clickea el botón Install JetBrains plugins....

Install the Kotlin for Android Studio plugin

En el menú, selecciona Kotlin, y luego haz click en el botón verde Install. Deberás reiniciar tu IDE antes de que el plugin de Kotlin se active, así que puedes clickear en botón Restart Android Studio que aparece, o reiniciar tu IDE manualmente.

Configurando Tu Proyecto para Usar Kotlin

En este punto, tu IDE puede comprender y ejecutar código Kotlin, pero aún así debes configurar Kotlin cada vez que quieras utilizarlo en un proyecto nuevo. Ahora, creemos un proyecto nuevo y configurémoslo para utilizar Kotlin. Crea un nuevo proyecto con la configuración que quieras, pero para ganar en simplicidad, selecciona Empty Activity cuando se muestre la opción.

Gracias al plugin de Kotlin, configurar un proyecto para usar Kotlin no podría ser más sencillo: simplemente selecciona Tools en la barra de herramientas de Android Studio, seguido de Kotlin y Configure Kotlin in Project.

Select Android Studios Tools Kotlin Configure Kotlin in Project option

Esto abre un popup donde puedes elegir configurar Kotlin para:

  • todos los módulos
  • todos los módulos que contengan archivos Kotlin
  • un único módulo

Como en mi proyecto voy a utilizar solamente Kotlin, elegí All modules. También puedes elegir qué versión de Kotlin deseas utilizar—típicamente esta será la versión más reciente.

Como alternativa, puedes configurar Kotlin seleccionando Help en la barra de menú de Android Studio, seguido de Find Action... En la barra Find Action, comienza a tipear Configure Kotlin in Project, y luego selecciona esta opción cuando aparezca.

La opción Configure Kotlin in Project lleva a cabo una serie de cambios en los archivos build.gradle de tu proyecto, así que observaremos más de cerca cómo han cambiados estos archivos. Abre el archivo build.gradle que está a nivel del proyecto—debería verse similar a este:

Ahora, veamos el archivo build.gradle que está a nivel de módulo:

Finalmente, sincroniza tus cambios, o bien clickeando Sync Now en el popup que aparece, o clickeando el ícono Sync Project With Gradle en la barra de herramientas de Android Studio.

Convierte Cualquier Archivo Java a Kotlin

Una característica del plugin de Kotlin que es particularmente útil para los que recién comienzan a usarlo es su habilidad de convertir cualquier archivo fuente Java a Kotlin, manteniendo compatibilidad total en tiempo de ejecución.

La posibilidad de ver exactamente cómo cualquier archivo Java se traduciría a Kotlin es ideal como ayuda en tu aprendizaje del lenguaje, pero también puede ser útil a lo largo de tu viaje por Kotlin—si alguna vez luchas por lograr escribir algo en Kotlin, siempre puedes escribirlo en Java y luego utilizar esta característica para convertir ese código a Kotlin.

Convirtamos el archivo MainActivity de nuestro proyecto en un archivo fuente Kotlin. Hay dos maneras de invocar la acción Convert Java File to Kotlin File del plugin de Kotlin, entonces:

  • Selecciona tu archivo MainActivity, y luego selecciona Code en la barra de menú de Android Studio, seguido de Convert Java File to Kotlin File.

Convert your existing Java file into a Kotlin file by selecting Code Convert Java File to Kotlin File
  • O selecciona Help en la barra de menú de Android Studio, y luego Find Action. En el popup subsecuente, comienza a tipear Convert Java File to Kotlin File y selecciona esta opción cuando aparezca. También puedes abrir el popup Find Action con un atajo de teclado: si estás usando Mac, presiona Command-Shift-A, y si estás en Windows o Linux presiona Control-Shift-A.

Debes tener en cuenta que, dependiendo de la complejidad de tu código, la conversión no siempre sea 100% precisa, así que siempre debes verificar tu código convertido en busca de errores.

Tu MainActivity recién convertida debería verse parecida a esto:

También notarás que la extensión del archivo ha cambiado, pasando de MainActivity.java a MainActivity.kt.

Esta Activity es simple, pero esas breves líneas ilustran algunas características clave de la sintaxis de Kotlin. Como este es nuestro primer contacto con código Kotlin, analicemos esta clase línea por línea.

Comprendiendo la Sintaxis de Kotlin

En Kotlin, se declaran clases usando la palabra reservada class, exactamente como en Java. Sin embargo, en Kotlin, las clases (y los métodos) son públicos y finales por defecto, así que puedes crear una clase simplemente escribiendo class MainActivity.

Cuando se trata de extender una clase, se reemplaza el extends de Java con dos puntos, y luego se pone el nombre de la clase madre. Entonces en la primera línea de nuestro archivo MainActivity.kt, estamos creando una clase pública y final llamada MainActivity que extiende AppCompatActivity:

Su equivalente en Java sería:

Si deseas hacer override de una clase o método, tienes que declararlo explícitamente como abierto o abstracto.

En Kotlin, las funciones se definen con la palabra reservada fun, seguida del nombre de la función y los parámetros entre paréntesis. En Kotlin, el nombre de la función se escribe antes que su tipo:

Es lo opuesto de Java, donde el tipo viene antes del nombre:

Verás que no estamos especificando que este método es final, ya que en Kotlin todos los métodos son finales por defecto.

El resto de esta Activity se ve muy similar a Java. Sin embargo, estas breves líneas ilustran otra característica clave de Kotlin:

En Kotlin no necesitas terminar tus líneas con punto y coma, de aquí la ausencia de punto y comas en el trozo de código anterior. Puedes agregarlos si así lo quieres, pero tu código será más limpio y fácil de leer sin ellos.

Ahora que hemos descifrado nuestro archivo MainActivity.kt, movámoslo al directorio apropiado. Como el plugin de Kotlin se tomó la molestia de añadir la declaración src/main/kotlin en nuestro archivo build.gradle, creemos este directorio. Este paso no es obligatorio, pero mantener tus archivos Kotlin en un directorio dedicado será en beneficio de un proyecto mucho más limpio.

En el Project Explorer de Android Studio, haz control-click en el directorio Main de tu proyecto y selecciona New en el menú que aparece, seguido de Directory. Nombra kotlin a este directorio, y luego haz click en OK.

Create a dedicated Kotlin directory

Si estás luchando por encontrar el directorio main de tu proyecto, abre la pequeña flecha desplegable en la parte superior izquierda del Project Explorer y selecciona Project. Ahora no deberías tener problema para encontrar ese elusivo directorio src/main.

Open Android Studios Project Explorer menu and select Project

Una vez creado el directorio Kotlin dedicado, arrastra tu archivo MainActivity.kt hacia él. Sólo asegúrate de retener el nombre del paquete existente de tu archivo MainActivity.kt, para que tu proyecto siga funcionando.

Además, si vas a usar solamente Kotlin en este proyecto, quizás quieras borrar el directorio Java, para no llenar tu proyecto de directorios vacíos e innecesarios.

Como Kotlin compila a bytecode, una aplicación escrita en Kotlin se siente exactamente igual que una aplicación escrita en Java, así que intenta instalar esta app en tu dispositivo Android o en un AVD compatible—debería parecer que nada ha cambiado.

Creando Archivos Kotlin Extra

Si continúas trabajando con Kotlin en tu proyecto, tarde o temprano necesitarás comenzar a crear nuevos archivos Kotlin más que simplemente convertir archivos Java preexistentes.

Para crear un archivo Kotlin, haz control-click en tu directorio app/src/main/kotlin y selecciona New > Kotlin Activity.

Create a new Kotlin Activity by selecting your Kotlin directory and clicking New Kotlin Activity

Dale un nombre a tu clase y selecciona class en el menú desplegable. Tu nueva clase debería verse más o menos así:

En este punto, tu Activity está vacía. Para llegar al punto donde puedes agregar algo de funcionalidad real, deberás seguir unos pocos pasos. Primero, agrega las sentencias import que quieras utilizar. La única diferencia entre las sentencias import en Kotlin y en Java es que no necesitas terminar cada línea con un punto y coma. Por ejemplo:

Luego necesitarás especificar la clase que estás extendiendo, empleando el mismo formato que vimos en nuestro archivo MainActivity.kt.

A continuación, debes hacer override del método onCreate de la Activity:

Ahora puedes añadir la funcionalidad que quieras a esta activity (y en la próxima sección, te mostraré como usar extensiones de Kotlin para manipular los componentes de la UI, así que este puede ser un buen punto de partida), pero lo último que necesitas hacer antes de empezar es declarar tu Activity Kotlin en el Manifest. Esto consiste en exactamente la misma fórmula que la declaración de una nueva Activity Java, por ejemplo:

Extensiones de Kotlin para Android: Dile Adiós a findViewById

Ahora que hemos aprendido lo básico, observemos de qué es capaz Kotlin realmente—comenzando con una característica que verdaderamente puede reducir la cantidad de código repetido que necesitas escribir.

En Android, cada vez que quieres trabajar con cualquier View en una Activity, debes utilizar el método findViewById para obtener una referencia a esa View. Esto convierte a findViewById en uno de los más importantes, pero también uno de los trozos de código más frustrantes, al encontrarte escribiéndolo una, y otra, y otra vez en tus proyectos Android. El método findViewById es una gran fuente de bugs en potencia, y si estás trabajando con múltiples elementos de la UI en la misma Activity, todos esos findViewById pueden causar un verdadero desorden en tu código, haciéndolo difícil de leer.

Si bien existe un número de librerías, como Butter Knife, que apuntan a remover la necesidad de findViewById, estas librerías aún así requieren que hagas anotaciones en los campos de cada View, lo que puede llevar a errores y todavía hace sentir que es mucho esfuerzo que podría ser mejor invertido en otras áreas de tu proyecto.

El plugin de Extensiones para Android de Kotlin (que ha sido recientemente incorporado al plugin de Kotlin estándar) promete convertir a findViewById en algo del pasado, ofreciéndote los beneficios de las librerías previamente mencionadas sin la desventaja de tener que escribir código adicional o sumar tiempo de ejecución adicional.

Puede utilizar extensiones de Kotlin para importar referencias a View en tus archivos fuente. En este punto el plugin de Kotlin creará un conjunto de "propiedades sintéticas" que te permitirán trabajar con estas vistas como si fueran parte de tu activity—específicamente, esto significa que ya no tendrás que escribir findViewById para ubicar cada View antes de poder trabajar con ella.

Para usar extensiones, tienes que habilitar el plugin de Extensiones para Android de Kotlin en cada módulo, así que abre el build.gradle a nivel de módulo y agrega lo siguiente:

Sincroniza estos cambios haciendo click en el popup Sync Now.

Luego puedes importar las referencias a una única View, empleando el siguiente formato:

Por ejemplo, si tu archivo activity_main.xml contuviera un TextView con el ID textView1, entonces importarías la referencia a esta vista añadiendo lo siguiente a tu Activity:

Luego, podrías acceder a textView1 dentro de esta Activity utilizando solamente su ID—¡sin ningún findViewById a la vista!

Veamos las extensiones en acción, agregando un TextView a nuestro archivo activity_main.xml, importándolo en nuestro archivo MainActivity.kt, y utilizando extensiones para establecer el contenido del TextView de manera programática.

Comienza creando tu TextView:

Luego puedes importar el TextView en tu MainActivity.kt, y establecer su texto utilizando solamente su ID:

Verás, si deseas trabajar con múltiples componentes del mismo archivo de layout, puedes importar el contenido completo de un archivo de layout de una sola vez, utilizando la siguiente fórmula:

Por ejemplo, si quisieras importar todos los componentes de tu archivo activity_main.xml, agregarías lo siguiente a tu Activity:

Conclusión

En esta segunda parte, hemos cubierto la configuración de tu entorno de desarrollo para soportar Kotlin, y hemos visto cuán simple es convertir tu código Java preexistente a Kotlin. También vimos algunas de las características más importantes de la sintaxis de Kotlin, e introdujimos extensiones de Kotlin para Android en nuestro proyecto.

En la tercera y última parte, estudiaremos algunas características más avanzadas del lenguaje Kotlin que, como desarrollador Android, encontrarás especialmente útiles.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.