estou em Campinas Desenvolvedor há mais de 17 anos Já trabalhei com Delphi, Cobol, PHP, Java, Kotlin e um pouco de Swift Desde 2013, desenvolvo para Android E desde 2018, atuo na Dextra
`toString()` and `copy()` in a single line: */ data class Customer(val name: String, val email: String, val company: String) // Or filter a list using a lambda expression: val positiveNumbers = list.filter { it > 0 } // Want a singleton? Create an object: object ThisIsASingleton { val companyName: String = "JetBrains" }
The Billion Dollar Mistake */ var output: String output = null // Compilation error // Kotlin protects you from mistakenly operating on nullable types val name: String? = null // Nullable type println(name.length()) // Compilation error // And if you check a type is right, the compiler will auto-cast it for you fun calculateTotal(obj: Any) { if (obj is Invoice) obj.calculateTotal() }
• Vai matar desenvolvimento nativo • Solução completa para aplicações multiplataforma • Promessa de simplificar ou recriar camada de UI • Framework para gerar apps híbridos
O mesmo código é usado para gerar apps Android e iOS com a mesma camada de UI • React Native: solução ponta a ponta que usa React (JavaScript) • Xamarin Native: solução da Microsoft mais próxima do KMM, mas usa C#
rode o Android Studio • Código iOS ou testes no iOS - Mac • Android Studio 4.2 (ou superior) - Xcode 11.3 (para código iOS) • Plugin Kotlin 1.5.10 (ou compatível) • Plugin do Kotlin Multiplatform Mobile 0.2.7 (ou compatível)
módulo compartilhado e app Android Shared Module • Código comum para ambas as plataformas • Se divide em 3 partes: ◦ commomMain: código comum para ambas as plataformas, incluindo "expected" ◦ androidMain: código específico de Android, incluindo implementações "actual" ◦ iOSMain: código específico de iOS, incluindo implementações "actual" Android App • Projeto Android que usa o módulo compartilhado como dependência iOS App • Projeto iOS criado pelo Xcode num diretório separado DENTRO do root project
iOS • Módulo compartilhado • Código de exemplo • Pronto para rodar (Android e iOS) KMM Shared Module • Requer configuração no Xcode • Pode ser necessária a criação de um projeto para iOS
tem interesse que a solução seja adotada em escala • Pode ser uma opção interessante e rápida para lançamentos de apps multiplataforma • Curva muito suave para quem é desenvolvedor Android • Curva suave para quem usa swift • Tratamento de concorrência pode ser problemático Conclusão
to platform-specific APIs • Have you tried Kotlin Multiplatform? • Blog do Matheus Castiglioni | React Native é nativo? • Xamarin.Android - Xamarin • Download Android Studio and SDK tools • Xcode on the Mac App Store • JDK 14.0.2 GA Release • KMM documentation • JetBrains • Netflix Android and iOS Studio Apps — now powered by Kotlin Multiplatform