Uma nova forma de desenvolvimento mobile
A cada ano, o mercado de aplicações mobile cresce mais, movimentando bilhões de dólares. Essas aplicações podem ser de diversos tipos, como, por exemplo, de saúde, entretenimento, lazer e ensino. A criação dessas aplicações não é, contudo, uma tarefa simples, pois é necessário se desenvolver um código específico para cada plataforma de execução (como iOS e Android), e, o pior, códigos gerados para um sistema não podem ser reusados em outro sistema.
Existem duas abordagens para o desenvolvimento de aplicações mobile. Uma delas é a abordagem nativa, que utiliza ferramentas disponibilizadas pelas próprias fabricantes do sistema operacional. Como exemplo, podemos citar o Android Studio e o Xcode, usados para os sistemas Android e iOS, respectivamente. A abordagem nativa permite que os desenvolvedores explorem todo o potencial do dispositivo, além de serem aplicações otimizadas, visto que as ferramentas foram criadas especificamente para isso em uma plataforma bem definida pelo fabricante. Essa abordagem, entretanto, é custosa, pois exige desenvolvedores com conhecimento de cada plataforma a que se deseja dar suporte. Consequentemente, se uma empresa quer prover suporte a N plataformas, é necessário manter N equipes de desenvolvimento (assumindo que cada equipe tenha conhecimento de apenas uma plataforma).
A outra abordagem possível é chamada de cross-platform. Nessa abordagem, desenvolve-se código em uma plataforma intermediária, e ela será responsável por gerar aplicações para diferentes plataformas de execução. Assim, é necessário manter apenas uma equipe de desenvolvimento com conhecimento do ambiente cross-platform e, consequentemente, é menos custosa se comparada à abordagem nativa. Essa abordagem, porém, não é tão otimizada quanto a nativa, considerando que se está programando em uma linguagem mais genérica que a nativa. Existem diversas frameworks que utilizam essa abordagem, como React Native, Flutter e Ionic.
Apesar de apresentar diversas vantagens, a abordagem cross-platform traz dois principais problemas. Um deles é a dependência do programador com a framework escolhida: uma vez escolhida a framework, se porventura for necessário trocá-la por outra, o código da aplicação desenvolvido nela é descartado, e é necessário produzir um novo código. Ora, mas por que alguém iria querer trocar a framework de desenvolvimento mobile (como, por exemplo, trocar Flutter por Ionic)? Existem diversos possíveis motivos, incluindo a necessidade de uma framework mais eficiente ou mais segura. Um outro problema é a dificuldade de adicionar compatibilidade com uma nova plataforma mobile para a qual a framework não forneça suporte. Por exemplo, suponha que estamos usando uma framework que forneça suporte para gerar aplicações mobile para as plataformas X e Y. Se quisermos gerar uma versão da aplicação para uma plataforma Z, precisaríamos buscar uma framework que forneça suporte para ela e desenvolver um novo código.
A fim de resolver esses dois problemas, propusemos uma solução que torna o código da aplicação independente do framework de desenvolvimento mobile escolhida. A solução, chamada Mobilex, é uma framework de desenvolvimento que é ainda mais genérica do que uma framework de desenvolvimento cross-platform, pois utiliza uma linguagem web padronizada. Dessa forma, diminui-se ainda mais a necessidade de reescrita do código do aplicativo quando há mudanças na tecnologia de desenvolvimento. Na Mobilex, desenvolvedores programam o código da aplicação uma vez e escolhem qual framework de desenvolvimento cross-platform desejam usar. Caso essa framework seja trocada no futuro, o código da aplicação não sofrerá alterações, além de facilitar a geração de aplicações para novas plataformas de execução, visto que o uso de ferramentas que deem suporte a uma nova plataforma de execução é facilitado.
Por fim, a solução proposta reduz a curva de aprendizado ao optar por usar a linguagem web como base. Mobilex está disponível publicamente no GitHub sob a licença MIT. Trabalhos futuros incluem otimizações, prover suporte a novas frameworks de desenvolvimento mobile e adicionar compatibilidade com outras frameworks.
(*) William Niemiec é estudante de graduação no curso de Ciência de Computação.
(*) Rafael Fernandes Borges é estudante de graduação no curso de Ciência de Computação.
(*) Érika Fernandes Cota é professora associada no Instituto de Informática.