SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Android
Do Java para o Kotlin
Java
Nasceu década de 90. Utilizado para construir
serviços Back-end e Front-end web,
aplicações Android e também softwares
windows.
Kotlin.. por quê vale a pena estudar?
Kotlin
Projeto open source iniciado em 02/2010,
pode ser utilizado para construir serviços
Back-end, transpila para JavaScript, constrói
aplicações Android, Windows, Linux, MacOS,
iOS e WebAssembly.
Kotlin é uma linguagem orientada a objetos
e também funcional?
Kotlin consegue se comunicar com classes e
métodos Java?
Kotlin é mais conciso. Estimativas indicam um
corte de aproximadamente 40% no número
de linhas de código.
findViewById
• Java

TextView text = findViewById(R.id.textView);

text.setText(“texto”);

• Kotlin

textView.setText(“texto”)
Getters e Setters
• Java

TextView text = findViewById(R.id.textView);

text.setVisibility(View.VISIBLE);

int textVisibility = text.getVisibility();

• Kotlin

text.visibility = View.VISIBLE

val textVisibility = text.visibility
Coroutines
Coroutines executam tarefas de execução longa e intensas
suspendendo a execução em um determinado ponto sem
bloquear o encadeamento e, em seguida, retomando essa
função posteriormente, possivelmente em outro
encadeamento. Isso permite que você crie um código
assíncrono sem bloqueio que pareça síncrono e, portanto, mais
claro, conciso e legível. Coroutines também não criam pilhas,
então eles têm um uso de memória menor comparado com
threads, e eles abrem a porta para estilos adicionais de
programação assíncrona sem bloqueio, como async/await.
val deferred = (1..1_000_000).map { n ->
async {
delay(1000)
n
}
}
10 SEGUNDOS!!!
Injeção de funções
Podemos “injetar” um método como um parâmetro,
assim podemos deixar de lado alguns callbacks durante
o desenvolvimento
requestUser(this::userResponse)
private fun requestUser(userResponse: KFunction0<Unit>) {
userResponse(User(“Diego", "Figueiredo", 23))
}
private fun userResponse(user: User) {
//request completed
}
Kotlin é uma linguagem muito elegante e direta
ao ponto!
val users: List<User> = arrayListOf()
users.forEachIndexed { index, user ->
Log.d("Nosso index é:".plus(index.toString()),
"E meu nome é".plus(user.firstName))
}
List<User> users = new ArrayList<>();
for (int i = 0; i < users.size(); i++) {
Log.d("Nosso index é:" + String.valueOf(i),
"E meu nome é" + users.get(i).getFirstName());
}
Algumas particularidades do Kotlin podem
trazer belos benefícios para o nosso dia-a-dia
val userName: String = user?.let {
it.firstName
}
val userLastName: String = user.run {
this.lastName
}
val user: User = user.also {
it.age
}
user?.apply {
firstName = "Joao"
lastName = "Silva"
age = 32
}
with(this) {
onPause()
onStop()
onDestroy()
}
fun demo(value: Any) {
when (value) {
is Int -> print(value + 1)
is String -> print(value.length + 1)
is IntArray -> print(value.sum())
}
}
val valSerializable = intent.extras("serializable") as Serializable
User user = (Serializable) getIntent().getExtras(“serializable");
Flutter
Conclusão

Mais conteúdo relacionado

Semelhante a iBeer #17 - Android: Do Java para Kotlin

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Édipo Souza
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMAlisson Solitto
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Felipe Silveira
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonRicardo Longa
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2Cedemir Pereira
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Exchange Web Services API - Introducao
Exchange Web Services API - IntroducaoExchange Web Services API - Introducao
Exchange Web Services API - IntroducaoComunidade NetPonto
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkAmazon Web Services LATAM
 

Semelhante a iBeer #17 - Android: Do Java para Kotlin (20)

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Introdução ao LINQ
Introdução ao LINQIntrodução ao LINQ
Introdução ao LINQ
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
 
Kotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSLKotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSL
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Aula1
Aula1Aula1
Aula1
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Exchange Web Services API - Introducao
Exchange Web Services API - IntroducaoExchange Web Services API - Introducao
Exchange Web Services API - Introducao
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Comecando tensorflow
Comecando tensorflowComecando tensorflow
Comecando tensorflow
 
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
 

Mais de DCX Resource IT

Mais de DCX Resource IT (12)

iBeer #18 - Material Design
iBeer #18 - Material DesigniBeer #18 - Material Design
iBeer #18 - Material Design
 
iBeer #16 - Engenharia de software
iBeer #16 - Engenharia de softwareiBeer #16 - Engenharia de software
iBeer #16 - Engenharia de software
 
iBeer #11 - Acessibilidade
iBeer #11 - AcessibilidadeiBeer #11 - Acessibilidade
iBeer #11 - Acessibilidade
 
iBeer #8 - Salesforce
iBeer #8 - SalesforceiBeer #8 - Salesforce
iBeer #8 - Salesforce
 
iBeer #7 - RPA
iBeer #7 - RPAiBeer #7 - RPA
iBeer #7 - RPA
 
iBeer #6 - IoT
iBeer #6 - IoTiBeer #6 - IoT
iBeer #6 - IoT
 
iBeer #2 - Xamarin
iBeer #2 - XamariniBeer #2 - Xamarin
iBeer #2 - Xamarin
 
iBeer #4 - Clean code
iBeer #4 - Clean codeiBeer #4 - Clean code
iBeer #4 - Clean code
 
iBeer #15 - Docker
iBeer #15 - DockeriBeer #15 - Docker
iBeer #15 - Docker
 
iBeer #12 - Design thinking
iBeer #12 - Design thinkingiBeer #12 - Design thinking
iBeer #12 - Design thinking
 
iBeer #1 - UX. O que é? Pra quem é?
iBeer #1 - UX. O que é? Pra quem é?iBeer #1 - UX. O que é? Pra quem é?
iBeer #1 - UX. O que é? Pra quem é?
 
iBeer #9 - IoT - Hands on
iBeer #9 - IoT - Hands oniBeer #9 - IoT - Hands on
iBeer #9 - IoT - Hands on
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

iBeer #17 - Android: Do Java para Kotlin

  • 2. Java Nasceu década de 90. Utilizado para construir serviços Back-end e Front-end web, aplicações Android e também softwares windows.
  • 3. Kotlin.. por quê vale a pena estudar?
  • 4. Kotlin Projeto open source iniciado em 02/2010, pode ser utilizado para construir serviços Back-end, transpila para JavaScript, constrói aplicações Android, Windows, Linux, MacOS, iOS e WebAssembly.
  • 5. Kotlin é uma linguagem orientada a objetos e também funcional?
  • 6. Kotlin consegue se comunicar com classes e métodos Java?
  • 7. Kotlin é mais conciso. Estimativas indicam um corte de aproximadamente 40% no número de linhas de código.
  • 8. findViewById • Java TextView text = findViewById(R.id.textView); text.setText(“texto”); • Kotlin textView.setText(“texto”)
  • 9. Getters e Setters • Java TextView text = findViewById(R.id.textView); text.setVisibility(View.VISIBLE); int textVisibility = text.getVisibility(); • Kotlin text.visibility = View.VISIBLE val textVisibility = text.visibility
  • 10. Coroutines Coroutines executam tarefas de execução longa e intensas suspendendo a execução em um determinado ponto sem bloquear o encadeamento e, em seguida, retomando essa função posteriormente, possivelmente em outro encadeamento. Isso permite que você crie um código assíncrono sem bloqueio que pareça síncrono e, portanto, mais claro, conciso e legível. Coroutines também não criam pilhas, então eles têm um uso de memória menor comparado com threads, e eles abrem a porta para estilos adicionais de programação assíncrona sem bloqueio, como async/await.
  • 11. val deferred = (1..1_000_000).map { n -> async { delay(1000) n } } 10 SEGUNDOS!!!
  • 12. Injeção de funções Podemos “injetar” um método como um parâmetro, assim podemos deixar de lado alguns callbacks durante o desenvolvimento
  • 13. requestUser(this::userResponse) private fun requestUser(userResponse: KFunction0<Unit>) { userResponse(User(“Diego", "Figueiredo", 23)) } private fun userResponse(user: User) { //request completed }
  • 14. Kotlin é uma linguagem muito elegante e direta ao ponto!
  • 15. val users: List<User> = arrayListOf() users.forEachIndexed { index, user -> Log.d("Nosso index é:".plus(index.toString()), "E meu nome é".plus(user.firstName)) } List<User> users = new ArrayList<>(); for (int i = 0; i < users.size(); i++) { Log.d("Nosso index é:" + String.valueOf(i), "E meu nome é" + users.get(i).getFirstName()); }
  • 16. Algumas particularidades do Kotlin podem trazer belos benefícios para o nosso dia-a-dia
  • 17. val userName: String = user?.let { it.firstName } val userLastName: String = user.run { this.lastName } val user: User = user.also { it.age } user?.apply { firstName = "Joao" lastName = "Silva" age = 32 } with(this) { onPause() onStop() onDestroy() }
  • 18. fun demo(value: Any) { when (value) { is Int -> print(value + 1) is String -> print(value.length + 1) is IntArray -> print(value.sum()) } }
  • 19. val valSerializable = intent.extras("serializable") as Serializable User user = (Serializable) getIntent().getExtras(“serializable");