Escolher um bom framework é um trabalho muito importante para um analista de sistemas. No entanto, essa tarefa muitas vezes é deixada de lado pela correria do projeto ou por falta de alinhamentos mesmo. Por conta disso, muito se perde com uma escolha, má planejada, de framework.
Com base em alguns tópicos importantes para a escolha de um dado projeto é que realizamos um levantamento para comparar os principais frameworks mobile do mercado que são estes Ionic, React Native, Flutter, Qt Framework e com base nestas informações poderemos analisar qual ferramenta utilizar em nossos projetos.
Para saber como o React Native funciona clique aqui.
Algumas das ferramentas apresentadas neste post possuem pontos negativos bem como também pontos positivos e alguns apresentam mais pontos que outros. No entanto o que devemos salientar é que cada framework tem sua particularidade e portanto finalidades distintas.
Ou seja, é preciso levantar os principais requisitos do seu projeto e orientando-se por estes, ser capaz de escolher o framework que melhor se adequa às necessidades do projeto.
Os critérios que serão levados em conta para a escolha ou não do framework são:
- Licença de Uso
- Suporte da Comunidade
- Codebase
- Linguagem Nativa
- Tamanho do Binário (Binary size)
- Versão Estável (Stable version)
- Interface Gráfica (GUI)
- Tabela Comparativa
Licença de Uso
Ionic, React Native, Flutter tem suas licenças de uso opensource onde pode-se usar, modificar e distribuir o software da maneira que desejar.
Suporte da Comunidade
O suporte da comunidade que merece destaque vai para o React Native pois foi o repositório no github com maior número de contribuidores ativos.
Codebase
Codebase é a linguagem em que o app pode ser escrito ou a linguagem que o framework suporta.
Qt Framework
Suporta a linguagem C++, bem madura no mercado, que chega a rodar quase perto da performance nativa.
Ionic 3, React Native
Ambos suportam a linguagem Typescript, uma evolução do javascript, que é relativamente nova no mercado.
Flutter
Suporta linguagem Dart, também muito nova, nasceu em 2011. Foi desenvolvida pela Google e tem como objetivo substituir o javascript.
Linguagem Nativa
Ionic 3 e Qt Framework não tem suporte a linguagem nativa do dispositivos móveis. O ionic usa HTML,CSS,JS que por sua vez é renderizado na própria webview do aparelho. Já o Qt usa uma abordagem diferente, mas interessante, ele executa código nativamente usando C++ que chega a ser tão rápido que parece ser nativo, mas não é.
Flutter também não tem suporte a linguagem nativa o que ele faz é executar o código Dart em código nativo o que também permite um ganho significativo de performance.
React Native ganha destaque nesse quesito pois no final das contas ele cria um aplicativo em linguagem nativa. Para realizar isso ele usa um compilador interno de typescript e cria componentes nativos da linguagem seja android ou ios.
Tamanho do Binário (Binary Size)
Segundo alguns posts da comunidade Qt o apk chega aproximadamente 16MB pois adiciona uma série de bibliotecas ao apk que são usadas para dar permissão aos recursos do dispositivo.
Os Frameworks que apresentaram menor tamanho de APK foi o ionic e o React Native.
Versão Estável (Stable Version)
Todos os projetos estão em versão estável ou seja prontos para usar em produção.
Interface Gráfica (GUI)
React Native tem interface gráfica nativa, pois possui componentes que são criados para serem manipulados pelo typescript.
O Flutter usa o próprio Dart para escrever sua interface gráfica, no entanto não gera código nativo.
Ionic 3 possui um conjunto de componentes prontos para serem utilizados. No android ele usa o Material Design do Google no iphone, ipad, ipod usa o iOS styles.
Qt Framework possui uma linguagem própria, chamada QML, para criação de suas interfaces.
Tabela Comparativa
Ionic 3 | React Native | Flutter | Qt | |
Licença de Uso | MIT | MIT | Chromium Authors | LGPL v3 |
Comunidade | Ativa (231 contribuidores) | Ativa (1640 contribuidores) | Ativa (180 contribuidores) | — |
Code base | Typescript | Typescript | Dart | C++ |
Linguagem Nativa | Não | Sim | Não | Não |
Binary Size | ~ 5MB | ~5MB | ~8MB | ~16MB |
Stable | Sim | Sim | Sim | Sim |
GUI | HTML/CSS/JS | Nativo | Nativo | QML |
Use Case | Pacifica Sworkit | Facebook, Instagram, Walmart | Alibaba Google Ads AppTree | MuseScore |