#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 dí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!
- Meetup: bit.ly/gdgneuquen
- Google+: bit.ly/gdgneuquenplus
- Facebook: facebook.com/gdgneuquen
- Twitter: @gdgneuquen
- Slack: gdgneuquen.slack.com
Bonus Track
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
- 701