SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
http://sg.com.mx/mobileday #mobiledaysg
KOTLIN, EL NUEVO LENGUAJE PARAHABLARANDROID
Leonel	
  Méndez	
  Jiménez	
  
Twitter:	
  @0xleonel
Android + Java
• Java	
  6.5	
  
• Restricciones	
  de	
  Java	
  
• No	
  streams	
  
• No	
  lambdas	
  
• Nulabilidad
• Sintaxis
• Android	
  Design	
  API	
  
• Nulabilidad	
  en	
  cualquier	
  parte	
  
Opciones
• Groovy	
  Plugin	
  
• https://github.com/groovy/groovy-­‐android-­‐gradle-­‐plugin
• Sintaxis	
  
• Lambdas	
  
• Scala	
  Plugin
• Android	
  Studio	
  Plugin	
  
• Sintaxis
• SBT	
  Build	
  system	
  
• Guava	
  
• Optional	
  Type	
  
• Utils	
  
Límite de métodos
65K
Fuente:  Jake  Wharton's  document
¿Kotlin?
• Jetbrains	
  
• Lenguaje	
  de	
  código	
  abierto	
  
• Interoperable	
  (Java	
  6	
  bytecode)
• Tamaño	
  de	
  runtime	
  muy	
  pequeño	
  (900	
  kb)	
  	
  
• Tipado	
  estático	
  
• Kotlin	
  1.0	
  
Null Safety
var	
  b:	
  String	
  =	
  “Mobile	
  Day”
b	
  =	
  null	
  //	
  Compilation	
  Error	
  
var	
  b:	
  String?	
  =	
  “Mobile	
  Day”
b	
  =	
  null	
  //	
  Ok
var	
  b:	
  String?	
  =	
  “Mobile	
  Day”
b	
  =	
  null	
  //	
  Ok
val	
  stringLength	
  =	
  b?.length
Extensions
Java
static	
  void	
  createSnackBar(String	
  title,	
  String	
  message,	
  int	
  duration)	
  …
UIUtils.createSnackBar(“title”,”message”,SnackBar.short)
Kotlin	
  
fun	
  Fragment.createSnackBar(title:String	
  =	
  “”,message:String	
  =	
  ””)...
createSnackBart()...
Function Literal aka Lambda
val	
  suma:	
  (Int,	
  Int)	
  -­‐>	
  Int	
  =	
  {	
  x,	
  y	
  	
  -­‐>	
  x	
  +	
  y	
  }
val	
  resultado	
  =	
  suma(2,3)
Utilizar	
  el	
  “it”	
  para	
  obtener	
  el	
  tipo	
  inferido	
  
val	
  triple:	
  (Int)	
  -­‐>	
  Int	
  {	
  it	
  *	
  3}
val	
  resultado	
  =	
  (3)
Higher Order Functions
Funciones	
  que	
  reciben	
  otras	
  funciones	
  como	
  parámetros	
  
fun	
  <T,	
  R>	
  List<T>.map(transform:	
  (T)	
  -­‐>	
  R):	
  List<R>	
  {
val	
  result	
  =	
  arrayListOf<R>()
for	
  (item	
  in	
  this)
result.add(transform(item))
return	
  result
}
Uso
val	
  doubled	
  =	
  list.map	
  {	
  it	
  -­‐>	
  it	
  *	
  2	
  }
Higher Order Functions
Funciones	
  que	
  reciben	
  otras	
  funciones	
  como	
  parámetros	
  
fun	
  SharedPreferences.edit	
  (func:	
  SharedPreferences.Editor.()	
  -­‐>	
  Unit)	
  {
val	
  editor	
  =	
  edit()
editor.func()
editor.apply()
}
Uso
preferences.edit	
  {	
  putString	
  (“MobileDay”,	
  “Kotlin”)}
Kotlin Android Extensions
Activity.findViewById()	
  en	
  todas	
  partes	
  
Soluciones
ButterKnife	
  
http://jakewharton.github.io/butterknife/
RoboGuice
https://github.com/roboguice/roboguice/wiki
Kotlin Android Extensions
apply plugin: 'kotlin-android-extensions'
//	
  Using	
  R.layout.activity_main	
  from	
  the	
  main	
  source	
  set
import	
  kotlinx.android.synthetic.main.activity_main.*
public	
  class	
  MyActivity	
  :	
  Activity()	
  {
override	
  fun	
  onCreate(savedInstanceState:	
  Bundle?)	
  {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView.setText("Hello,	
  world!")	
  //	
  Instead	
  of	
  findView(R.id.textView)	
  as	
  TextView
}
}
Contacto
Twitter:	
  0xleonel
Github:	
  github.com/leomindez	
  
Linkedin:	
  Leonel	
  Mendez	
  Jimenez	
  
Comunidades
Android	
  Channel:	
  https://androidevs.herokuapp.com
Kotlin	
  Channel:	
  http://kotlinslackin.herokuapp.com
¿Preguntas?

Más contenido relacionado

Destacado

Estadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julio
Estadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julioEstadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julio
Estadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de juliofmcharrera
 
Listado de habilitaciones y reprobados año 2012
Listado de habilitaciones y reprobados año 2012Listado de habilitaciones y reprobados año 2012
Listado de habilitaciones y reprobados año 2012Mercedes Perlaza Calle
 
Manual gps tracker 7, multilaser gp015
Manual gps tracker 7, multilaser  gp015Manual gps tracker 7, multilaser  gp015
Manual gps tracker 7, multilaser gp015Jose llIMA
 
Value Team Cloud Computing
Value Team Cloud ComputingValue Team Cloud Computing
Value Team Cloud ComputingGianpiero Meazza
 
Dukane 122 w document camera
Dukane 122 w document cameraDukane 122 w document camera
Dukane 122 w document cameraSchoolVision Inc.
 
Overpopulation and the effect on animals
Overpopulation and the effect on animals Overpopulation and the effect on animals
Overpopulation and the effect on animals caremev
 
Ayurveda and Yoga Education, treatment India
Ayurveda and Yoga Education, treatment IndiaAyurveda and Yoga Education, treatment India
Ayurveda and Yoga Education, treatment IndiaPunarnava Ayurveda
 
Landis+Gyr EMEA Pathway Magazine Issue 1: Smart Grids
Landis+Gyr EMEA Pathway Magazine Issue 1: Smart GridsLandis+Gyr EMEA Pathway Magazine Issue 1: Smart Grids
Landis+Gyr EMEA Pathway Magazine Issue 1: Smart GridsLandis+Gyr
 
Juwelier Nusstein - Erste Ausgabe unseres Hausmagazins
Juwelier Nusstein - Erste Ausgabe unseres HausmagazinsJuwelier Nusstein - Erste Ausgabe unseres Hausmagazins
Juwelier Nusstein - Erste Ausgabe unseres HausmagazinsJellyfish-media
 
Lentes técnicas Julbo - La perfección en cualquier circunstancia
Lentes técnicas Julbo - La perfección en cualquier circunstanciaLentes técnicas Julbo - La perfección en cualquier circunstancia
Lentes técnicas Julbo - La perfección en cualquier circunstanciajulbo-eyewear
 
Libro de servicios - Salón Los Alebrijes
Libro de servicios  -  Salón Los AlebrijesLibro de servicios  -  Salón Los Alebrijes
Libro de servicios - Salón Los AlebrijesPavelji_92
 
Proyecto multidisciplinar "Canciones al óleo"
Proyecto multidisciplinar "Canciones al óleo"Proyecto multidisciplinar "Canciones al óleo"
Proyecto multidisciplinar "Canciones al óleo"Heriberto Cruz Díaz
 
Biology and biomechanics of extraoral appliances /certified fixed orthodontic...
Biology and biomechanics of extraoral appliances /certified fixed orthodontic...Biology and biomechanics of extraoral appliances /certified fixed orthodontic...
Biology and biomechanics of extraoral appliances /certified fixed orthodontic...Indian dental academy
 
Curso de reposteria para niños
Curso de reposteria para niñosCurso de reposteria para niños
Curso de reposteria para niñosDulce Placer
 
Mujer – lactancia y trabajo. Dra. Evelyn Niño
Mujer – lactancia y trabajo. Dra. Evelyn NiñoMujer – lactancia y trabajo. Dra. Evelyn Niño
Mujer – lactancia y trabajo. Dra. Evelyn NiñoSOSTelemedicina UCV
 
Unfranchise Owner Business Presentation
Unfranchise Owner Business PresentationUnfranchise Owner Business Presentation
Unfranchise Owner Business PresentationLester Faison
 

Destacado (20)

Estadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julio
Estadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julioEstadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julio
Estadisticas oficiales Campeonato Infantil y Juvenil 2014 al 30 de julio
 
Listado de habilitaciones y reprobados año 2012
Listado de habilitaciones y reprobados año 2012Listado de habilitaciones y reprobados año 2012
Listado de habilitaciones y reprobados año 2012
 
Manual gps tracker 7, multilaser gp015
Manual gps tracker 7, multilaser  gp015Manual gps tracker 7, multilaser  gp015
Manual gps tracker 7, multilaser gp015
 
Value Team Cloud Computing
Value Team Cloud ComputingValue Team Cloud Computing
Value Team Cloud Computing
 
Dukane 122 w document camera
Dukane 122 w document cameraDukane 122 w document camera
Dukane 122 w document camera
 
Overpopulation and the effect on animals
Overpopulation and the effect on animals Overpopulation and the effect on animals
Overpopulation and the effect on animals
 
Ayurveda and Yoga Education, treatment India
Ayurveda and Yoga Education, treatment IndiaAyurveda and Yoga Education, treatment India
Ayurveda and Yoga Education, treatment India
 
Landis+Gyr EMEA Pathway Magazine Issue 1: Smart Grids
Landis+Gyr EMEA Pathway Magazine Issue 1: Smart GridsLandis+Gyr EMEA Pathway Magazine Issue 1: Smart Grids
Landis+Gyr EMEA Pathway Magazine Issue 1: Smart Grids
 
Clase virtual de mitologia
Clase virtual de mitologiaClase virtual de mitologia
Clase virtual de mitologia
 
Luxury switch
Luxury switchLuxury switch
Luxury switch
 
Juwelier Nusstein - Erste Ausgabe unseres Hausmagazins
Juwelier Nusstein - Erste Ausgabe unseres HausmagazinsJuwelier Nusstein - Erste Ausgabe unseres Hausmagazins
Juwelier Nusstein - Erste Ausgabe unseres Hausmagazins
 
Lentes técnicas Julbo - La perfección en cualquier circunstancia
Lentes técnicas Julbo - La perfección en cualquier circunstanciaLentes técnicas Julbo - La perfección en cualquier circunstancia
Lentes técnicas Julbo - La perfección en cualquier circunstancia
 
Libro de servicios - Salón Los Alebrijes
Libro de servicios  -  Salón Los AlebrijesLibro de servicios  -  Salón Los Alebrijes
Libro de servicios - Salón Los Alebrijes
 
Proyecto multidisciplinar "Canciones al óleo"
Proyecto multidisciplinar "Canciones al óleo"Proyecto multidisciplinar "Canciones al óleo"
Proyecto multidisciplinar "Canciones al óleo"
 
Proyecto emprendimiento11º
Proyecto emprendimiento11ºProyecto emprendimiento11º
Proyecto emprendimiento11º
 
Balonmano trabajo
Balonmano trabajoBalonmano trabajo
Balonmano trabajo
 
Biology and biomechanics of extraoral appliances /certified fixed orthodontic...
Biology and biomechanics of extraoral appliances /certified fixed orthodontic...Biology and biomechanics of extraoral appliances /certified fixed orthodontic...
Biology and biomechanics of extraoral appliances /certified fixed orthodontic...
 
Curso de reposteria para niños
Curso de reposteria para niñosCurso de reposteria para niños
Curso de reposteria para niños
 
Mujer – lactancia y trabajo. Dra. Evelyn Niño
Mujer – lactancia y trabajo. Dra. Evelyn NiñoMujer – lactancia y trabajo. Dra. Evelyn Niño
Mujer – lactancia y trabajo. Dra. Evelyn Niño
 
Unfranchise Owner Business Presentation
Unfranchise Owner Business PresentationUnfranchise Owner Business Presentation
Unfranchise Owner Business Presentation
 

Similar a Mobile Day - Kotlin

Android Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityAndroid Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityFe
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en JavaManuel Antonio
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas característicasFernando Petrola
 
Presentacion Barcamp Guayaquil 2009
Presentacion Barcamp Guayaquil 2009Presentacion Barcamp Guayaquil 2009
Presentacion Barcamp Guayaquil 2009Eduardo Raad
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"Alberto Ruibal
 
Curso Swift
Curso SwiftCurso Swift
Curso SwiftPlatzi
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018 Codemotion
 
Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)videos
 
Java 8 introducción a expresiones lambdas y api stream
Java 8  introducción a expresiones lambdas y api streamJava 8  introducción a expresiones lambdas y api stream
Java 8 introducción a expresiones lambdas y api streamEudris Cabrera
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
 

Similar a Mobile Day - Kotlin (20)

Android Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityAndroid Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivity
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 
Java 8
Java 8Java 8
Java 8
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Presentacion Barcamp Guayaquil 2009
Presentacion Barcamp Guayaquil 2009Presentacion Barcamp Guayaquil 2009
Presentacion Barcamp Guayaquil 2009
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
 
Java
JavaJava
Java
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Java
JavaJava
Java
 
Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)
 
React
ReactReact
React
 
TUTORIAL JAVA
TUTORIAL JAVATUTORIAL JAVA
TUTORIAL JAVA
 
16.10.24 robots jus intro ros s4-5
16.10.24 robots jus intro ros s4-516.10.24 robots jus intro ros s4-5
16.10.24 robots jus intro ros s4-5
 
Java 8 introducción a expresiones lambdas y api stream
Java 8  introducción a expresiones lambdas y api streamJava 8  introducción a expresiones lambdas y api stream
Java 8 introducción a expresiones lambdas y api stream
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones Lambdas
 
JAVA.PPT
JAVA.PPTJAVA.PPT
JAVA.PPT
 
JAVA (1).PPT
JAVA (1).PPTJAVA (1).PPT
JAVA (1).PPT
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Mobile Day - Kotlin

  • 1. http://sg.com.mx/mobileday #mobiledaysg KOTLIN, EL NUEVO LENGUAJE PARAHABLARANDROID Leonel  Méndez  Jiménez   Twitter:  @0xleonel
  • 2. Android + Java • Java  6.5   • Restricciones  de  Java   • No  streams   • No  lambdas   • Nulabilidad • Sintaxis • Android  Design  API   • Nulabilidad  en  cualquier  parte  
  • 3. Opciones • Groovy  Plugin   • https://github.com/groovy/groovy-­‐android-­‐gradle-­‐plugin • Sintaxis   • Lambdas   • Scala  Plugin • Android  Studio  Plugin   • Sintaxis • SBT  Build  system   • Guava   • Optional  Type   • Utils  
  • 6.
  • 7. ¿Kotlin? • Jetbrains   • Lenguaje  de  código  abierto   • Interoperable  (Java  6  bytecode) • Tamaño  de  runtime  muy  pequeño  (900  kb)     • Tipado  estático   • Kotlin  1.0  
  • 8. Null Safety var  b:  String  =  “Mobile  Day” b  =  null  //  Compilation  Error   var  b:  String?  =  “Mobile  Day” b  =  null  //  Ok var  b:  String?  =  “Mobile  Day” b  =  null  //  Ok val  stringLength  =  b?.length
  • 9. Extensions Java static  void  createSnackBar(String  title,  String  message,  int  duration)  … UIUtils.createSnackBar(“title”,”message”,SnackBar.short) Kotlin   fun  Fragment.createSnackBar(title:String  =  “”,message:String  =  ””)... createSnackBart()...
  • 10. Function Literal aka Lambda val  suma:  (Int,  Int)  -­‐>  Int  =  {  x,  y    -­‐>  x  +  y  } val  resultado  =  suma(2,3) Utilizar  el  “it”  para  obtener  el  tipo  inferido   val  triple:  (Int)  -­‐>  Int  {  it  *  3} val  resultado  =  (3)
  • 11. Higher Order Functions Funciones  que  reciben  otras  funciones  como  parámetros   fun  <T,  R>  List<T>.map(transform:  (T)  -­‐>  R):  List<R>  { val  result  =  arrayListOf<R>() for  (item  in  this) result.add(transform(item)) return  result } Uso val  doubled  =  list.map  {  it  -­‐>  it  *  2  }
  • 12. Higher Order Functions Funciones  que  reciben  otras  funciones  como  parámetros   fun  SharedPreferences.edit  (func:  SharedPreferences.Editor.()  -­‐>  Unit)  { val  editor  =  edit() editor.func() editor.apply() } Uso preferences.edit  {  putString  (“MobileDay”,  “Kotlin”)}
  • 13. Kotlin Android Extensions Activity.findViewById()  en  todas  partes   Soluciones ButterKnife   http://jakewharton.github.io/butterknife/ RoboGuice https://github.com/roboguice/roboguice/wiki
  • 14. Kotlin Android Extensions apply plugin: 'kotlin-android-extensions' //  Using  R.layout.activity_main  from  the  main  source  set import  kotlinx.android.synthetic.main.activity_main.* public  class  MyActivity  :  Activity()  { override  fun  onCreate(savedInstanceState:  Bundle?)  { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textView.setText("Hello,  world!")  //  Instead  of  findView(R.id.textView)  as  TextView } }
  • 15. Contacto Twitter:  0xleonel Github:  github.com/leomindez   Linkedin:  Leonel  Mendez  Jimenez   Comunidades Android  Channel:  https://androidevs.herokuapp.com Kotlin  Channel:  http://kotlinslackin.herokuapp.com