Rodrigo Sicarelli
17 de junho de 2024
Kotlin Multiplataforma é um canivete suiço para devs nativos, entregando um ferramental de ponta que compila seu código Kotlin para inúmeras plataformas. Durante os últimos anos, a tecnologia teve um salto significante e chegamos em 2024 com inúmeras aplicações de grande porte utilizando o KMP em produção. Nessa palestra, Rodrigo explora o estado do KMP em 2024 e navega pelas peculiaridades, comunidade, recursos e visão do futuro!
Resumo da palestra
Este resumo é gerado automaticamente por inteligência artificial e pode conter imprecisões.
Key Takeaways
Kotlin Multiplataforma (KMP) permite escrever código uma vez e compartilhá-lo entre várias plataformas (Android, iOS, Web, Desktop, etc)
Existem diversos alvos suportados atualmente pelo KMP, incluindo Android, iOS, Linux, JavaScript, macOS, Windows, tvOS, Wear OS, etc
É possível compartilhar desde pequenas partes (constantes, utilitários) até a lógica de negócios completa e UI entre plataformas
Diversas empresas como Google, Netflix, McDonald’s, Forbes, Stone já utilizam KMP em produção
Desafios atuais incluem melhorias de interoperabilidade, desempenho do Compose Multiplataforma no iOS, tamanho do binário, acessibilidade e ferramentas de IDE
O Compose Multiplataforma é visto como fundamental para o sucesso do KMP, com melhorias constantes sendo realizadas
O suporte ao WebAssembly (Wasm) é promissor, resolvendo problemas de tamanho de binário para Web
Topics
Introdução ao KMP
Permite escrever código uma vez e compartilhar entre plataformas
Compila de forma nativa para cada plataforma através de diferentes backends (JVM, JS, Native, etc)
Visa manter uso de recursos da plataforma de forma natural e próxima ao nativo
Flexibilidade para compartilhar tudo ou pouco entre plataformas
Alvos suportados
Android (device e nativo)
iOS (device, simulador, 32 e 64 bits)
Linux (várias distribuições)
JavaScript
macOS
Windows
tvOS (device e simulador)
Wear OS
Casos de uso comuns
Domínio (entidades, DTOs, respostas de servidor)
Infraestrutura (acesso à rede, sensores, login)
Experimentação e analytics
Lógica de negócios
Utilitários
Testes unitários
Camada de apresentação (ViewModels)
UI com Compose Multiplataforma
Ferramentas e bibliotecas
IDEs: Android Studio, IntelliJ, Xcode, Fleet
Sistema de build: Gradle, Amper (experimental)
Tooling: cinterop, KSP, KDoc, logging, networking, persistência, recursos de dispositivo, analytics, testes, criptografia, arquivos, etc
UI: Jetpack Compose, SwiftUI, Flutter, React Native
AndroidX: DTStore, Room, Navigation, ViewModel, Collections, Compose
Aplicações em produção
Google Workspace, Google Docs
Netflix
McDonald’s
Forbes
Stone
Globo
E muitas outras
Desafios atuais
Interoperabilidade com código nativo limitada
Compose Multiplataforma em beta/alpha para iOS e Wear OS
Melhorias de desempenho, acessibilidade e tamanho de binário necessárias
Experiência de desenvolvedor (curva de aprendizado, adoção, contratação)
Documentação limitada em alguns casos
Estrutura de repositórios
Comunidade e suporte
YouTrack JetBrains
Kotlin Slack
Comunidades (Discord KotlinBR)
ChatGPT é grande aliado
Visão futura
Melhorias no gerenciamento de memória do Kotlin Native
Suporte ao Swift Package Manager
Melhorias no Kotlin/Native e Wasm
Novas bibliotecas e atualizações (DateTime, etc)
Melhor integração de ferramentas
Foco em melhorias para Wasm e Web
Next Steps
Estudar e praticar com projetos de teste
Migrar gradualmente dependências para soluções multiplataforma em projetos existentes
Acompanhar atualizações da comunidade e JetBrains
Explorar casos de uso relevantes para adoção do KMP
Linha do tempo
A reunião começou com apresentações e uma breve visão geral do Kotlin Multiplataforma (KMP) - o problema que ele resolve ao permitir que o código seja compartilhado entre várias plataformas, e os principais benefícios que ele oferece, como consistência, testes reduzidos e acesso nativo às APIs da plataforma.
Compilação e Arquitetura do Kotlin @ 11:00
Rodrigo explicou como o Kotlin é dividido em frontend e backend, com o frontend lidando com parsing e análise, e o backend compilando a Representação Intermediária (IR) para a plataforma alvo de uma maneira totalmente nativa. Ele percorreu os diferentes backends do Kotlin que visam JVM, JS, Nativo e AoT.
Capacidades Atuais do KMP @ 18:45
Rodrigo abordou a ampla gama de plataformas e alvos atualmente suportados pelo KMP, incluindo Android, iOS, desktop, web e mais. Ele também destacou os tipos de código que as equipes estão compartilhando comumente entre plataformas, como modelos de domínio, rede, análises e lógica de apresentação de UI.
Ferramentas e Bibliotecas do KMP @ 23:54
Rodrigo forneceu uma visão abrangente do rico ecossistema de ferramentas, sistemas de build e bibliotecas open-source disponíveis para o desenvolvimento com KMP, cobrindo áreas como rede, persistência, testes e UI.
Adoção e Casos de Uso em Produção do KMP @ 42:46
Rodrigo compartilhou exemplos de grandes empresas como Google, Netflix e Forbes que estão usando Kotlin Multiplataforma em produção, demonstrando sua maturidade e viabilidade no mundo real.
Desafios Atuais e Roteiro Futuro @ 44:30
Rodrigo discutiu alguns dos desafios atuais com o KMP, como limitações na interoperabilidade e suporte ao IDE, bem como o trabalho em andamento e os planos futuros para resolver essas questões. Ele enfatizou o forte compromisso e investimento da JetBrains e do Google no avanço do ecossistema KMP.
Recapitulação e Recursos da Comunidade @ 1:20:17
Para encerrar, Rodrigo incentivou o público a começar a experimentar com KMP, mesmo de forma gradual, substituindo dependências específicas da plataforma, e se ofereceu como um recurso para orientação e suporte adicional através de vários canais da comunidade.