SlideShare uma empresa Scribd logo
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 - 2007
Rafael Benevides
 
Introdução ao LINQ
Introdução ao LINQIntrodução ao LINQ
Introdução ao LINQ
Fábio Augusto Pandolfo
 
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
Matheus Donizete
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
Gregorio 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
 
Kotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSLKotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSL
Lucas Antonio Ramos Sartori
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Alisson 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
 
Aula1
Aula1Aula1
Aula1
mentrixmax
 
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 Crouton
Ricardo 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
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
Christiano Anderson
 
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
Cedemir Pereira
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
Tony Alexander Hild
 
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
Lucas Caton
 
Exchange Web Services API - Introducao
Exchange Web Services API - IntroducaoExchange Web Services API - Introducao
Exchange Web Services API - Introducao
Comunidade 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 2009
Ramon Durães
 
Comecando tensorflow
Comecando tensorflowComecando tensorflow
Comecando tensorflow
Sandro Moreira
 
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
Amazon 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

iBeer #18 - Material Design
iBeer #18 - Material DesigniBeer #18 - Material Design
iBeer #18 - Material Design
DCX Resource IT
 
iBeer #16 - Engenharia de software
iBeer #16 - Engenharia de softwareiBeer #16 - Engenharia de software
iBeer #16 - Engenharia de software
DCX Resource IT
 
iBeer #11 - Acessibilidade
iBeer #11 - AcessibilidadeiBeer #11 - Acessibilidade
iBeer #11 - Acessibilidade
DCX Resource IT
 
iBeer #8 - Salesforce
iBeer #8 - SalesforceiBeer #8 - Salesforce
iBeer #8 - Salesforce
DCX Resource IT
 
iBeer #7 - RPA
iBeer #7 - RPAiBeer #7 - RPA
iBeer #7 - RPA
DCX Resource IT
 
iBeer #6 - IoT
iBeer #6 - IoTiBeer #6 - IoT
iBeer #6 - IoT
DCX Resource IT
 
iBeer #2 - Xamarin
iBeer #2 - XamariniBeer #2 - Xamarin
iBeer #2 - Xamarin
DCX Resource IT
 
iBeer #4 - Clean code
iBeer #4 - Clean codeiBeer #4 - Clean code
iBeer #4 - Clean code
DCX Resource IT
 
iBeer #15 - Docker
iBeer #15 - DockeriBeer #15 - Docker
iBeer #15 - Docker
DCX Resource IT
 
iBeer #12 - Design thinking
iBeer #12 - Design thinkingiBeer #12 - Design thinking
iBeer #12 - Design thinking
DCX Resource IT
 
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 é?
DCX Resource IT
 
iBeer #9 - IoT - Hands on
iBeer #9 - IoT - Hands oniBeer #9 - IoT - Hands on
iBeer #9 - IoT - Hands on
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

Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (7)

Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

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");