top of page

Estado do Kotlin Multiplataforma em 2024

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.

bottom of page