DEV Community

Rodrigo Sicarelli
Rodrigo Sicarelli

Posted on • Updated on

KMP 101: Entendendo e configurando o ambiente dev no Kotlin Multiplataforma

O desenvolvimento de software é um processo complexo que exige não apenas habilidade e criatividade, mas também um ambiente de desenvolvimento bem configurado.

No mundo do Kotlin Multiplataforma, esta necessidade é ainda mais evidente: configurar adequadamente o ambiente de desenvolvimento para KMP é crucial para garantir que devs possam aproveitar ao máximo as capacidades multiplataforma da linguagem.

Neste artigo, vamos explorar os componentes chave desse ambiente, desde a escolha do JDK até o uso de IDEs específicas, proporcionando um guia prático para configurar seu ambiente para projetos KMP.


Exigências das plataformas

Como uma ferramenta destinada ao desenvolvimento nativo, o KMP exige uma configuração de ambiente semelhante àquela usada em métodos de desenvolvimento convencionais.

Por exemplo, para a família Apple usando Kotlin/Native, é fundamental ter um Mac com Xcode instalado.

Por outro lado, para outras plataformas, como web, desktop ou Android, sistemas operacionais como Windows ou Linux são suficientes.

Dada a abrangência do KMP, escolhemos o Mac como o sistema operacional para este e os próximos artigos.

JDK como requisito mínimo no KMP

Um aspecto crucial no desenvolvimento multiplataforma com Kotlin, independentemente do sistema operacional, é a necessidade de um JDK (Java Development Kit). O JDK é vital em várias etapas do desenvolvimento Kotlin, como:

  • Compilação para Bytecode: Assim como o Java, o Kotlin é uma linguagem de alto nível compilada para bytecode. Esse processo de compilação, realizado pelo compilador Java incluído no JDK, é crucial para executar o código Kotlin em uma JVM (Java Virtual Machine), especialmente em plataformas baseadas em JVM, como backend e Android.

  • Interdependência de JDK e IDEs: Dada a integração profunda do Kotlin com ambientes de desenvolvimento como IntelliJ IDEA e Android Studio, o JDK é usado para realizar tarefas essenciais como a execução de tarefas do Gradle, uma ferramenta fundamental para a construção de projetos Kotlin Multiplataforma.

JDK e suas versões

Escolher a versão correta do JDK depende muito das dependências do seu projeto, desde o nível de infraestrutura, como a versão do Kotlin e Gradle, até bibliotecas open-source.

Por padrão, o compilador Kotlin/JVM produz bytecode compatível com Java 8. Contudo, para usufruir das otimizações presentes em versões mais recentes do Java, você pode definir explicitamente a versão alvo do Java, que varia de 9 a 21.

Optar pelas versões mais recentes do JDK oferece vantagens significativas, incluindo melhor compatibilidade com atualizações recentes de linguagens e frameworks, otimizações de desempenho, acesso a recursos mais atuais, reforço na segurança por correções de vulnerabilidades e alinhamento com as práticas mais recentes da comunidade de desenvolvimento.

Como dev KMP, é comum precisar de múltiplas versões do JDK no seu ambiente de desenvolvimento, desde a mais antiga JDK8/1.8 até versões mais recentes como JDK17, JDK20 ou JDK21.

Diversidade de distribuidores do JDK

A variedade de fornecedores de JDK para Mac é uma resposta às alterações nas políticas da Oracle e à procura por opções mais versáteis e adaptáveis a diferentes necessidades. Alguns exemplos incluem:

  • JetBrains Runtime: Uma versão do OpenJDK disponível para Windows, Mac OS X e Linux. Oferece recursos como redefinição aprimorada de classes, um framework para navegadores baseados em Chromium (JCEF) e melhorias na renderização de fontes e suporte a HiDPI.

  • AdoptOpenJDK: Fornece binários do OpenJDK com a JVM HotSpot ou OpenJ9, desenvolvida pela IBM. Segue a programação de atualizações do OpenJDK, oferecendo atualizações regulares de recursos e segurança.

  • Amazon Corretto: Distribuição certificada do OpenJDK pela Amazon, livre para uso em produção sob licença GPL + CE. Disponível para Linux, macOS e Windows, com atualizações trimestrais.

  • Zulu da Azul Systems: Build certificado do JDK para múltiplas plataformas, incluindo macOS. Gratuito para download e uso, com atualizações de segurança e correções de bugs disponíveis mediante assinatura do Zulu Enterprise.

🔗 Lista de distribuidores do JDK do SDKMAN!

Configurando seu Mac para o ambiente KMP

Vamos seguir a documentação oficial para configurar o ambiente, utilizando as tecnologias a seguir:

  • Homebrew: Será utilizado para facilitar a instalação de scripts.
  • JetBrains Toolbox: Uma ferramenta eficaz para gerenciar IDEs da JetBrains, desenvolvida em KMP.
  • kdoctor: Uma ferramenta da JetBrains que realiza diagnósticos do ambiente KMP.
  • Xcode: Fundamental para acessar ferramentas específicas da Apple.
  • SDKMAN!: Usado para gerenciar diferentes versões do JDK.

1. Instalando o kdoctor

Assumindo que você já tenha o Homebrew instalado, use o seguinte comando para instalar o kdoctor e executá-lo no terminal. Esse comando será útil durante o processo para verificar se a configuração foi bem-sucedida.

brew install kdoctor && kdoctor
Enter fullscreen mode Exit fullscreen mode

2. Instalando o JetBrains Toolbox

Instale o Toolbox com o comando abaixo.

brew install --cask jetbrains-toolbox
Enter fullscreen mode Exit fullscreen mode

3. Preparando o ambiente KMP com o JDK

O JDK é um requisito essencial para programar em KMP, e a configuração do JDK no Mac pode ser desafiadora, especialmente se você desejar ter múltiplas versões instaladas. O SDKMAN! simplifica este processo, oferecendo uma CLI que facilita a instalação e a troca entre diferentes versões e distribuidores de JDKs.

Passo Descrição
1 Instale o SDKMAN! seguindo a documentação oficial sdkman.io/install
2 Instale o JDK 17.0.9-jbr sdk install java 17.0.9-jbr
3 Defina a versão global do JDK sdk default java 17.0.9-jbr
4 Verifique a versão atual do JDK sdk current java
5 Para instalar outras versões, repita o processo sdk list java
6 Verifique se a configuração foi bem-sucedida kdoctor

4. Preparando o ambiente Android no KMP

Para desenvolver para Android em Kotlin Multiplataforma, é necessário configurar adequadamente o ambiente. Isso inclui a instalação do Android Studio, que fornece ferramentas essenciais para o desenvolvimento Android, como o Android SDK e um Emulador.

Passo Descrição
1 Instale o Android Studio pelo Toolbox Procure por "Android Studio" na lista do Toolbox
2 Ou instale o Android Studio via Homebrew brew install --cask android-studio
3 Conclua a instalação do Android Studio Abra o app do Android Studio e siga o passo a passo para a instalação.
4 Verifique se a instalação foi bem-sucedida kdoctor

5. Preparando o ambiente Apple no KMP

Para ambientes da Apple, precisamos da coleção de ferramentas do Xcode.

Passo Descrição
1 Verifique o mapa de compatibilidade do Kotlin 🔗 Guia de compatibilidade
2 Instale o Xcode 🔗 Xcode na App Store
3 Abra o Xcode Procure e abra app do Xcode nas suas aplicações.
4 Aceitar os termos de uso da Apple Siga os passos para concluir a instalação no Xcode.
Você deve ir avançando até ver a tela de criar um projeto.
5 Verifique se deu certo kdoctor

ℹ️ O KMP não precisa do Xcode aberto para funcionar. Após a configuração, você pode fechar o Xcode se preferir.

5.1 (Opcional) Configure o CocoaPods

Opcionalmente, você pode realizar a configuração do CocoaPods. Não iremos precisar para esse artigo. Mas caso precise, siga a 🔗 documentação oficial.

✅ Verificando o ambiente KMP

Ao rodar o kdoctor, é importante que nenhum erro em vermelho apareça. Já que nosso foco é o mínimo para o funcionamento, itens em amarelo não é necessariamente um problema por hora.

Escolhendo o ambiente de desenvolvimento integrado (IDE)

Nesta etapa, estamos quase prontos para iniciar um novo projeto em KMP. Só falta entendermos um pouco melhor sobre as ferramentas disponíveis para uso atualmente (novembro de 2023)

Devido à profunda integração nativa do KMP, gerenciar múltiplas bases de código apresenta desafios práticos, tais como:

  • A capacidade de buscar uma referência em arquivos Swift ou JavaScript e encontrar a declaração correspondente em Kotlin.
  • A habilidade de executar seu projeto em um emulador.
  • Suporte a depuração de código, independente da linguagem.
  • Execução de testes com relatórios de sucesso e falha, além de logs no console.
  • Ferramentas de análise, como desempenho, qualidade de código, etc.

A tabela a seguir mapeia o suporte atual a cada linguagem no mundo KMP:

IDE Kotlin Swift JS/TS Gratuíto
Android Studio
IntelliJ Ultimate
Xcode
VSCode
Fleet (Preview Beta) 🔥

Vamos elaborar um pouco sobre cada uma dessas opções.

Android Studio

Android Studio é amplamente apreciado pela comunidade Android, oferecendo excelente suporte para o ecossistema Android. Baseado no IntelliJ Community e mantido pela Google, ele é especialmente adaptado para uma integração completa com o Android. Esta opção é popular, gratuita e atualmente recomendada pela JetBrains para desenvolvimento KMP.

O suporte ao KMP no Android Studio requer a instalação manual do plugin 🔗 Kotlin Multiplatform Mobile.

IntelliJ Ultimate

O IntelliJ Ultimate é um ambiente robusto não só para Kotlin, mas também para uma série de frameworks (Spring, React/Native, Angular, Vue.js, Django, etc) e outras linguagens (HTML, Ruby, PHP, Go, SQL, Markdown, etc), com recursos suficientes para preencher um artigo inteiro.

Esta versão é paga, portanto, mais adequada para devs experientes que buscam uma IDE como ferramenta de produtividade completa para escalar projetos.

Contudo, em termos de suporte KMP, o IntelliJ Ultimate não oferece grandes vantagens em comparação ao Android Studio, que provavelmente possui a maioria das funcionalidades e suporte ao KMP disponíveis no IntelliJ Ultimate.

VSCode

Caso você esteja em um ambiente web/js e planeja adotar o KMP, você vai precisar usar outras ferramentas como VSCode, ou até outras pagas como WebStorm e o próprio IntelliJ Ultimate.

Com as ferramentas atuais, pode ser que você nem precise trabalhar com código JS, já que Kotlin/JS tem excelente suporte no IntelliJ e no Android Studio, permitindo escrever todo o código em Kotlin utilizando 🔗 wrappers.

Xcode

Independentemente do uso do IntelliJ ou Android Studio, o Xcode é necessário para navegar por código Swift/Obj-C. O Xcode, a IDE gratuita da Apple (embora requeira um Mac), é essencial no ambiente KMP.

A frequência de uso do Xcode varia conforme o projeto. Por exemplo:

Frequência de Uso Contexto Detalhes
Moderado Bibliotecas KMP Criação de bibliotecas multiplataforma com código comum e implementações específicas para JVM, web e plataformas nativas, utilizadas como dependências em outros projetos.
Mais Frequente Repositórios Swift adotando KMP Em projetos existentes em Swift que estão migrando para KMP, o uso do Xcode é intensivo.
Frequente Análises de desempenho Uso das ferramentas do Xcode para realizar análises de desempenho na aplicação.
Frequente Aplicações KMP Android e iOS Compartilhamento de código entre plataformas móveis para implementar lógica de aplicativos como rede, armazenamento de dados e validação, análises e cálculos.
Variável Aplicações Desktop Compartilhamento de UIs entre plataformas desktop como Windows, macOS e Linux usando Compose Multiplatform.

Devs frequentemente criticam a experiência do Xcode, especialmente em comparação ao IntelliJ ou Android Studio, e o desafio de manter duas IDEs poderosas em execução simultânea.

Como uma alternativa ao Xcode, a JetBrains desenvolveu o AppCode, mas enfrentou diversos problemas e não teve aceitação significativa na comunidade KPM. Em dezembro de 2022, a JetBrains anunciou oficialmente a aposentadoria do AppCode.

Fleet

Lançado em novembro de 2021, Fleet surgiu como uma proposta similar ao VSCode, sendo um editor de texto leve e flexível.

Dois anos depois, em novembro de 2023, 🔗 foi anunciado o suporte Multiplataforma no Fleet, trazendo uma série de recursos notáveis:

  • Fácil integração e execução do app Ao abrir um projeto KMP, o Fleet configura automaticamente as execuções para Android, iOS e Desktop, baseado no arquivo de build do projeto.

  • Poliglota: Fleet permite trabalhar com código nativo em projetos multiplataforma sem mudar de editor, oferecendo suporte aprimorado para edição de código Swift e integração com projetos Xcode.

  • Navegação de código: Permite navegação cruzada entre Swift e Kotlin, facilitando a localização de declarações e usos de funções entre as linguagens.

  • Refatoração: Suporta refatorações que afetam tanto módulos Kotlin quanto Swift.

  • Depuração integrada: Com suporte ferramentas como pontos de interrupção (break-points) tanto em Swift quando em Kotlin, além da visualização de valores e pilhas de chamadas.

Fleet se apresenta como uma ferramenta poderosa para desenvolvimento multiplataforma, unificando diferentes linguagens e plataformas em um ambiente integrado.

Fleet em "Beta Preview"

Atualmente, o acesso ao Fleet é gratuito, pois a ferramenta ainda está em fase experimental. Também vale notar que inúmeras ferramentas de análises para aplicações para a família Apple ainda são exclusivas do Xcode.

📹 Veja o Fleet em ação: Build Apps for iOS, Android, and Desktop With Compose Multiplatform

Afinal, qual escolher?

Se você está começando com o KMP, sugiro a utilização do Fleet que conta com um suporte excelente para iniciantes.

Caso você pretenda adotar o KMP em produção, você irá precisar utilizar as outras IDEs como Android Studio, IntelliJ e Xcode.

IDE Uso recomendado Característica
IntelliJ Ideal para projetos complexos e para devs experientes. Ampla gama de recursos, suporte a plugins de vários frameworks e linguagens, etc.
Android Studio Recomendado para desenvolvimento Android e aplicações mobile. Integração com Android SDK, ferramentas de UI, análise de desempenho para apps em Android, etc.
Xcode Essencial para desenvolvimento iOS e macOS. Ferramentas nativas Apple, interface intuitiva, análise de desempenho para família Apple, etc.
Fleet Boa escolha para iniciantes e projetos mais leves. Interface simplificada e pensado para desenvolvimento KMP.

Conclusão

Este artigo ofereceu uma visão abrangente sobre a configuração do ambiente de desenvolvimento com Kotlin Multiplataforma. Discutimos desde a seleção do JDK ideal até a escolha da IDE mais adequada, incluindo o emergente Fleet, que se destaca como uma opção promissora, especialmente para iniciantes.

A seleção cuidadosa das ferramentas e configurações corretas não apenas simplifica o processo de desenvolvimento, mas também eleva significativamente a eficiência e a produtividade.

No próximo artigo, abordaremos outro aspecto fundamental do KMP: o Plugin do Gradle, uma ferramenta chave para aproveitar ao máximo o potencial do desenvolvimento multiplataforma.

Até a próxima!


🤖 Artigo foi escrito com o auxílio do ChatGPT 4, utilizando o plugin Web.

As fontes e o conteúdo são revisados para garantir a relevância das informações fornecidas, assim como as fontes utilizadas em cada prompt.

No entanto, caso encontre alguma informação incorreta ou acredite que algum crédito está faltando, por favor, entre em contato!


Referências:

Top comments (0)