#androideando2017

Kotlin

Que es Kotlin?

  • Lenguaje de POO, creado por Jetbrains.
  • Se ejecuta sobre la JVM: no solo sirve para Android, sino que potencialmente se podría utilizar para crear nuestro servidor o crear aplicaciones de escritorio que se ejecuten sobre la JVM. También existen algunas variantes de Kotlin, como Kotlin JS, variante de TypeScript (para frontend).
  • Lenguaje fuertemente tipado, con apariencia de lenguaje dinámico (estilo Groovy o JavaScript), ofrece lo mejor de dos mundos: el compilador nos sigue ayudando pero no tenemos que escribir tanto código.
  • A futuro: Kotlin Native, permitirá ejecutar código prácticamente en cualquier dispositivo. Existe versión de preview, que permite ejecutar aplicaciones en una Raspberry Pi o en un dispositivo IOS.
  • Gratis y Open Source.

Filosofía del Lenguaje

  • Pragmático: intenta simplificar nuestra tarea lo máximo posible. No escribir cosas innecesarias. Reducir el código.

  • Conciso: reducir al mínimo cantidad de caracteres. No usar ; (opcional), no escribir new al crear objetos, etc.

  • Seguro: mas seguro que Java ya que el compilador nos ayuda en mas cosas, como seguridad frente a nulos y sealed class  entre otros. En varios casos Java nos dejaría ejecutar a pesar de que pueda ocurrir algún error.

  • Interoperable: podemos utilizar todo el código que ya tengamos en Java y agregar Kotlin, o viceversa.

Instalar Plugin Kotlin

En la versión 3.0 de Android Studio ya vendrá incluido.

File / Settings...

Instalar Plugin Kotlin

Buscar Kotlin Languajes, instalar y reiniciar

2

3

1

Configurar Kotlin

  • Crear, en Android Studio, proyecto nuevo de la forma tradicional (empty activity)
  • Configurar Kotlin en proyecto

2

3

1

Configurar Kotlin

  • Seleccionar opciones, configura automaticamente plugin en nuestro proyecto

2

3

1

Que agrega?

  • build.gradle (project) 

Que agrega?

  • build.gradle (module) 
  • Android Extensions:  plugin que permite recuperar views de Activities, Fragments y Views
  • Anko: Librería creada por el equipo de Kotlin para facilitar tareas del día a a.

Convertir clase Java a Kotlin

  • Todo es public por defecto
  • extends se reemplaza por  :
  • override es palabra reservada, obligatoria
  • Los tipos se ponen detrás de la variable
  • Si un tipo puede ser nulo se marca con ?
  • Es opcional escribir ;

Code / Convert Java File to Kotlin File

Variables

  • Son de tipo estático, con ventajas de  lenguajes dinámicos: en la mayoría de los casos el compilador es capaz de inferir de que tipo es la variable que estamos utilizando y no necesitamos especificar el tipo, esto simplifica mucho el código.

  • No hay tipos básicos, son todos objetos. No genera problemas de rendimiento porque el compilador determina si se está usando como objeto o tipo básico y el bitcode generado será acorde al tipo determinado.

  • Como son objetos, no hay conversiones automáticas.

  • var: variable mutable, su valor puede cambiar.

  • val: variable inmutable, su valor puede ser asignado solo una vez dentro de la ejecución actual, similar a final.

  • Unit: objeto que reemplaza al void de Java

Variables

No hay conversión automática

Smart Cast: si comprobamos un tipo en una función , podemos utilizar esa variable con el tipo que hayamos comprobado, asi no hacemos el cast manualmente

Ejemplo

Ejemplo

String Tamplates: para mostrar variables dentro de un texto.

findViewById no es necesario, con android extensions + synthetic se accede directamente a los elementos del layout

toast y println: funciones de Anko

Cast al final

Expresion Body

Cuando una función devuelve una sola expresión, se pueden omitir las llaves y se especifica el cuerpo después de un símbolo =

alt + enter  en función

Expresiones Lambdas

Representa una función anónima, reduce la cantidad de código necesaria para ejecutar ciertas tareas que son repetitivas (como escritura de listeners y callbacks).

  • Debe estar delimitada por llaves.
  • Si la expresión contiene cualquier parámetro, debe declararlo antes del símbolo ->
  • Si tiene múltiples parámetros, se separan con comas.
  • El cuerpo de la función va luego del signo ->

Clases

Clases

  • En el encabezado se especifican parámetros y tipo, funciona como constructor principal.
  • Si la clase no tiene cuerpo, las llaves pueden ser omitidas.
  • El constructor principal no puede contener ningún código. El código de inicialización se coloca en bloques que están prefijados con la palabra clave init.
  • Properties: parámetros de la clase. Si se declaran var el compilador genera automaticamente los getters y setters, si se declaran val, solo genera getters.
  •  equals, hashCode, toString, copy son generados por defecto.

 

 

Uso de Clases

  • No se utiliza new.
  • Se accede a las properties directamente, sin necesidad de usar getters o setters.

Uso de Clases

  • No se utiliza new.
  • Se accede a las properties directamente, sin necesidad de usar getters o setters.
  • Todas las variables son consideradas no anulables por defecto, el intento de asignar un valor nulo a una variable resultará en error de compilación.
  • Para declarar explícitamente que una variable puede aceptar un valor nulo, se agregar un ? al final del tipo de variable.

Seguridad ante Nulos

  • En Java, cada objeto se considera anulable por defecto, razón por la cual las NullPointerException son tan comunes.
  •  
  • En nuestro ejemplo de la clase Suma, esto compila:

Seguridad ante Nulos

Sin embargo...

  • Se deben realizar validaciones de datos nulos si definimos que el objeto puede ser nulo, de esta forma el compilador de Kotlin no nos mostrará error.
    • Operador de Invocación Segura    ?.
    • Operador Elvis  ?:

Seguridad ante Nulos

Otras Optimizaciones sobre Java para profundizar:

  • Funciones de extensión
  • Enumerados
  • Control de Flujo
  • Colecciones y rangos
  • Sealed clases
  • Type Alias
  • Co-rutinas

Otras Optimizaciones

Links & Referencias

Kotlin and Android: https://developer.android.com/kotlin/index.html

Kotlin (Jetbrains): https://kotlinlang.org/

DevExperto de Antonio Leiva: https://devexperto.com/

Slide: https://slides.com/gdgneuquen

 

Muchas Gracias!

Bonus Track

Curso Kotlin para desarrolladores Android: Ver aquí

Kotlin for Android Developers: Clic aquí

 

Solicitar códigos de descuento a los Organizadores de GDG Neuquen

Solo para GDG Neuquen:

  • 40% de descuento para acceder a la compra de Curso Kotlin para desarrolladores Android
  • 20% de descuento para comprar el libro Kotlin for Android Developers (Formato PDF, EPUB and MOBI)

 

Gentileza de DevExperto, de Antonio Leiva

Androideando2017 - Kotlin

By GDG Neuquén

Androideando2017 - Kotlin

Taller introductorio para conocer Kotlin para desarrolladores Android - GDG Neuquen

  • 673