• Nenhum resultado encontrado

Tendo em conta que um dos objetivos deste trabalho é o desenvolvimento de um cenário de testes que permita avaliar e definir qual a melhor escolha relativamente às frameworks utilizadas atualmente no desenvolvimento multiplataforma, foi necessário fazer uma seleção de frameworks para esse efeito.

Para isso, foi realizada uma pesquisa para determinar quais as duas frameworks que mais sucesso têm atualmente na comunidade. A lista inicial é constituída pelas seguintes opções:

Flutter [3];

Ionic [2];

React Native [32];

Vue Native [33].

A seleção destas frameworks teve como base as que foram abordadas mais do que 5 vezes, nos diversos estudos analisados, que sejam open source, que não tenham custos associados e que reúnam maior preferência na comunidade (ver Apêndice A). Relativamente ao Vue Native, esta framework não foi referenciada em nenhum dos estudos, sendo no entanto uma das mais recentes frameworks e de já ter uma presença bastante significativa, com Watchs e Stars no repositório oficial múltiplas vezes superior ao Cordova ou PhoneGap que, para além disto, não cumprem o primeiro critério de seleção (são abordadas somente 2 vezes nos estudos considerados).

Para se obter as duas frameworks a serem estudadas no final desta seleção, procedeu-se a duas recolhas de dados, com oito meses de intervalo entre si, com o objetivo de avaliar as frameworks que mais progrediram na sua relação com a comunidade.

No entanto, para uma seleção mais rápida, o primeiro critério de filtragem foi a exclusão das frameworks que não tivessem lançado uma release no ano de 2020 (releases de cada framework disponíveis em [34 - 37]). Como se pode verificar na Tabela 2, a framework Vue Native é das primeiras a ser excluída.

Tabela 2 – Informações relativamente a releases das frameworks iniciais

Framework 1.ª Release Última Release

Depois desta filtragem ficaram apenas três frameworks: Flutter, Ionic e React Native. Para uma seleção final, foram usados dados relativamente aos repositórios GitHub1 que cada framework tem. Nas Tabelas 3 e 4, é possível observar quais as frameworks que mais cresceram na comunidade e quais as que se encontram mais ativas no que toca a atualizações de código [38 - 40].

Tabela 3 - Informações relativamente aos dados dos repositórios de cada tecnologia

Framework GitHub Stars GitHub

Tabela 4 - Crescimento percentual de cada framework entre os dois momentos de recolha de informação.

Framework GitHub Stars GitHub Forks GitHub Watchs

Flutter 19% 27% 12%

Ionic 4% 1% 0%

React Native 6% 5% 0%

Tendo em conta a informação das tabelas e os critérios de seleção que foram definidos anteriormente, as frameworks selecionadas para serem usadas neste estudo foram Flutter e React Native. Ainda com a informação recolhida nesta pesquisa, foi possível perceber que a Flutter é uma das frameworks mais recentes e atingiu níveis de crescimento muito superiores, o que pode indicar que permanecerá entre as preferidas pela comunidade nos próximos tempos.

2.3.1. Flutter

A Flutter é uma framework de desenvolvimento de aplicações multiplataforma, fornecida através de um SDK (Software Development Kit), para criar aplicações de alto desempenho e fiabilidade para sistemas operativos Android, iOS e, mais recentemente, veio permitir ainda o desenvolvimento de aplicações web e sistemas operativos para Personal Computers (PCs). Tudo isto através de uma única base de código: o Dart [41]. A Google criou esta framework e lançou a sua primeira versão em 2017 [42] com o objetivo de permitir aos programadores a criação de aplicações com alto nível de desempenho, mantendo o aspeto de aplicações nativas. Antes da Flutter tornar-se popular, o Dart era uma linguagem desconhecida por grande parte dos programadores. No entanto, como se pode ver no gráfico da Figura 3, as estatísticas apontam para que tenha sido uma das linguagens mais procuradas nos finais de 2018 [17].

Figura 3 - Evolução da popularidade da Flutter nos primeiros oitos meses de 2018 (Fonte: [17])

Para o desenvolvimento de aplicações, a framework Flutter permite utilizar apenas o Dart.

Porém, Flutter é constituído não só de Dart, mas também de C, C++ e Skia, um mecanismo de renderização 2D [43]. Ao contrário das outras frameworks já nomeadas neste trabalho, a Flutter não depende de linguagens web para exibir os seus componentes. Utiliza, em vez disso, a abordagem de Cross-Compiled, o que significa que o código Dart é compilado em bibliotecas nativas ARM e x86 [44]. Este método possibilita à Flutter ser mais rápida em determinadas situações que outras tecnologias, como a React Native, porque não necessita de um interpretador [17].

A Flutter funciona muito com base em widgets, que são elementos que afetam e controlam a UI da aplicação. Os widgets são os blocos de construção mais importantes numa aplicação em Flutter; de facto, em Flutter, tudo é um widget. É através do mecanismo gráfico de renderização incorporado na Flutter, o Skia, que os widgets são renderizados [16].

2.3.2. React Native

A React Native é uma framework que segue a abordagem Interpreteted, que foi lançada em 2015 pela Facebook. A React Native foi criada com base numa biblioteca de JavaScript também criada pela Facebook, a ReactJs. Lançada em 2013, a ReactJs é uma biblioteca open-source usada para criar interfaces de interação com utilizadores, possibilitando a divisão da interface em componentes de fácil reutilização [8]. A React Native segue os mesmos conceitos da ReactJs, no entanto, em vez de renderizar HTML, usa componentes UI nativos das plataformas.

Na framework React Native existem duas threads principais, a Main ou UI thread e a JavaScript (JS) thread. A Main thread é a responsável pela UI e por comunicar com o sistema nativo. A JS thread é responsável por interpretar o código criado. Ambas as threads podem comunicar através de um componente interno da React Native chamado Bridge, que assume qualquer comunicação entre os componentes nativos e a JS [7, 13].

Documentos relacionados