Kotlin é uma linguagem de programação multiplataforma que pode ser usada no Android, JVM, JavaScript e nativamente. Ela oferece características como tipagem estática, orientação a objetos e funcionalidade. Kotlin pode ser usada para desenvolver aplicativos móveis, servidores e aplicativos da web.
3. Kotlin
● Open Source, criada em 2010 pela JetBrains
● Estaticamente tipada, segura e programática
● Design inspirado em linguagens como Java,
Scala, C# e Groovy
● Orientada a Objetos, com características
Funcionais
3
9. Kotlin para Android
● Compatibilidade - Java 6
● Performance
● Interoperabilidade
● Footprint: standard library e runtime adiciona apenas +/- 100Kb ao APK
● Tempo de Compilação
● Curva de Aprendizado
9
13. Kotlin para JavaScript
● Atualmente (1.2) ECMAScript 5.1 - roadmap ECMAScript 2015
● Tamanho otimizado - DCE (Dead Code Elimination)
● JavaScript legível
● Compatibilidade com JavaScript já existente
● Mesmas funcionalidades da Standard Library da JVM
13
14. Kotlin para JavaScript
● Atualmente (1.2) ECMAScript 5.1 - roadmap ECMAScript 2015
● Tamanho otimizado - DCE (Dead Code Elimination)
● JavaScript legível
● Compatibilidade com JavaScript já existente
● Mesmas funcionalidades da Standard Library da JVM
14
REACT &
NODEJS!
15. Kotlin para JavaScript
● É possível interoperar com qualquer outro módulo JavaScript
● Strong-typed APIs / TypeScript - https://github.com/kotlin/ts2kt
● Dynamic types para outros cenários
15
16. Kotlin Native
● Código nativo, sem VM
● Backend baseado em LLVM
● Interoperabilidade com código nativo - binding gerado a partir do .h
● Mac / iOS - interoperabilidade com Objective C
● Atualmente na versão 0.8 - em desenvolvimento
16
17. Kotlin Native
● Windows (x86_64)
● Linux (x86_64, arm32, MIPS e MIPS little endian)
● MacOS (x86_64)
● iOS (arm32, arm64, x64)
● Android (arm32 e arm64)
● STM32
● WebAssembly (wasm32)
17
24. Kotlin Multiplataforma - experimental
● A partir da versão 1.2
● JVM e JavaScript (Native previsto)
● Módulos que podem ser compilados para diferentes plataformas
● common, platform e regular
24
25. Módulo Multiplataforma
common: Contém código que não é específico a nenhuma plataforma, assim
como a declaração de APIs que necessitam de implementação específica
25
26. Módulo Multiplataforma
common: Contém código que não é específico a nenhuma plataforma, assim
como a declaração de APIs que necessitam de implementação específica
platform: Contém a implementação das APIs definidas em um módulo
common, além de outros códigos específicos da plataforma
26
27. Módulo Multiplataforma
common: Contém código que não é específico a nenhuma plataforma, assim
como a declaração de APIs que necessitam de implementação específica
platform: Contém a implementação das APIs definidas em um módulo
common, além de outros códigos específicos da plataforma
regular: Módulo comum que tem como target uma plataforma específica
27
34. Módulo Multiplataforma - Código comum
package com.thoughtworks.foo
expect class Foo(bar: String) {
fun frob()
}
fun main(args: Array<String>) {
Foo("Hello").frob()
}
34
35. Módulo Multiplataforma - Código JVM
package com.thoughtworks.foo
actual class Foo actual constructor(val bar: String) {
actual fun frob() {
println("Frobbing the $bar")
}
}
35