SlideShare a Scribd company logo
1 of 34
Download to read offline
Desenvolvendo
aplicativos Android
com Kotlin
por Adriel Café
Adriel Café
Mestre em Ciência da Computação @ CIn-UFPE
Desenvolvedor Android @ XARX
Revisor de Projetos @ Udacity
http://adriel.cafe
http://github.com/adrielcafe
http://linkedin.com/in/adrielcafe
0. Java
• Evolução lenta
• Verbosa
• Não possui propriedades, inicialização “lazy” e delegates
• NullPointerException
• Requer o uso de ;
4/34
1. Kotlin
• Conciso
– Seja mais produtivo ao escrevermenos e fazer mais
• Seguro
– Adeus NullPointerException!
• Versátil
– 100% interoperávelcom Java
– Compatível com Android e JavaScript
• Funcionalidades modernas
– Null Safety
– Data Classes
– Extension Functions e Inline Functions
– Delegation
– Default Arguments e Named Arguments
– Coroutines
– Lambdas e High Order Functions
– ...
• Open source (mantida pela JetBrains)
– https://github.com/JetBrains/kotlin
5/34
1. Kotlin: Cases
6/34
2. Básico: Configurando o Ambiente
1. Instalar o Android Studio
– https://developer.android.com/studio/
2. Instalar o plugin do Kotlin
– Configurações > Plugins > Instalar plugin da JetBrains > Kotlin
3. Modificar build.gradle
4. Modificar app/build.gradle
7/34
2. Básico: Olá, mundo!
Java
Kotlin
8/34
2. Básico: Tipos
• String
• Char
• Boolean
• Números
– Double
– Float
– Long
– Int
– Short
– Byte
9/34
2. Básico: Variáveis e Constantes
• Variável
• Constante
10/34
2. Básico: Strings
• String Literals
Java Kotlin
• String Templates / String Interpolation
Java Kotlin
11/34
3. Controle de Fluxo: If
12/34
3. Controle de Fluxo: For
13/34
3. Controle de Fluxo: While
14/34
3. Controle de Fluxo: When
Java
15/34
Kotlin
4. Sistema de Tipos: Null Safety
• Tipo Non-Null
• Tipo Nullable
16/34
4. Sistema de Tipos: Operators
• Operador Safe Call
• Operador Elvis
• Operador Not-null
17/34
4. Sistema de Tipos: Cast
• Safe casts
• Smart casts
Java Kotlin
18/34
5. Funções
• Básico
• Função de expressão única
• Retorno vazio (Unit)
19/34
5. Funções: Argumentos
Java
20/34
Kotlin
5. Funções: Extensions Functions
Java
Kotlin
21/34
5. Funções: Lambdas
Java
Kotlin
22/34
5. Funções: High Order Functions
Java
23/34
Kotlin
6. Classes
24/34
6. Classes: Herança
• Básico
• Constructor e override
25/34
6. Classes: Data Class
Java
26/34
Kotlin
7. Interfaces
27/34
8. Coleções: List
Java
28/34
Kotlin
8. Coleções: Map
Java
Kotlin
29/34
Bônus 1: Kotlin Android Extensions
https://kotlinlang.org/docs/tutorials/android-plugin.html
XML
Java
30/34
Kotlin
Bônus 2: Anko
https://github.com/Kotlin/anko
XML + Java
31/34
Kotlin
Resultado
Bônus 3: RxKotlin
https://github.com/ReactiveX/RxKotlin
32/34
Links Úteis
1. https://try.kotlinlang.org
2. https://blog.jetbrains.com/kotlin
3. https://twitter.com/kotlin
4. https://kotlin.link
5. http://kotlinslackin.herokuapp.com
6. https://github.com/HugoMatilla/KotlinCheatSheet
7. https://github.com/dbacinski/Design-Patterns-In-Kotlin
33/34
OBRIGADO!

More Related Content

Similar to Desenvolvendo aplicativos Android com Kotlin

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
Testing Mobile - Calabash
Testing Mobile  - CalabashTesting Mobile  - Calabash
Testing Mobile - CalabashJoyce Bastos
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)Daniel Semedo
 
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Rafael Winter
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
TDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com RobolectricTDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com RobolectricStefan Teixeira
 
TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric Lucas Albuquerque
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"Stefan Horochovec
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman | Seminário
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman  | Seminário ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman  | Seminário
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman | Seminário Osmar Petry
 
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile ServicesConstruindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile ServicesWilliam S. Rodriguez
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIsElton Minetto
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET ReflectorNuno Gomes
 

Similar to Desenvolvendo aplicativos Android com Kotlin (20)

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Titanium appacelerator
Titanium appaceleratorTitanium appacelerator
Titanium appacelerator
 
Testing Mobile - Calabash
Testing Mobile  - CalabashTesting Mobile  - Calabash
Testing Mobile - Calabash
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
 
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
 
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
RAD Studio 10.2 Tokyo
RAD Studio 10.2 TokyoRAD Studio 10.2 Tokyo
RAD Studio 10.2 Tokyo
 
TDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com RobolectricTDC 2015 Floripa - Testes de Unidade com Robolectric
TDC 2015 Floripa - Testes de Unidade com Robolectric
 
TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric TDC 2015 - Testes de Unidade com Robolectric
TDC 2015 - Testes de Unidade com Robolectric
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman | Seminário
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman  | Seminário ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman  | Seminário
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman | Seminário
 
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile ServicesConstruindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIs
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
 

More from Adriel Café

Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...Adriel Café
 
Desenvolvendo para Android com componentes Open Source
Desenvolvendo para Android com componentes Open SourceDesenvolvendo para Android com componentes Open Source
Desenvolvendo para Android com componentes Open SourceAdriel Café
 
Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014Adriel Café
 
Ontology integration - Heterogeneity, Techniques and more
Ontology integration - Heterogeneity, Techniques and moreOntology integration - Heterogeneity, Techniques and more
Ontology integration - Heterogeneity, Techniques and moreAdriel Café
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeAdriel Café
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-PlatformAdriel Café
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...Adriel Café
 
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"Adriel Café
 

More from Adriel Café (8)

Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
 
Desenvolvendo para Android com componentes Open Source
Desenvolvendo para Android com componentes Open SourceDesenvolvendo para Android com componentes Open Source
Desenvolvendo para Android com componentes Open Source
 
Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014Gryphon Framework - Preliminary Results Feb-2014
Gryphon Framework - Preliminary Results Feb-2014
 
Ontology integration - Heterogeneity, Techniques and more
Ontology integration - Heterogeneity, Techniques and moreOntology integration - Heterogeneity, Techniques and more
Ontology integration - Heterogeneity, Techniques and more
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & Practice
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-Platform
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
 
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
 

Desenvolvendo aplicativos Android com Kotlin