Jetpack Compose: o paradigma declarativo chega ao desenvolvimento Android nativo
Nos últimos tempos, o desenvolvimento de aplicações - não apenas móveis - modernizou-se muito rapidamente. Enquanto que noutras plataformas já existia uma abordagem ao desenvolvimento de interfaces de utilizador usando um paradigma declarativo (Swift UI para iOS, Flutter para multiplataforma, entre outras), em julho de 2021 foi finalmente lançada uma versão estável da ferramenta que permite a introdução deste tipo de programação de forma nativa no Android: Jetpack Compose.
Mas, porque é que esta tendência é tão bem-sucedida? Que vantagens tem sobre o paradigma imperativo tradicional? E será realmente o futuro do desenvolvimento das interfaces do utilizador?
Paradigma imperativo vs paradigma declarativo
Para poder aprofundar mais sobre a ferramenta em questão, é necessário começar pela base: o funcionamento dos dois paradigmas básicos com os quais se constrói a parte gráfica das aplicações.
Numa interface de utilizador desenvolvida com um paradigma imperativo, deve ser indicado a cada um dos componentes que são candidatos à mudança, como se comportar em resposta a cada evento ou interação que ocorra, a fim de modificar o seu estado interno. Por outras palavras, construir uma interface de utilizador através de programação imperativa implica indicar como se deve comportar em cada momento, com cada evento que ocorra.
Com um paradigma declarativo, os componentes não possuem estado interno, mas sempre que o estado da aplicação é atualizado em resposta a eventos ou interações, eles são construídos de novo com uma aparência diferente, se necessário. Por outras palavras, construir uma interface de utilizador através de programação declarativa implica indicar o que nela deve ser exibido em função do estado atual da aplicação.
Definir interfaces de utilizador de forma declarativa tem uma vantagem importante sobre a sua definição de forma imperativa. Num paradigma imperativo, como mencionado acima, os componentes devem ser manipulados cada vez que um evento ocorre. Modificar componentes manualmente aumenta a probabilidade da ocorrência de erros, uma vez que quanto mais componentes precisarem de ser mantidos atualizados, mais complexo será manter um estado consistente, prejudicando assim a capacidade de manutenção do sistema.
Portanto, a vantagem do paradigma declarativo é que não é necessário manipular estes componentes, uma vez que ao indicar no início o que deve ser exibido com base no estado atual, a interface do utilizador regenera-se completamente de forma automática quando ocorre uma mudança de estado, realizando assim uma recomposição. Isto simplifica muito o processo de atualização da IU, uma vez que com cada recomposição a interface do utilizador será gerada no estado correto sem a necessidade de manipular os seus componentes, reduzindo assim a probabilidade de erros.
Benefícios do Jetpack Compose
Jetpack Compose é um kit de ferramentas moderno para o desenvolvimento nativo de interfaces de utilizador em aplicações Android através de uma API declarativa. Pode ser utilizado exclusivamente com a linguagem de programação Kotlin, embora tenha interoperabilidade com o sistema de visualização XML ainda utilizado no Android, o que o torna mais flexível.
O Jetpack Compose é uma ferramenta que se tornou forte e, no pouco tempo que tem estado no mercado, demonstrou vantagens evidentes quando se trata de desenvolver aplicações
Em suma, o Jetpack Compose tem quatro vantagens principais em comparação com o desenvolvimento de interfaces de utilizador através de XML e paradigma imperativo:
- Menos código. Um dos pontos em que o Jetpack Compose se destaca é a necessidade de menos linhas de código para criar a mesma coisa que seria feita através de uma programação imperativa. Esta é uma vantagem evidente quando se trata de manter o sistema.
- Mais intuitivo. Como é um paradigma declarativo, baseado simplesmente na descrição da interface do utilizador a ser exibida, o código é considerado muito mais legível e compreensível para os programadores.
- Acelera o desenvolvimento. Devido à reduzida complexidade no desenvolvimento e manutenção que esta ferramenta proporciona, a criação de aplicações é mais direta, encurtando assim o tempo necessário para as desenvolver.
- Poderoso. Uma vez que tudo é desenvolvido inteiramente em Kotlin, é possível tirar partido de todo o potencial oferecido pela linguagem para criar visões dinâmicas que não seriam possíveis apenas com o uso de XML. Além disso, aplica por defeito os guias de estilo de Material Design, para que não nos tenhamos de preocupar muito se se estão a seguir estes princípios de design.
Casos de sucesso
No caso de ainda não estar claro, sim, muitas aplicações Android conhecidas já estão a mudar para o Jetpack Compose em busca da eficiência que promete. Alguns destes casos são de grande visibilidade, envolvendo aplicações com vários milhões ou mesmo milhares de milhões de downloads:
- Twitter. A rede social do “passarinho azul” foi a primeira a fazer a mudança para o Jetpack Compose. Após efetuar a mudança, a equipa do Twitter afirma ter "aumentado a eficiência e a velocidade no desenvolvimento, bem como tornado a sua aplicação muito mais robusta do que era antes".
- Square. Uma das mais famosas empresas PoS do mercado também decidiu mudar para esta nova ferramenta. Isto permitiu-lhes "concentrarem-se nas coisas importantes de uma forma muito mais simples".
- Monzo. Este banco baseado em aplicações móveis do Reino Unido, com milhões de utilizadores em todo o mundo, foi outro dos que decidiram mudar para o Jetpack Compose na sua aplicação Android. Segundo o que declararam, "criar uma aplicação de alta qualidade foi uma tarefa fácil com o Jetpack Compose".
Conclusão
O Jetpack Compose é uma ferramenta que se tornou forte e, no pouco tempo que tem estado no mercado, demonstrou vantagens evidentes quando se trata de desenvolver aplicações. Em termos gerais, é possível ver como melhorou o processo de desenvolvimento e manutenção dos sistemas que puseram em prática este paradigma, tornando-o percetível tanto para os programadores como para os utilizadores finais. O melhor de tudo: isto é apenas o começo, será que o Jetpack Compose nos surpreenderá ainda mais no futuro? Falamos?