O que é Kotlin Multiplatform e para que serve?
\n\nKotlin Multiplatform (KMP) não é uma biblioteca no sentido clássico, mas uma tecnologia (SDK e conjunto de ferramentas) da JetBrains, que permite escrever código comum em Kotlin e compilá-lo para várias plataformas: JVM (Android, servidores), JavaScript (navegadores web, Node.js), Native (iOS, macOS, Windows, Linux, watchOS, tvOS).
\n\nPara que serve? No desenvolvimento moderno, muitas vezes é necessário criar aplicativos para diferentes plataformas. Tradicionalmente, isso significava escrever código em diferentes linguagens (Swift para iOS, Java/Kotlin para Android, JavaScript para web). O Kotlin Multiplatform resolve esse problema, permitindo que a lógica de negócios (requisições de rede, trabalho com banco de dados, validação de dados, serialização) seja colocada em um módulo comum, usado em todas as plataformas. O código específico da plataforma (UI, trabalho com câmera, sensores) permanece nativo, mas seu volume é significativamente reduzido.
\n\nPrincipais vantagens:
\n- \n
- Redução do tempo de desenvolvimento: Escreva a lógica uma vez e use em todos os lugares. \n
- Base de código unificada: Menos bugs, mais fácil de manter e refatorar. \n
- Desempenho nativo: Ao contrário do React Native ou Flutter, o KMP compila para código nativo, não funciona através de uma camada intermediária. \n
- Flexibilidade: Você pode começar pequeno — extrair apenas uma biblioteca (por exemplo, para requisições de rede) e expandir gradualmente o código comum. \n
- Uso de código existente: É possível conectar bibliotecas nativas através do mecanismo
expect/actual. \n
Kotlin Multiplatform é ideal para: aplicativos móveis (Android + iOS), aplicativos de servidor (Ktor + KMP), aplicativos web (Kotlin/JS), aplicativos desktop (Compose Multiplatform) e bibliotecas que precisam funcionar em todos os lugares.
\n\nInstalação e configuração
\n\nKotlin Multiplatform não é instalado via pip ou npm. É uma ferramenta de build configurada através do sistema de build Gradle. Abaixo está o processo padrão para criar um projeto com KMP.
1. Instalação do IntelliJ IDEA ou Android Studio
\nRecomenda-se usar IntelliJ IDEA Ultimate (a Community Edition também funciona, mas com limitações) ou Android Studio com o plugin Kotlin Multiplatform.
\n\n2. Criação do projeto
\nA maneira mais simples é usar o Kotlin Multiplatform Wizard (ferramenta online da JetBrains): https://kmp.jetbrains.com/. Selecione as plataformas desejadas (Android, iOS, Desktop, Web) e baixe o template pronto.
\n\n3. Estrutura do projeto (Gradle)
\nO principal arquivo de configuração é o build.gradle.kts (raiz e módulos). Plugins principais:
// build.gradle.kts raiz\nplugins {\n kotlin("multiplatform") version "1.9.22" apply false\n kotlin("plugin.serialization") version "1.9.22" apply false\n id("com.android.application") version "8.2.0" apply false\n id("org.jetbrains.compose") version "1.5.11" apply false\n}\n\n// Módulo shared (código comum)\nplugins {\n kotlin("multiplatform")\n kotlin("plugin.serialization")\n id("com.android.library")\n}\n\nkotlin {\n androidTarget {\n compilations.all {\n kotlinOptions {\n jvmTarget = "1.8"\n }\n }\n }\n\n listOf(\n iosX64(),\n iosArm64(),\n iosSimulatorArm64()\n ).forEach {\n it.binaries.framework {\n baseName = "shared"\n isStatic = true\n }\n }\n\n sourceSets {\n val commonMain by getting {\n dependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\ Também na biblioteca
Internacionalização (i18n) em TypeScript: biblioteca i18next
Effect-ts para TypeScript: guia completo com exemplos
GraphQL em C++: biblioteca cppgraphqlgen para APIs modernas
Container de Injeção de Dependência para Go (Golang) — wire, dig, fx