Levando o Kotlin para a Web

MAI 10, 2023
Vivek Sekhar Product Manager

This post describes early experimental work from JetBrains and Google. You can learn more in the session on WebAssembly at Google I/O 2023.

Os desenvolvedores de aplicativos querem alcançar o maior número possível de usuários no máximo de plataformas possível. Até agora, essa meta significava criar apps separados para Android, iOS e Web, bem como criar os servidores de back-end e a infraestrutura para alimentá-los.

kotlinWeb1

Para reduzir os esforços, alguns desenvolvedores usam linguagens e frameworks multiplataforma para desenvolver a lógica de negócios e a IU dos apps. Anteriormente, trazer esses apps multiplataforma para a Web significava "compilar" o código compartilhado do app em uma versão do JavaScript mais lenta para execução no navegador. Em vez disso, os desenvolvedores geralmente reescrevem os apps em JavaScript ou simplesmente direcionam os usuários da Web para fazer o download dos apps nativos para dispositivos móveis.

A comunidade da Web está desenvolvendo uma alternativa melhor: o suporte direto à Web para linguagens modernas, graças a uma nova tecnologia chamada WebAssembly GC. Esse novo recurso da Web permite que o código multiplataforma escrito em linguagens com suporte seja executado com desempenho próximo do nativo em todos os principais navegadores.

Estamos empolgados com o lançamento do suporte experimental a esse novo recurso na Web para o Kotlin, que cria novas oportunidades de compartilhamento de código com desempenho mais rápido para desenvolvedores Android e da Web.

Desenvolvimento multiplataforma com o Kotlin na Web

O Kotlin é uma linguagem produtiva e poderosa usada em 95% dos 1.000 principais apps Android. Os desenvolvedores dizem que são mais produtivos e têm menos bugs depois de mudar para o Kotlin.

Os frameworks Kotlin Multiplatform Mobile e Compose Multiplatform da JetBrains ajudam os desenvolvedores a compartilhar código entre seus apps Android e iOS. Agora, esses frameworks oferecem suporte experimental à compilação em Kotlin para WebAssembly. Experimentos iniciais indicam que o código Kotlin é executado até duas vezes mais rápido na Web com o uso do WebAssembly em vez do JavaScript.

kotlinWeb2

A JetBrains compartilha mais detalhes nas notas da versão 1.18.20 de seu compilador K2 e na documentação que explica como você pode experimentar o Kotlin/Wasm com seus apps.

Como tudo foi feito

Trazer para a Web as linguagens modernas para dispositivos móveis, como o Kotlin, exigiu a solução de problemas técnicos desafiadores, como a coleta de lixo em várias linguagens e a interoperabilidade com o JavaScript. Você pode saber mais na sessão sobre novas linguagens do WebAssembly da conferência Google I/O deste ano.

Esse trabalho não teria sido possível sem uma colaboração aberta entre fornecedores de navegadores, acadêmicos e provedores de serviços de toda a Web como parte do W3C WebAssembly Community Group. Nas próximas semanas, compartilharemos detalhes técnicos sobre esse trabalho inovador no Blog V8.

Looking ahead: Web and Native Development

Durante décadas, os desenvolvedores sonharam com a Web como uma espécie de "ambiente de execução universal", reconhecendo, ao mesmo tempo, algumas lacunas de recursos ou desempenho em relação às plataformas nativas. Fazia muito tempo que os desenvolvedores tinham que alternar entre trabalhar na Web ou nos apps nativos para dispositivos móveis.

Mas nós queremos permitir que você trabalhe na Web e em suas experiências nativas ao mesmo tempo, não só para ajudar na redução de esforços, mas também para ajudar você a aproveitar os superpoderes exclusivos da Web.

Na Web aberta, o app está a apenas um clique de distância dos novos usuários, que podem descobri-lo e compartilhá-lo tão facilmente quanto compartilham uma página da Web, sem a intermediação de app stores e sem divisão de receita para afetar a lucratividade.

A produtividade do desenvolvimento multiplataforma, o desempenho dos apps nativos para dispositivos móveis e a abertura da Web: isso é o que nós adoramos no WebAssembly.

Estamos ansiosos para ver o que você vai criar!