Jetpack Compose for Desktop adiciona camada Swing e suporte Apple Silicon

JetBrains lançou uma nova versão do Jetpack Compose for Desktop, uma estrutura de desenvolvimento de UI de plataforma cruzada de código aberto.

Se você faz algum tipo de trabalho de desenvolvimento, provavelmente já ouviu falar do JetBrains. Eles são a empresa por trás do enorme conjunto de IDEs que inclui IntelliJ (a base do Android Studio), CLion, PhpStorm e muitos outros. Também foram eles que fizeram Kotlin, a linguagem de programação multiplataforma extremamente popular.

E a JetBrains está de volta. Há pouco mais de um ano, o Google lançou um novo mecanismo de layout para Android chamado Jetpack Compose. Já passou algumas mudanças importantes desde então, mas se tornou uma alternativa competente (embora ainda um tanto instável) aos layouts XML clássicos do Android.

O que o Jetpack Compose tem a ver com o JetBrains? Bem, por um lado, está escrito em Kotlin. Mas também, a JetBrains tem trabalhado silenciosamente na portabilidade do Compose para o espaço da área de trabalho. Tornou-se público como uma prévia do desenvolvedor e agora a JetBrains está pronta para anunciar oficialmente que existe.

O que é o Jetpack Compose?

Falei um pouco sobre isso na introdução, mas acho que merece mais explicações. Se você já desenvolveu em Android antes, provavelmente já está acostumado com o funcionamento dos layouts. Primeiro, você projeta seu layout em um arquivo XML e, em seguida, interage com esse layout em Java ou Kotlin. Embora seja funcional, está um pouco desatualizado e pode ser difícil gerenciar seus layouts divididos em idiomas.

Como alternativa, o Google começou a desenvolver o Jetpack Compose. Compose é um mecanismo de layout para Android desenvolvido em Kotlin. Todo o seu layout e código lógico estão em um só lugar, o que torna a interatividade muito mais fácil. Também é declarativo, em vez do estilo imperativo dos layouts XML.

Mudar para um mecanismo de layout declarativo de um imperativo pode levar algum tempo para se acostumar, mas o Compose é definitivamente uma melhoria em relação ao XML, embora ainda esteja em seus estágios iniciais.

Jetpack Compose para desktop

Portanto, o Compose é uma boa alternativa de layout para aplicativos Android nativos. Mas não é (normalmente) multiplataforma. É aí que entra a JetBrains. A empresa portou o Jetpack Compose para o espaço desktop, com suporte para Windows, Linux e macOS (Intel e ARM).

Embora existam outros mecanismos de layout para desktop, como Electron, JavaFX e UWP, está um pouco confuso no momento. Alguns não são multiplataforma, portanto funcionam apenas em um sistema operacional específico. Outros são tecnicamente multiplataforma, mas exigem muito trabalho para serem distribuídos. E ainda assim, outros são simplesmente difíceis de trabalhar, como JavaFX.

O Jetpack Compose for Desktop, por outro lado, é relativamente fácil de usar, suporta dimensionamento de exibição, possui estilo integrado e é (quase) totalmente multiplataforma. Embora ainda não seja possível compilar para todas as distribuições de um sistema operacional, o código em si é completamente portátil. Assim como no Android, um aplicativo empacotado é baseado em Java, embora os usuários não precisem de um JDK instalado para usá-lo.

Compatibilidade cruzada

Como o Compose for Desktop ainda é novo, faltam alguns recursos. Para ajudar os desenvolvedores a contornar essas limitações, o Compose for Desktop é interoperável com dois dos mecanismos de layout Java mais populares, JavaFX e Swing. Se você tiver um aplicativo de desktop desenvolvido em um (ou ambos) desses mecanismos, poderá iniciar a transição para o Compose enquanto mantém sua base de código atual.

Android + Desktop

E se você quiser trazer seu aplicativo Compose Android para o desktop? Bem, você também pode (mais ou menos) fazer isso. Os elementos da UI do seu aplicativo podem ser facilmente compartilhados entre o Android e o desktop. Você não poderá compartilhar tudo, mas certamente facilita o desenvolvimento.

Suporte para silício da Apple

Mencionei isso acima, mas vou mencioná-lo novamente. O novos Macs de silício da Apple são incríveis, mas os processadores são baseados na arquitetura de CPU ARM, o que significa que muitos aplicativos macOS estão sendo executados por meio do tradutor Rosetta 2 x86. Embora a Apple tenha feito um bom trabalho com essa tradução, os programas ARM nativos ainda funcionarão melhor.

Bem, o Jetpack Compose for Desktop oferece suporte nativo ao Apple Silicon. Isso significa que você não terá que se preocupar com quedas de desempenho devido à tradução ou com suporte futuro quando a Apple o interromper.

Funcionalidade

Portanto, é muito bom que a JetBrains tenha criado um novo mecanismo de layout para desktop, mas quem pode dizer que é melhor do que o que temos agora?

Meu.

Usei a versão mais recente disponível no momento em que escrevi isto (0.2.0-build132) para criar um aplicativo simples de concessão de permissões para o SystemUI Tuner. Como não estou muito familiarizado com o Compose e o design declarativo, foi um pouco mais difícil para mim do que um aplicativo de layout XML, mas consegui. E é muito mais fácil de usar do que JavaFX.

Embora o suporte ao tema (ou seja, modo escuro) ainda seja um pouco duvidoso, é muito fácil construir um layout interativo e, além de algumas oscilações ao redimensionar a janela, tudo funciona bem.

Se você quiser conferir o aplicativo, o código-fonte está disponível em GitHub. Basta importá-lo com IntelliJ ou Android Studio e ele estará pronto para ser executado.


Pessoalmente, estou muito animado com o Jetpack Compose for Desktop. Eu nem sabia que ele existia antes, mas já é meu mecanismo de layout de desktop preferido. Você pode aprender mais no Site do Jetpack Compose para desktop ou no GitHub.

O que você acha disso? Vale a pena conferir e talvez até usar no lugar de outros frameworks disponíveis? Avise!

Créditos das imagens em destaque: JetBrains no GitHub