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

iBeer #17 - Android: Do Java para Kotlin

  • 1.
  • 2.
    Java Nasceu década de90. 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 sourceiniciado 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 é umalinguagem orientada a objetos e também funcional?
  • 6.
    Kotlin consegue secomunicar com classes e métodos Java?
  • 7.
    Kotlin é maisconciso. 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 tarefasde 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 é umalinguagem 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 doKotlin 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");
  • 20.
  • 21.